I have vector data not in geographical coordinate system (i.e. not in WGS 1984).
How to calculate object's centroids using arcpy
without reprojecting the data itself?
I have tried to do this but it doesn't work (centroids are in meters):
arcpy.CalculateField_management(feature, fieldName, "!SHAPE.CENTROID.X!","PYTHON_9.3")
arcpy.CalculateField_management(feature, fieldName, "!SHAPE.CENTROID.Y!","PYTHON_9.3")
arcpy.CalculateField_management(feature, fieldName, "!SHAPE.CENTROID@DECIMALDEGREES!.split()[0]", "PYTHON")
arcpy.CalculateField_management(feature, fieldName, "!SHAPE.CENTROID@DECIMALDEGREES!.split()[1]", "PYTHON")
Comrade CheComrade Che
asked Feb 14, 2017 at 12:04
-
Why ask and then answer your own question 1 min laterBera– Bera2017年02月14日 12:27:53 +00:00Commented Feb 14, 2017 at 12:27
-
1I just wasted a lot of time to find the answer (about 2 hours). This can save a lot of time to the other people. Besides 3 years ago i resolve this problem and forgot how i did that.Comrade Che– Comrade Che2017年02月14日 13:06:28 +00:00Commented Feb 14, 2017 at 13:06
1 Answer 1
Use arcpy.CalculateField_management
with following expressions:
For x coordinates:
expression = 'arcpy.PointGeometry(!Shape!.centroid,!Shape!.spatialReference).projectAs(arcpy.SpatialReference(4326)).centroid.X'
arcpy.CalculateField_management(feature, fieldName, expression,"PYTHON_9.3")
For y coordinates:
expression = 'arcpy.PointGeometry(!Shape!.centroid,!Shape!.spatialReference).projectAs(arcpy.SpatialReference(4326)).centroid.Y'
arcpy.CalculateField_management(feature, fieldName, expression, "PYTHON_9.3")
answered Feb 14, 2017 at 12:04
-
This answer is based on gis.stackexchange.com/a/155477/35561Comrade Che– Comrade Che2017年02月14日 12:09:47 +00:00Commented Feb 14, 2017 at 12:09
lang-py