I thought I'd share the following with the community:
''' Created on Apr 18, 2016 Centroid of Polygon @author: PeterW ''' import arcpy from arcpy.arcobjects.geometries import PointGeometry input_fc = r"E:\Proposals\2016\what3words\Calcs.gdb\ftr_dwellings_zola_tm19" output_fc = r"E:\Proposals\2016\what3words\Calcs.gdb\Centroids_Test15" def coord_sys(input_fc): projection = arcpy.Describe(input_fc).spatialReference return projection projection = coord_sys(input_fc) def centroid(input_fc, output_fc): with arcpy.da.SearchCursor(input_fc, "SHAPE@XY") as scur: # @UndefinedVariable centroid_coords = [] for feature in scur: centroid_coords.append(feature[0]) point = arcpy.Point() pointGeometryList = [] for pt in centroid_coords: point.X = pt[0] point.Y = pt[1] pointGeometry = arcpy.PointGeometry(point, projection) pointGeometryList.append(pointGeometry) arcpy.CopyFeatures_management(pointGeometryList, output_fc) centroid(input_fc, output_fc)
Centroid: Center of Gravity
''' Created on Apr 18, 2016 Inner Centroid of Polygon @author: PeterW ''' import arcpy input_fc = r"E:\Proposals\2016\what3words\Calcs.gdb\ftr_dwellings_zola_tm19" output_fc = r"E:\Proposals\2016\what3words\Calcs.gdb\Centroids_Test7" def coord_sys(input_fc): projection = arcpy.Describe(input_fc).spatialReference return projection projection = coord_sys(input_fc) def inner_centroid(input_fc, output_fc): inner_centroid_geom = [] with arcpy.da.SearchCursor(input_fc, "SHAPE@") as scur: # @UndefinedVariable for feature in scur: inner_centroid_pnt = arcpy.PointGeometry(feature[0].labelPoint, projection) inner_centroid_geom.append(inner_centroid_pnt) arcpy.CopyFeatures_management(inner_centroid_geom, output_fc) inner_centroid(input_fc, output_fc)
Centroid: Inner Centroid
Good catch..but I hate it that the 'magic' is hidden. Now can you determine the median as a representation of the centrality of a polygon (leave holes out of it for now)