读取几何

要素类中的每个要素都包含一组用于定义面或线折点的点要素,或者包含单个用于定义一个点要素的坐标。 可以使用几何对象(PolygonPolylinePointGeometryMultiPoint)访问这些点,几何对象将以 Point 对象的数组形式返回这些点。

要素可以有多个部分。 几何对象的 partCount 属性将返回要素的部分数目。 如果指定了索引,则 getPart 方法将返回特定几何部分的点对象数组。 如果未指定索引,则返回的数组将包含每个几何部分的点对象数组。

PointGeometry 要素将返回单个 Point 对象而不是点对象数组。 所有其他要素类型(面、折线和多点)都将返回一个点对象数组,或者,如果要素具有多个部件,则返回包含多个点对象数组的数组。

如果多边形包含孔洞,则它由多个环组成。 为面返回的点对象数组包含外部环和所有内部环的点。 外部环总是首先返回,然后是内部环,环之间使用空点对象作为分隔符。 每当脚本读取地理数据库或 shapefile 中面的坐标时,它应该包含处理内部环的逻辑(如果脚本需要该信息);否则,仅读取外部环。

多部分要素由多个物理部分组成,但只引用数据库中的一组属性。 例如,在州图层中,夏威夷州可以被认为是一个多部分要素。 虽然由许多岛屿组成,但在数据库中将被记录为一个要素。

环是定义二维区域的闭合路径。 有效的环由有效路径组成,使得环的起点和终点具有相同的 x,y 坐标。 顺时针方向的环为外部环,逆时针方向的环定义内部环。

了解有关写入几何的详细信息

使用几何令牌

几何令牌也可以用作访问完整几何对象的快捷方式。 可以使用其他几何令牌访问特定几何信息。 访问完整几何往往更加耗时。 如果仅需要几何的特定属性,可以使用令牌以提供访问几何属性的快捷方式。 例如,SHAPE@XY 会返回一组代表要素质心的 x,y 坐标。

令牌说明

SHAPE@

要素的几何对象。

SHAPE@XY

一组要素的质心 x,y 坐标。

SHAPE@TRUECENTROID

一组要素的质心 x,y 坐标。 这会返回与 SHAPE@XY 相同的值。

SHAPE@X

要素的双精度 x 坐标。

SHAPE@Y

要素的双精度 y 坐标。

SHAPE@Z

要素的双精度 z 坐标。

SHAPE@M

要素的双精度 m 值。

SHAPE@JSON

表示几何的 Esri JSON 字符串。

SHAPE@WKB

OGC 几何的熟知二进制 (WKB) 表示。 用于以可移植的方式将几何值表示为连续的字节流。

SHAPE@WKT

OGC 几何的熟知文本 (WKT) 表示。 用于以可移植的方式将几何值表示为文本字符串。

SHAPE@AREA

要素的双精度面积。

SHAPE@LENGTH

要素的双精度长度。

读取点几何

以下示例使用 SearchCursor 打印所有要素的坐标。

点要素类上的搜索光标
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
for row in arcpy.da.SearchCursor(infc, ["SHAPE@XY"]):
    # Print x,y coordinates of each point feature
    x, y = row[0]
    print("{}, {}".format(x, y))
点几何

对于上述要素类,脚本将返回以下信息:

2.0 4.0
8.0 10.0
7.0 5.0

读取多点几何

多点要素类上的搜索光标
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current multipoint's ID
    print("Feature {}:".format(row[0]))

    # For each point in the multipoint feature,
    #  print the x,y coordinates
    for pnt in row[1]:
        print("{}, {}".format(pnt.X, pnt.Y))
多点几何

对于上述要素类,脚本将返回以下信息:

Feature 0:
3.0 8.0
4.0 4.0
6.0 6.0
Feature 1:
5.0 9.0
8.0 10.0
Feature 2:
9.0 5.0

读取折线或面几何

面或线要素类上的搜索光标
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current polygon or polyline's ID
    print("Feature {}:".format(row[0]))
    partnum = 0

    # Step through each part of the feature
    for part in row[1]:
        # Print the part number
        print("Part {}:".format(partnum))

        # Step through each vertex in the feature
        for pnt in part:
            if pnt:
                # Print x,y coordinates of current point
                print("{}, {}".format(pnt.X, pnt.Y))
            else:
                # If pnt is None, this represents an interior ring
                print("Interior Ring:")

        partnum += 1
面几何

对于上述要素类,脚本将返回以下信息: 要素 0 是单部分面,要素 1 是两部分面,要素 2 是具有内部环的单部分面。

Feature 0:
Part 0:
3.0 8.0
1.0 8.0
2.0 10.0
3.0 8.0
Feature 1:
Part 0:
5.0 3.0
3.0 3.0
3.0 5.0
5.0 3.0
Part 1:
7.0 5.0
5.0 5.0
5.0 7.0
7.0 5.0
Feature 2:
Part 0:
9.0 11.0
9.0 8.0
6.0 8.0
6.0 11.0
9.0 11.0
Interior Ring:
7.0 10.0
7.0 9.0
8.0 9.0
8.0 10.0
7.0 10.0