My apologies for the delay, but thought I'd post this to help explain (and cover for) my last post. I did test this and confirmed the code below works, maybe faster than the field calculator. My apologies if I misled anyone with the use of the '@' token -- instead I used a spatial reference object with the update cursor to make the 'on the fly' conversion. The key line (see below) is setting the update cursor, essentially the 3rd parameter enables the unit conversion without the intermediate step, CalculateAreas_stats (or even without a further step with unit conversion), as I promised wasn't necessary (@ R.K. - sorry for not explaining better earlier):
Here's the critical line in the code:
rows = arcpy.UpdateCursor(fc, '', objSR)
EDIT: One more thing, about the 'data access' module update cursor (arcpy.da.UpdateCursor), which is part of the original question -- I don't have 10.1 at this point, but the documentation shows the SR object is supported the same way "...can be specified with either a SpatialReference object or string equivalent." Looks like access to geometry has changed slightly, using the '@' token: SHAPE@AREA
http://resources.arcgis.com/en/help/main/10.1/index.html#//018w00000014000000
import arcpy, os
# Target shapefile (in native state plane feet units):
fc = r'C:\Documents and Settings\whitley-wayne\Desktop\updatecursorShapeArea\New_ShapefileBuffer.shp'
# The state plane system projection file:
prjFilename = r'NAD 1983 HARN StatePlane Florida East FIPS 0901 (Meters).prj'
# The system subdirectory tree:
coordSysDir = r'Coordinate Systems\Projected Coordinate Systems\State Plane\NAD 1983 HARN (Meters)'
# ...getting the ArcGIS install directory and joining the above path- and file- names...
prjFilepath = os.path.join(os.path.join(arcpy.GetInstallInfo()['InstallDir'], coordSysDir), prjFilename)
# The spatial reference object (establishing a metric unit of measure):
objSR = arcpy.SpatialReference(prjFilepath)
# Opening an update cursor using the spatial reference object (in meters)...
# The shapefile native units are still feet.
# The update cursor will update the Shape_Area field using objSR for the units conversion to meters:
rows = arcpy.UpdateCursor(fc, '', objSR)
for row in rows:
row.Shape_Area = row.shape.area
rows.updateRow(row)
del row, rows
shape.area@squaremeters– R.K. Dec 4 '12 at 6:24