If one uses arcpy to calculate areas for a field in metric units on a polygon shapefile in a geographic coordinate system it will work, and give you plausible results. According to the documentation it uses 'a geodesic algorithm' to calculate distances but the documentation doesn't talk about how areas are calculated. How is it producing results in square kilometers in the following code and how does this calculated area compare in accuracy compared to projecting the data into an equal-area projection before calculating the area?
result_file = settings.get_boundary_file_results_location(boundary_short_name)
area_field_name = settings.NEW_FIELD_NAMES['Area square kilometers']
arcpy.AddField_management(result_file,
area_field_name,
"FLOAT")
expression = "{0}".format("!SHAPE.area@SQUAREKILOMETERS!")
arcpy.CalculateField_management(result_file, area_field_name, expression, "PYTHON_9.3")
And the properties of the shapefile:
Edit: There is a closed but nonetheless useful question here that deals with some of this: ArcGIS Length and Area Calculation Scenarios
