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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM