摘要
Polygon 对象是由 x,y 坐标对的连接序列定义的闭合形状。
说明
在许多地理处理工作流中,您可能需要使用坐标和几何信息运行特定操作,但不一定想经历创建新(临时)要素类、使用光标填充要素类、使用要素类,然后删除临时要素类的过程。可以使用几何对象替代输入和输出,从而使地理处理变得更简单。使用 Geometry、Multipoint、PointGeometry、Polygon 或 Polyline 类可以从头开始创建几何对象。
在创建几何对象的过程中,将执行一个简化过程,以使几何根据其几何类型在拓扑上保持一致。 例如,将校正可能自相交的面,或包含错误环方向的面。 坐标可能会在几何空间参考的分辨率范围内移动。
可以使用以下数值运算符代替几何方法:
几何方法 | 数值运算符 |
---|---|
intersect | + |
union | | |
difference | - |
symmetricDifference | ^ |
例如,要联合两个几何对象,g3 = g1 | g2 等效于 g3 = g1.union(g2)。
+ 运算符将使用第一个几何的几何类型 (dimension) 来确定输出的几何类型。
语法
Polygon (inputs, {spatial_reference}, {has_z}, {has_m})
参数 | 说明 | 数据类型 |
inputs | 用于创建对象的坐标。数据类型可以是 Point 或 Array 对象。 | Object |
spatial_reference | 新几何的空间参考。 (默认值为 None) | SpatialReference |
has_z | Z 状态:如果启用 Z,则为几何的 True,如果未启用,则为 False。 (默认值为 False) | Boolean |
has_m | M 状态:如果启用 M,则为几何的 True,如果未启用,则为 False。 (默认值为 False) | Boolean |
属性
属性 | 说明 | 数据类型 |
JSON (只读) | 返回一个字符串形式的几何 Esri JSON 制图表达。 提示:通过 json 模块的 loads 函数,返回的字符串可转换至字典。 | String |
WKB (只读) | 返回 OGC 几何的熟知二进制 (WKB) 表示。 用于以可移植的方式将几何值表示为连续的字节流。 | Bytearray |
WKT (只读) | 返回 OGC 几何的熟知文本 (WKT) 制图表达。 用于以可移植的方式将几何值表示为文本字符串。 几何中的所有真曲线都将在 WKT 字符串的近似曲线中进行增密。 | String |
area (只读) | 面要素的面积。 对于其他所有要素类型,该值为零。 | Double |
centroid (只读) | 如果质心位于要素之内或要素之上则为真;否则返回标注点。 | Point |
extent (可读写) | 几何范围。 | Extent |
firstPoint (只读) | 几何的第一个坐标点。 | Point |
hasCurves (只读) | 如果几何具有曲线,则返回 True。 | Boolean |
hullRectangle (只读) | 凸包矩形坐标对的空格分隔字符串。 | String |
isMultipart (只读) | 如果此几何的部分数大于一,则返回 True。 | Boolean |
labelPoint (只读) | 标注位置所在的点。 labelPoint 始终位于要素之内/之上。 | Point |
lastPoint (只读) | 要素最后一个坐标。 | Point |
length (只读) | 线状要素的长度。 该计算将使用 2D 笛卡尔算法。 对于点和多点几何,长度为零。 对于面几何,长度将是边界的 2D 长度。 | Double |
length3D (只读) | 线状要素的 3D 长度。 该计算将使用 3D 笛卡尔算法。 对于点和多点几何,长度为零。 对于面几何,长度将是边界的 3D 长度。 警告:该操作不执行水平和垂直坐标系之间的单位转换。 假设 x、y 和 z 坐标在同一线性单位中。 警告:此属性仅适用于投影数据。 | Double |
partCount (只读) | 要素的几何部分数。 | Integer |
pointCount (只读) | 要素的总点数。 | Integer |
spatialReference (只读) | 几何的空间参考。 | SpatialReference |
trueCentroid (只读) | 要素的重心。 | Point |
type (只读) | 几何类型:面、折线、点、多点、多面体、尺寸或注记。 | String |
方法概述
方法 | 说明 |
angleAndDistanceTo (other, {method}) | 返回到点或面的角度和距离的元组。 |
boundary () | 构造几何边界。 |
buffer (distance) | 在距几何的指定距离处构造一个面。 |
clip (envelope) | 构造几何体与指定范围的交集。 |
contains (second_geometry, {relation}) | 指明基础几何中是否包含比较几何。 contains 与 within 相反。 本图仅显示 True 关系。 |
convexHull () | 构造具有最小边界多边形的几何,以便所有外角均为凸角。 |
crosses (second_geometry) | 指明两个几何是否相交于较小形状类型的几何。 如果两条折线仅共用公共点(至少有一个点不是端点),则这两条折线交叉。如果折线和面在面(不等于整条折线)的内部共享一条折线或一个公共点(对于垂线),那么该折线与面交叉。 本图仅显示 True 关系。 |
cut (cutter) | 将该几何分割到剪切折线的左右两侧。 剪切折线或面时,会从其与剪切折线的相交处将其分割。每一段被分类为剪切线的左侧或右侧。该分类基于剪切线的方向。目标折线中不与剪切折线相交的部分将作为该输入折线结果的右侧部分返回。如果未对几何进行剪切,则左侧几何将为空 (None)。 |
densify (type, distance, {deviation}) | 使用添加的折点 创建新的几何。 |
difference (other) | 构造一个几何体,该几何体仅由基础几何所特有、而其他几何所没有的区域组成。下图显示当红色多边形为源几何时的结果。 |
disjoint (second_geometry) | 指明基础几何和比较几何是否未共用任何点。 如果 disjoint 返回 False,则两个几何相交。 本图仅显示 True 关系。 |
distanceTo (other) | 返回两个几何之间的最小距离。距离将采用几何空间参考的单位。如果两个几何相交,则最小距离为 0。 两个几何必须具有相同的投影。 |
equals (second_geometry) | 指示原几何和参照几何的 shape 类型是否相同并在平面中定义相同点集。这仅是 2D 的比较;已忽略 M 值和 Z 值。 本图仅显示 True 关系。 |
generalize (max_offset) | 使用指定的最大偏移容差来创建一个简化几何。 |
getArea ({type}, {units}) | 使用测量类型返回要素的面积。 |
getLength ({measurement_type}, {units}) | 使用测量类型返回要素的长度。 |
getPart ({index}) | 如果指定了索引,则将返回几何特定部分的 Point 对象的 Array 对象。 如果未指定索引,则返回的 Array 对象将包含每个几何部分的 Point 对象的 Array。 getPart 方法等同于建立对象索引;即 obj.getPart(0) 等同于 obj[0]。 |
intersect (other, dimension) | 构造作为两个输入几何交集的几何体。不同的维数可用于创建不同的 shape 类型。 对于同一 shape 类型的两个几何体,其交集为仅包含原始几何重叠区域的几何。 为了更快地获取结果,请在调用 intersect 类之前先测试两个几何体是否 disjoint。 |
overlaps (second_geometry) | 指示两个几何的交集是否具有与其中一个输入几何相同的形状类型,并且不等于任一输入几何。 本图仅显示 True 关系。 |
pointFromAngleAndDistance (angle, distance, {method}) | 使用指定的测量类型按给定的角度(以度为单位)和距离(采用几何空间参考的单位)返回点。 |
positionAlongLine (value, {use_percentage}, {geodesic}) | 返回线上距线起点指定距离处的点。 |
projectAs (spatial_reference, {transformation_name}) | 定义几何投影,并应用相应的地理变换。 对于工程,几何必须具有空间参考,并且没有未知的坐标系。 传递给该方法的新空间参考系统定义了输出坐标系。 如果两个空间参考均未知,则坐标将不会更改。 projectAs 方法不会更改 z 值和 m 值。 |
symmetricDifference (other) | 构造一个几何体,该几何体由两个几何的并集减去其交集所形成。 两个输入几何必须为同一 shape 类型。 |
touches (second_geometry) | 指示几何的边界是否相交。 当两个几何的交集不为空,但它们内部的交集为空时,说明两个几何接触。例如,仅当点与折线的一个终点重合时,才表示点与折线接触。 本图仅显示 True 关系。 |
union (other) | 构造一个几何体,该几何体是输入几何的并集。 要合并的两个几何必须为同一 shape 类型。 |
within (second_geometry, {relation}) | 指明基础几何是否位于比较几何之内。 within 与运算符 contains 相反。 本图仅显示 True 关系。 如果基础几何是这些几何的交集且其内部交集不为空,则基础几何位于比较几何之内。within 是 Clementini 运算符,空的基础几何除外。 |
方法
angleAndDistanceTo (other, {method})
参数 | 说明 | 数据类型 |
other | The second geometry. If the geometry is a polygon, the distance is measured to the centroid of the polygon. | PointGeometry |
method | The method used to measure distance.
(默认值为 GEODESIC) | String |
数据类型 | 说明 |
tuple | 将一组角(以度为单位)和距离(以米为单位)返回到另一个点。 |
boundary ()
数据类型 | 说明 |
Object | 面的边界为折线。折线的边界为多点,与线的端点相对应。点或多点的边界为空点或多点。 |
buffer (distance)
参数 | 说明 | 数据类型 |
distance | 缓冲距离。 缓冲几何时,缓冲距离采用相同的单位。 仅可以为面几何指定负距离。 | Double |
数据类型 | 说明 |
Polygon | 缓冲的面几何。 |
clip (envelope)
参数 | 说明 | 数据类型 |
envelope | An Extent object used to define the clip extent. | Extent |
数据类型 | 说明 |
Object | 将输出几何体按指定范围进行裁剪。 |
contains (second_geometry, {relation})
参数 | 说明 | 数据类型 |
second_geometry | 第二个几何。 | Object |
relation | 空间关系类型。
(默认值为 None) | String |
数据类型 | 说明 |
Boolean | 返回的布尔值 True 表示该几何包含第二个几何。 |
convexHull ()
数据类型 | 说明 |
Object | 生成的几何。单个点的凸包为该点本身。 |
crosses (second_geometry)
参数 | 说明 | 数据类型 |
second_geometry | 第二个几何。 | Object |
数据类型 | 说明 |
Boolean | 返回布尔值为 True 指明两个几何相交于较小形状类型的几何。 |
cut (cutter)
参数 | 说明 | 数据类型 |
cutter | 剪切折线几何。 | PolyLine |
数据类型 | 说明 |
Geometry | 包含两个几何的列表。 |
densify (type, distance, {deviation})
参数 | 说明 | 数据类型 |
type | 增密、DISTANCE、ANGLE 或 GEODESIC 的类型。
| String |
distance | 折点间的最大距离。折点间的实际距离通常小于最大距离,原因是新折点会沿着原始线段均匀分布。 如果使用 DISTANCE 的 type 或 ANGLE,则距离将以几何空间参考的单位进行测量。如果使用 GEODESIC 的 type,则用米作单位测量距离。 | Double |
deviation | 增密使用直线逼近曲线。可以使用 deviation 控制近似精度。偏差是新线段与原始曲线间的最大距离。其值越小,就需要越多的线段来逼近曲线。 如果使用 DISTANCE 的 type,则用几何空间参考单位测量偏差。如果使用 ANGLE 的 type,则以弧度为单位来测量偏差。如果使用 GEODESIC 的 type,则不使用偏差。 | Double |
数据类型 | 说明 |
Geometry | 增密几何。 |
difference (other)
参数 | 说明 | 数据类型 |
other | 第二个几何。 | Object |
数据类型 | 说明 |
Object | 生成的几何。 |
disjoint (second_geometry)
参数 | 说明 | 数据类型 |
second_geometry | 第二个几何。 | Object |
数据类型 | 说明 |
Boolean | 返回布尔值 True 表示两个几何未共用任何点。 |
distanceTo (other)
参数 | 说明 | 数据类型 |
other | 第二个几何。 | Object |
数据类型 | 说明 |
Double | 两个几何之间的距离。 |
equals (second_geometry)
参数 | 说明 | 数据类型 |
second_geometry | 第二个几何。 | Object |
数据类型 | 说明 |
Boolean | 返回布尔值为 True 表示两个几何的 shape 类型相同并在平面中定义了相同点集。 |
generalize (max_offset)
参数 | 说明 | 数据类型 |
max_offset | 最大偏移容差。 | Double |
数据类型 | 说明 |
Geometry | 概化的几何。 |
getArea ({type}, {units})
参数 | 说明 | 数据类型 |
type | The method used to measure area.
(默认值为 GEODESIC) | String |
units | The units in which the area will be calculated.
| String |
数据类型 | 说明 |
Double | 要素的面积。 默认情况下,在投影坐标系中,将采用坐标系的单位返回面积,在地理坐标系中,将以平方米为单位返回面积。 |
getLength ({measurement_type}, {units})
参数 | 说明 | 数据类型 |
measurement_type | The method used to measure length.
(默认值为 GEODESIC) | String |
units | The units in which the length will be calculated.
| String |
数据类型 | 说明 |
Double | 要素的长度。 默认情况下,在投影坐标系中,将采用坐标系的单位返回长度,在地理坐标系中,将以米为单位返回长度。 |
getPart ({index})
参数 | 说明 | 数据类型 |
index | The index position of the geometry. | Integer |
数据类型 | 说明 |
Array | 生成的 Array 对象。 |
intersect (other, dimension)
参数 | 说明 | 数据类型 |
other | 第二个几何。 | Object |
dimension | 生成几何的拓扑维度(形状类型)。
| Integer |
数据类型 | 说明 |
Object | 作为两个输入几何体的交集的新几何体(点、多点、折线或面)。 |
overlaps (second_geometry)
参数 | 说明 | 数据类型 |
second_geometry | 第二个几何。 | Object |
数据类型 | 说明 |
Boolean | 返回布尔值为 True 表示两个几何的交集具有与其中一个输入几何相同的尺寸。 |
pointFromAngleAndDistance (angle, distance, {method})
参数 | 说明 | 数据类型 |
angle | 到返回点的角度(以度为单位)。 | Double |
distance | 到返回点的距离(采用几何空间参考的单位)。 | Double |
method | PLANAR 测量值反映出的是地理数据在 2D 表面上的投影(也就是说,这些测量值不考虑地球的曲率)。可根据需要选择 GEODESIC、GREAT_ELLIPTIC、LOXODROME 或 PRESERVE_SHAPE 测量类型作为替代类型。
(默认值为 GEODESIC) | String |
数据类型 | 说明 |
PointGeometry | 按给定的角度(以度为单位)和距离(以米为单位)返回点。 |
positionAlongLine (value, {use_percentage}, {geodesic})
参数 | 说明 | 数据类型 |
value | The distance along the line. If the distance is less than zero, the starting point of the line will be returned; if the distance is greater than the length of the line, the endpoint of the line will be returned. | Double |
use_percentage | Specifies whether the distance is specified as a fixed unit of measure or a ratio of the length of the line. If True, value is used as a percentage; if False, value is used as a distance. For percentages, the value should be expressed as a double from 0.0 (0 percent) to 1.0 (100 percent). (默认值为 False) | Boolean |
geodesic | Specifies whether the distance measure is geodesic or planar. If True, the distance measure is treated as geodesic; if False, the distance measure is treated as planar. (默认值为 False) | Boolean |
数据类型 | 说明 |
PointGeometry | 线上距线起点指定距离的点。 |
projectAs (spatial_reference, {transformation_name})
参数 | 说明 | 数据类型 |
spatial_reference | The new spatial reference. This can be a SpatialReference object or the coordinate system name. | SpatialReference |
transformation_name | The geotransformation name. | String |
数据类型 | 说明 |
Object | 经投影的几何。 |
symmetricDifference (other)
参数 | 说明 | 数据类型 |
other | 第二个几何。 | Object |
数据类型 | 说明 |
Object | 生成的几何。 |
touches (second_geometry)
参数 | 说明 | 数据类型 |
second_geometry | 第二个几何。 | Object |
数据类型 | 说明 |
Boolean | 返回布尔值为 True,表示几何的边界相交。 |
union (other)
参数 | 说明 | 数据类型 |
other | 第二个几何。 | Object |
数据类型 | 说明 |
Object | 生成的几何。 |
within (second_geometry, {relation})
参数 | 说明 | 数据类型 |
second_geometry | 第二个几何。 | Object |
relation | 空间关系类型。
(默认值为 None) | String |
数据类型 | 说明 |
Boolean | 返回布尔值 True 表示该几何被包含在另一个几何之内。 |
代码示例
从头开始创建面要素类。
import arcpy
# A list of features and coordinate pairs
feature_info = [[[1, 2], [2, 4], [3, 7]],
[[6, 8], [5, 7], [7, 2], [9, 5]]]
# A list that will hold each of the Polygon objects
features = []
# Create Polygon objects based an the array of points
for feature in feature_info:
array = arcpy.Array([arcpy.Point(*coords) for coords in feature])
# Add the first coordinate pair to the end to close polygon
array.append(array[0])
features.append(arcpy.Polygon(array))
# Persist a copy of the geometry objects using CopyFeatures
arcpy.CopyFeatures_management(features, "c:/geometry/polygons.shp")