來自: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))