En utilisant l'outil CalculateField_management, on peut spécifier l'unité de mesure lors du calcul de la longueur de la forme:
#Calculate polyline lengths in miles
polylines = "C:\sampleShape.shp"
arcpy.CalculateField_management(polylines, "shapeLen", "!Shape.length@MILES!", "PYTHON_9.3")
Je voudrais faire la même chose dans un curseur en utilisant le 'SHAPE @ LENGTH' de chaque fonctionnalité, avec la longueur retournée dans une unité de mon choix:
#hypothetical example 1
with arcpy.da.UpdateCursor(polylines, field_names=["[email protected]", "shapeLen"]) as upCurs:
for row in upCurs:
row[1] = row[0]
upCurs.updateRow(row)
Ou peut-être en utilisant l'objet (moins efficace) de géométrie @SHAPE?:
#hypothetical example 2
with arcpy.da.UpdateCursor(polylines, field_names=["@SHAPE", "shapeLen"]) as upCurs:
for row in upCurs:
row[1] = row[0].length@FEET
upCurs.updateRow(row)
Y a-t-il un moyen de le faire?
la source