【arcpy】读取要素类、要素
#coding=utf-8 # ①要素几何由点Point构成 # 要素类中的每个要素都包含一组用于定义 面或线 折点的点,或者包含单个用于定义一个 点要素 的点。 # 可以使用几何对象(Polygon、Polyline、PointGeometry 或 MultiPoint)访问这些点, # 几何对象将以 Point 对象的数组形式返回这些点。 # ②多部件 # 要素的几何可具有多个部件,几何对象的 partCount 属性将返回要素的部分数目。 # 如果指定了索引,则 getPart(i) 方法将返回特定几何部分的点对象数组。 # 如果未指定索引,则返回的数组将包含每个几何部分的点对象数组。[[p,p,p],[]] # 多部件要素是由多个物理部分组成的,但是只引用数据库中的一组属性。 # 例如,在州行政区图层中,可将夏威夷州看作是一个多部件要素。虽然它是由许多岛屿组成的,但在数据库中仍将其记录为一个要素。 # ③环 # 如果一个面包含多个洞,它将由多个环组成。针对面返回的点对象数组将包含外部环及所有内部环的点。 # 外部环总是先返回,接着是内部环,其中以空点对象作为环之间的分隔符。None # 环是一个用于定义二维区域的闭合路径。 # 有效的环是由有效路径组成的,因而环的起点和终点具有相同的 x,y 坐标。 # 顺时针环是外部环,逆时针环则定义内部环。 import arcpy # # 3个环的组成点集合 # points1=[[0,0],[0,10],[10,10],[10,0],[0,0]] # points2=[[2,2],[2,8],[8,8],[8,2],[2,2]] # points3=[[4,4],[4,6],[6,6],[6,4],[4,4]] # # # 3个环的Array对象 # ring1=arcpy.Array([arcpy.Point(*p) for p in points1]) # ring2=arcpy.Array([arcpy.Point(*p) for p in points2]) # ring3=arcpy.Array([arcpy.Point(*p) for p in points3]) # # polygon=arcpy.Polygon(arcpy.Array([ring1,ring2,ring3])) # # partIndex=1 # for part in polygon: # print 'Part%d:'%partIndex # partIndex+=1 # for point in part: # if point: # print '{},{}'.format(int(point.X),int(point.Y)) # else: # print 'InnerRing' featureClass=r"E:\3 coding\py code\arcpy\create\polygon\polygon_multiPart.shp" with arcpy.da.SearchCursor(featureClass,["SHAPE@"]) as cursor: polygonIndex=1 for row in cursor: print 'Polygon%d'%polygonIndex polygonIndex+=1 partIndex = 1 for part in row[0]: print 'Part%d:' % partIndex partIndex += 1 for point in part: if point: print '{},{}'.format(int(point.X), int(point.Y)) else: print 'InnerRing'