ArcGIS 10 및 Python에서 쉐이프 파일에있는 각 다각형의 범위 (xmax, ymax, xmin, ymin) 정보를 얻고 싶습니다.
전체 shapefile의 범위를 사용하여 얻을 수 있습니다.
file=r"D:\SCRATCH\ARCGIS\100k_trc_tiles_TVM.shp"
desc=arcpy.Describe(file)
print desc.extent.Xmax
394551.52085039532
그러나 데이터 세트의 각 행에 대해 동일한 정보를 얻는 방법을 알 수없는 것 같습니다.
rows = arcpy.SearchCursor("100k_trc_tiles_TVM")
for row in rows:
print row
데이터 세트에서 31 행을 인쇄하지만
for row in rows:
desc=arcpy.Describe(row)
print desc.extent.Xmax
오류가 발생합니다.
런타임 오류 : 개체 : 설명 입력 값이 올바른 유형이 아닙니다
"계산 계산"을 사용하여 테이블에 범위 값을 추가하려고 생각했지만 이것은 중심을 제공합니다. 그런 다음 row.GetValue ( "xmax")와 같은 것을 사용할 수 있습니다.
그것은 우리가 http://www.ian-ko.com/free/free_arcgis.htm 의 기능을 사용하여 X / Y, max / min을 만들 수 있다는 것을 알고 있지만 추가하지 않아도되는 것이 가장 좋습니다 필드, 특히 ArcPy가 이러한 값을 얻을 수있는 경우.
기본적으로 분할 도구가 큰 크기의 데이터 세트로 인해 실패하기 때문에 지오 프로세싱을 위해 클립 도구로 피드를 확장하여 지오 프로세싱을위한 30 개 영역의 데이터 (1 : 100,000 맵 시트에 따라)를 가져와야합니다 ( 교차가 제공하는 이유 참조). ERROR 999999 : 유효하지 않은 토폴로지 기능 실행 오류 [너무 많은 lineeg 엔드 포인트]? ). 여러 데이터 세트에서 반복되므로 이것을 자동화하고 싶습니다.
=== 작업 스크립트 ===
# Emulates Arc Info SPLIT tool by using Clip but
# Requires a FC from which each row is used as the input clip feature.
# Each row must be rectangular.
# Used on 12GB FGDB with 100 million records.
#Licence: Creative Commons
#Created by: George Corea; georgec@atgis.com.au, coreagc@gmail.com
import arcpy, string
#inFrame=arcpy.GetParameterAsText(0) # Input dataframe FC
#inFile=arcpy.GetParameterAsText(1) # Input FC for splitting
#outDir=arcpy.GetParameterAsText(2) # Output FGDB
inFrame=r"D:\SCRATCH\ARCGIS\100k_trc_tiles_TVM.shp"
inFile=r"c:\junk\106\data\7_Merge.gdb\FullRez_m2b"
outDir=r"D:\SCRATCH\Projects\206\datasplit\test_slaasp.gdb"
#NameField="Name_1"
#arcpy.env.workspace = r"C:/Workspace"
arcpy.env.overwriteOutput = True
rows = arcpy.SearchCursor(inFrame)
shapeName = arcpy.Describe(inFrame).shapeFieldName
for row in rows:
feat = row.getValue(shapeName)
Name = row.Name_1
print "Executing clip on: "+str(Name)
extent = feat.extent
#print extent.XMin,extent.YMin,extent.XMax,extent.YMax
# Create an in_memory polygon
XMAX = extent.XMax
XMIN = extent.XMin
YMAX = extent.YMax
YMIN = extent.YMin
pnt1 = arcpy.Point(XMIN, YMIN)
pnt2 = arcpy.Point(XMIN, YMAX)
pnt3 = arcpy.Point(XMAX, YMAX)
pnt4 = arcpy.Point(XMAX, YMIN)
array = arcpy.Array()
array.add(pnt1)
array.add(pnt2)
array.add(pnt3)
array.add(pnt4)
array.add(pnt1)
polygon = arcpy.Polygon(array)
ShapeFile = outDir+"\\temp_poly"
arcpy.CopyFeatures_management(polygon, ShapeFile)
#print Name
### Set local variables
in_features = inFile
clip_features = ShapeFile
out_feature_class = outDir+"\\"+Name
xy_tolerance = "0.22"
# Execute Clip
try:
arcpy.Clip_analysis(in_features, clip_features, out_feature_class, xy_tolerance)
print "Completed: "+str(Name)
except:
error = arcpy.GetMessages()
print "Failed on: "+str(Name)+" due to "+str(error)