摘要
PointGeometry 对象是在给定比例处既无长度亦无面积的形状。
说明
在许多地理处理工作流中,您可能需要使用坐标和几何信息运行特定操作,但不一定想经历创建新(临时)要素类、使用光标填充要素类、使用要素类,然后删除临时要素类的过程。可以使用几何对象替代输入和输出,从而使地理处理变得更简单。使用 Geometry、Multipoint、PointGeometry、Polygon 或 Polyline 类可以从头开始创建几何对象。
在创建几何对象的过程中,将执行一个简化过程,以使几何根据其几何类型在拓扑上保持一致。 例如,将校正可能自相交的面,或包含错误环方向的面。 坐标可能会在几何空间参考的分辨率范围内移动。
可以使用以下运算符代替几何方法:
Python 运算符 | 几何方法 |
---|---|
+ | intersect |
| | union |
- | difference |
^ | symmetricDifference |
== | equals |
!= | not equals |
例如,要联合两个几何对象,g3 = g1 | g2 等效于 g3 = g1.union(g2)。
+ 运算符将使用第一个几何的几何类型 (dimension) 来确定输出的几何类型。
语法
PointGeometry (inputs, {spatial_reference}, {has_z}, {has_m})
参数 | 说明 | 数据类型 |
inputs | 用于创建对象的 Point。 | Point |
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 关系。 |
difference (other) | 构造一个几何体,该几何体仅由基础几何所特有、而其他几何所没有的区域组成。下图显示当红色多边形为源几何时的结果。 |
disjoint (second_geometry) | 指明基础几何和比较几何是否未共用任何点。 如果 disjoint 返回 False,则两个几何相交。 本图仅显示 True 关系。 |
distanceTo (other) | 返回两个几何之间的最小距离。距离将采用几何空间参考的单位。如果两个几何相交,则最小距离为 0。 两个几何必须具有相同的投影。 |
equals (second_geometry) | 指示原几何和参照几何的 shape 类型是否相同并在平面中定义相同点集。这仅是 2D 的比较;已忽略 M 值和 Z 值。 本图仅显示 True 关系。 |
getGeohash (precision) | 将经纬度的地理坐标系坐标中的 PointGeometry 转换为精确到 geohash 格网中边界框内的任意精度的 geohash 字符串。 |
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}) | 使用指定的测量类型按给定的角度(以度为单位)和距离(采用几何空间参考的单位)返回点。 |
projectAs (spatial_reference, {transformation_name}) | 定义几何投影,并应用相应的地理变换。 对于工程,几何必须具有空间参考,并且没有未知的坐标系。 传递给该方法的新空间参考系统定义了输出坐标系。 如果两个空间参考均未知,则坐标将不会更改。 projectAs 方法不会更改 z 值和 m 值。 |
symmetricDifference (other) | 构造一个几何体,该几何体由两个几何的并集减去其交集所形成。 两个输入几何必须为同一 shape 类型。 |
toCoordString (notation) | 将 PointGeometry 转换为所选的坐标系记法。 |
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 指明两个几何相交于较小形状类型的几何。 |
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 类型相同并在平面中定义了相同点集。 |
getGeohash (precision)
参数 | 说明 | 数据类型 |
precision | 将返回 PointGeometry 哈希字符串的精确长度。最小长度为 1,最大长度为 20。默认长度为 8。 (默认值为 8) | Integer |
数据类型 | 说明 |
String | getGeohash 将根据输入点几何经纬度坐标和精度长度返回 geohash 字符串。 |
为返回精确的 geohash,点几何的空间参考必须位于地理坐标系中。
import arcpy
# Spatial reference set to GCS_WGS_1984
spatial_reference = arcpy.SpatialReference(4326)
pnt = arcpy.Point(-88.236, 40.096)
pnt_geometry = arcpy.PointGeometry(pnt, spatial_reference)
print(pnt_geometry.getGeohash(6)) # dp1k05
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 | 按给定的角度(以度为单位)和距离(以米为单位)返回点。 |
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 | 生成的几何。 |
toCoordString (notation)
参数 | 说明 | 数据类型 |
notation | The coordinate system notation to be generated.
| None |
数据类型 | 说明 |
String | 指定坐标系记法中的点。 |
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 coordinate pairs
pointList = [[1, 2], [3, 5], [7, 3]]
# Create an empty Point object
point = arcpy.Point()
# A list to hold the PointGeometry objects
pointGeometryList = []
# For each coordinate pair, populate the Point object and create a new
# PointGeometry object
for pt in pointList:
point.X = pt[0]
point.Y = pt[1]
pointGeometry = arcpy.PointGeometry(point)
pointGeometryList.append(pointGeometry)
# Create a copy of the PointGeometry objects, by using pointGeometryList as
# input to the CopyFeatures tool.
arcpy.CopyFeatures_management(pointGeometryList, "c:/geometry/a.gdb/points")