• 【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 codingpy codearcpycreatepolygonpolygon_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'
  • 相关阅读:
    InjectAPC全部项目(Win32和Win64位)
    Codeforces Round #377 (Div. 2)
    Codeforces Canada Cup 2016
    UVa 1395 (最小生成树)
    空间表SpaceList
    线程中的临界区的应用
    【题解】狼和羊-C++
    【基础算法-树状数组】入门-C++
    【题解】在你窗外闪耀的星星-C++
    【题解】[NOIP模拟题]我要的幸福-C++
  • 原文地址:https://www.cnblogs.com/yzhyingcool/p/14118060.html
Copyright © 2020-2023  润新知