파이썬 스크립트 내에서 다각형의 면적을 계산하려고합니다. 두 개를 병합하여 새 다각형을 만들고 결과 다각형의 영역을 출력 파일의 필드에 추가하고 싶습니다. 다각형은 일반 모양 파일에 저장되어 투영됩니다. 지역은지도 단위로 표시하는 것이 좋습니다.
나는 이것이 매우 일반적이고 간단한 작업이라고 생각했지만 많은 Google 작업에도 불구하고 지금까지 작동하는 솔루션을 찾을 수 없었습니다.
arcpy.updateCursor
값이 계산되면 (이 단계에서 FC에 단 하나의 기능 만 있음) 값을 삽입하는 데 사용하려고 계획 했으므로 변수로 반환 할 수 있는지가 가장 쉽습니다. 동일한 작업을 수행하는 다른 솔루션 (영역 값을 올바른 필드로 가져 오기)도 작동합니다.
나는 또한 파이썬에서 필드 계산기를 사용해 보았습니다. 도움말 페이지에서 수정하여 다음과 같이 작동한다고 생각했지만 지금까지는 운이 없습니다.
arcpy.AddField_management(tempPgs, "Shape_area", 'DOUBLE')
exp = "float(!SHAPE.AREA!.split())"
arcpy.CalculateField_management(tempPgs, "Shape_area", exp)
Windows 7에서 Python 2.7과 함께 ArcGIS Basic 10.1 SP1 실행
현재 코드의 관련 부분은 다음과 같습니다.
#/.../
arcpy.Copy_management(inpgs, outpgs)
arcpy.AddField_management(outpgs, 'Shape_area', 'LONG')
fields = AM.FieldLst(outpgs)
#/.../
# Identify and search for shapes smaller than minimum area
where1 = '"' + 'Shape_Area' + '" < ' + str(msz)
polyrows = arcpy.SearchCursor(inpgs, where1)
for prow in polyrows:
grd1 = prow.GridID # GridID on the current polygon
grd2 = nDD.get(grd1) # GridID on the polygon downstream
# Update features
if grd2
geometry1 = prow.Shape
geometry2 = geometryDictionary[grd2]
# Update temporary features
arcpy.Merge_management([geometry1, geometry2], tempMerged)
arcpy.Dissolve_management(tempMerged, tempPgs)
fds = AM.FieldLst(tempPgs)
for field in fields[2:]:
arcpy.AddField_management(tempPgs, field, 'DOUBLE')
for fd in fds[2:]:
arcpy.DeleteField_management(tempPgs, fd)
exp = "float(!SHAPE.AREA!.split())"
arcpy.CalculateField_management(tempPgs, "Shape_area", exp)
# Append them to output FC
try:
arcpy.Append_management(tempPgs, outpgs, "TEST")
except arcgisscripting.ExecuteError:
arcpy.Append_management(tempPgs, outpgs, "NO_TEST")
elif ...
else ...
SHAPE@AREA
커서의 일부로 영역을 읽을 때 원하는 것을 얻을 수 있습니다. 그러나 코드의 구조는 지역이 작성하려는 것과 동일한 단위인지 여부에 따라 다릅니다.