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

 

posted @ 2020-12-10 23:12  yzhyingcool  阅读(1835)  评论(0编辑  收藏  举报