来自:https://pro.arcgis.com/zh-cn/pro-app/arcpy/classes/geometry.htmpython
几何对象定义空间位置和关联几何形状。算法
在许多地理处理工做流中,您可能须要使用坐标和几何信息运行特定操做,但不必定想经历建立新(临时)要素类、使用光标填充要素类、使用要素类,而后删除临时要素类的过程。可使用几何对象替代输入和输出,从而使地理处理变得更简单。使用 Geometry、Multipoint、PointGeometry、Polygon或 Polyline 类能够从头开始建立几何对象。json
Geometry (geometry, inputs, {spatial_reference}, {has_z}, {has_m})
参数 | 说明 | 数据类型 |
geometry
|
几何类型:点、面、折线或多点。数组 |
String |
inputs
|
用于建立对象的坐标。数据类型能够是 Point 或 Array 对象。app |
Object |
spatial_reference
|
新几何的空间参考。函数 (默认值为 None)工具 |
SpatialReference |
has_z
|
Z 状态:若是启用 Z,则为几何的 True,若是未启用,则为 False。测试 (默认值为 False)ui |
Boolean |
has_m
|
M 状态:若是启用 M,则为几何的 True,若是未启用,则为 False。spa (默认值为 False) |
Boolean |
属性 | 说明 | 数据类型 |
JSON
(只读)
|
返回一个字符串形式的几何 Esri JSON 制图表达。 提示:经过 Python 的 json.loads 函数,返回的字符串可转换至字典。 |
String |
WKB
(只读)
|
返回 OGC 几何的熟知二进制 (WKB) 制图表达。该存储类型将几何值表示为不间断的字节流形式。 |
Bytearray |
WKT
(只读)
|
返回 OGC 几何的熟知文本 (WKT) 制图表达。其将几何值表示为文本字符串。 几何中的全部真曲线都将在 WKT 字符串的近似曲线中进行增密。 |
String |
area
(只读)
|
面要素的面积。其余全部要素类型为空。 |
Double |
centroid
(只读)
|
若是质心位于要素以内或要素之上则为真;不然返回标注点。返回点对象。 |
Point |
extent
(可读写)
|
几何范围。 |
Extent |
firstPoint
(只读)
|
第一个几何坐标点。 |
Point |
hullRectangle
(只读)
|
以空格分隔的凸包矩形坐标对的字符串。 |
String |
isMultipart
(只读)
|
若是此几何的部分数大于一,则为 True。 |
Boolean |
labelPoint
(只读)
|
标注位置所在的点。labelPoint 始终位于要素以内/之上。 |
Point |
lastPoint
(只读)
|
要素的最后一个坐标。 |
Point |
length
(只读)
|
线状要素的长度。点和多点要素类型为零。 |
Double |
length3D
(可读写)
|
线状要素的 3D 长度。点和多点要素类型为零。 |
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}) | 返回几何特定部分的点对象数组,或包含多个数组(每一个数组对应一个部分)的数组。 |
intersect (other, dimension) | 构造做为两个输入几何交集的几何体。不一样的维数可用于建立不一样的 shape 类型。 对于同一 shape 类型的两个几何体,其交集为仅包含原始几何重叠区域的几何。 ![]() 为了更快地获取结果,请在调用 intersect 类以前先测试两个几何体是否 disjoint。 |
measureOnLine (in_point, {use_percentage}) | 返回今后条线的起点到 in_point 之间的一个测量值。 |
overlaps (second_geometry) | 指示两个几何的交集是否具备与其中一个输入几何相同的形状类型,而且不等于任一输入几何。 本图仅显示 True 关系。 ![]() |
pointFromAngleAndDistance (angle, distance, {method}) | 使用指定的测量类型按给定的角度(以度为单位)和距离(采用几何空间参考的单位)返回点。 |
positionAlongLine (value, {use_percentage}) | 返回线上距线起点指定距离处的点。 |
projectAs (spatial_reference, {transformation_name}) | 定义几何投影,并应用相应的地理变换。 要进行投影,几何体须要具备一个空间参考且不具备 UnknownCoordinateSystem。传递到该方法的新空间参考系统参数定义了一个输出坐标系。若是任一空间参考未知,坐标将不会发生更改。ProjectAs 方法并不更改 Z 值和测量值。 |
queryPointAndDistance (in_point, {as_percentage}) | 在折线上找到离 in_point 最近的点,并肯定这两点间的距离。同时返回关于 in_point 位于线的哪一侧以及最近点沿线的距离。 |
segmentAlongLine (start_measure, end_measure, {use_percentage}) | 在起始测量值和结束测量值之间返回 Polyline。虽然与 Polyline.positionAlongLine 类似,可是会在折线的两点之间(而不是在单点)返回折线段。 |
snapToLine (in_point) | 基于以该几何做为捕捉目标的 in_point 返回一个新点。 |
symmetricDifference (other) | 构造一个几何体,该几何体由两个几何的并集减去其交集所造成。 两个输入几何须须为同一 shape 类型。 ![]() |
touches (second_geometry) | 指示几何的边界是否相交。 当两个几何的交集不为空,但它们内部的交集为空时,说明两个几何接触。例如,仅当点与折线的一个终点重合时,才表示点与折线接触。 本图仅显示 True 关系。 ![]() |
union (other) | 构造一个几何体,该几何体是输入几何的并集。 要合并的两个几何须须为同一 shape 类型。 ![]() |
within (second_geometry, {relation}) | 指明基础几何是否位于比较几何以内。 within 与运算符 contains 相反。 本图仅显示 True 关系。
![]() 若是基础几何是这些几何的交集且其内部交集不为空,则基础几何位于比较几何以内。within 是 Clementini 运算符,空的基础几何除外。 |
angleAndDistanceTo (other, {method})
参数 | 说明 | 数据类型 |
other
|
第二个几何。 |
PointGeometry |
method
|
PLANAR 测量值反映出的是地理数据在 2D 表面上的投影(也就是说,平面测量不考虑地球的曲率)。若有必要,可选择 GEODESIC、GREAT_ELLIPTIC、LOXODROME 以及 PRESERVE_SHAPE 测量类型做为替代类型。
(默认值为 GEODESIC) |
String |
数据类型 | 说明 |
tuple | 将一组角(以度为单位)和距离(以米为单位)返回到另外一个点。 |
boundary ()
数据类型 | 说明 |
Object | 面的边界为折线。折线的边界为多点,与线的端点相对应。点或多点的边界为空点或多点。 |
buffer (distance)
参数 | 说明 | 数据类型 |
distance
|
缓冲距离。 缓冲几什么时候,缓冲距离采用相同的单位。 仅能够为面几何指定负距离。 |
Double |
数据类型 | 说明 |
Polygon | 缓冲的面几何。 |
contains (second_geometry, {relation})
参数 | 说明 | 数据类型 |
second_geometry
|
第二个几何。 |
Object |
relation
|
空间关系类型。
(默认值为 None) |
String |
数据类型 | 说明 |
Boolean | 返回的布尔值 True 表示该几何包含第二个几何。 |
convexHull ()
数据类型 | 说明 |
Object | 生成的几何。单个点的凸包为该点自己。 |
crosses (second_geometry)
参数 | 说明 | 数据类型 |
second_geometry
|
第二个几何。 |
Object |
数据类型 | 说明 |
Boolean | 返回布尔值为 True 指明两个几何相交于较小形状类型的几何。 |
densify (type, distance, deviation)
参数 | 说明 | 数据类型 |
type
|
增密、DISTANCE、ANGLE 或 GEODESIC 的类型。
|
String |
distance
|
折点间的最大距离。折点间的实际距离一般小于最大距离,缘由是新折点会沿着原始线段均匀分布。 若是使用 DISTANCE 或 ANGLE 的 type,则距离将以几何空间参考的单位进行测量。若是使用 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 类型相同并在平面中定义了相同点集。 |
getArea ({type}, {units})
参数 | 说明 | 数据类型 |
type
|
平面测量值反映出的是地理数据在 2D 表面上的投影(也就是说,平面测量不考虑地球的曲率)。若是须要,可选择 GEODESIC、GREAT_ELLIPTIC、LOXODROME 和 PRESERVE_SHAPE 做为替代测量类型。
(默认值为 GEODESIC) |
String |
units
|
计算面积时将采用的单位。 面积测量单位关键字:英亩 | 公亩 | 公顷 | 平方厘米 | 平方分米 | 平方英寸 | 平方英尺 | 平方公里 | 平方米 | 平方英里 | 平方毫米 | 平方码 |
String |
数据类型 | 说明 |
Double | 要素的面积。 默认状况下,在投影坐标系中,将采用坐标系的单位返回面积,在地理坐标系中,将以平方米为单位返回面积。 |
getLength ({measurement_type}, {units})
参数 | 说明 | 数据类型 |
measurement_type
|
平面测量值反映出的是地理数据在 2D 表面上的投影(也就是说,平面测量不考虑地球的曲率)。若是须要,可选择 GEODESIC、GREAT_ELLIPTIC、LOXODROME 和 PRESERVE_SHAPE 做为替代测量类型。
(默认值为 GEODESIC) |
String |
units
|
计算长度时将采用的单位。 线性测量单位关键字:厘米 | 分米 | 英尺 | 英寸 | 公里 | 米 | 英里 | 毫米 | 海里 | 码 |
String |
数据类型 | 说明 |
Double | 要素的长度。 默认状况下,在投影坐标系中,将采用坐标系的单位返回长度,在地理坐标系中,将以米为单位返回长度。 |
getPart ({index})
参数 | 说明 | 数据类型 |
index
|
几何的索引位置。 |
Integer |
数据类型 | 说明 |
Array | 若是指定了索引,则 getPart 将返回几何特定部分的点对象数组。若是未指定索引,则返回的数组将包含每一个几何部分的点对象数组。 |
intersect (other, dimension)
参数 | 说明 | 数据类型 |
other
|
第二个几何。 |
Object |
dimension
|
生成几何的拓扑维度(形状类型)。
|
Integer |
数据类型 | 说明 |
Object | 做为两个输入几何体的交集的新几何体(点、多点、折线或面)。 |
measureOnLine (in_point, {use_percentage})
参数 | 说明 | 数据类型 |
in_point
|
用于从折线的起点开始测量的点(PointGeometry 或 Point)。 |
PointGeometry |
use_percentage
|
若是 False,则测量值将做为距离返回;若是True,则测量值将做为百分比返回。 (默认值为 False) |
Boolean |
数据类型 | 说明 |
Double | 一个距离或百分比。 |
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})
参数 | 说明 | 数据类型 |
value
|
沿线的距离。 若是距离小于零,则将返回线的起点;若是距离大于线的长度,则将返回线的终点。 |
Double |
use_percentage
|
可将距离指定为测量的固定单位或线的长度比率。 若是为真,则 value 将被用做百分比,若是为假,则 value 将被用做距离。对于百分比,该值应表示为 0.0 (0%) 到 1.0 (100%) 的双精度。 (默认值为 False) |
Boolean |
数据类型 | 说明 |
PointGeometry | 线上距线起点指定距离的点。 |
projectAs (spatial_reference, {transformation_name})
参数 | 说明 | 数据类型 |
spatial_reference
|
新空间参考。该项能够是 SpatialReference 对象或坐标系名称。 |
SpatialReference |
transformation_name
|
地理变换名称。 |
String |
数据类型 | 说明 |
Object | 经投影的几何。 |
queryPointAndDistance (in_point, {as_percentage})
参数 | 说明 | 数据类型 |
in_point
|
输入点(PointGeometry 或 Point)。 |
PointGeometry |
as_percentage
|
若是 False,会将测量值做为距离返回;若是 True,将以百分比返回测量值。 (默认值为 False) |
Boolean |
数据类型 | 说明 |
tuple | 返回包含如下信息的一个元组:
|
segmentAlongLine (start_measure, end_measure, {use_percentage})
参数 | 说明 | 数据类型 |
start_measure
|
从线起点起的起始距离。 |
Double |
end_measure
|
从线起点起的结束距离。 |
Double |
use_percentage
|
可将起始和结束测量值指定为固定单位或比率。 若是为真,则 start_measure 和 end_measure 将被用做百分比,若是为假,则 start_measure 和 end_measure 将被用做距离。对于百分比,该测量值应表示为 0.0 (0%) 到 1.0 (100%) 的双精度。 (默认值为 False) |
Boolean |
数据类型 | 说明 |
PolyLine | 两点之间的线段。 |
snapToLine (in_point)
参数 | 说明 | 数据类型 |
in_point
|
要捕捉到该线的点(PointGeometry 或 Point)。 |
PointGeometry |
数据类型 | 说明 |
PointGeometry | 捕捉到的点。 |
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 表示该几何被包含在另外一个几何以内。 |
将地理处理工具的输出参数设置为空 Geometry 对象时,该工具将返回 Geometry 对象列表。
import arcpy # Run the Copy Features tool, setting the output to the geometry object. # geometries is returned as a list of geometry objects. geometries = arcpy.CopyFeatures_management("c:/data/streets.shp", arcpy.Geometry()) # Walk through each geometry, totaling the length length = 0 for geometry in geometries: length += geometry.length print("Total length: {0}".format(length))