0

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") 
  • Why ask and then answer your own question 1 min later – BERA Feb 14 '17 at 12:27
  • 1
    I 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. – Mr. Che Feb 14 '17 at 13:06
2

Use arcpy.CalculateField_managementwith 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")

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.