#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'