Краткая информация
Объект 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}, {has_id})
Параметр | Описание | Тип данных |
inputs | A Point object used to create the object. | Point |
spatial_reference | The spatial reference of the new geometry. (Значение по умолчанию — None) | SpatialReference |
has_z | Specifies whether the geometry will be z-enabled. (Значение по умолчанию — False) | Boolean |
has_m | Specifies whether the geometry will be m-enabled. (Значение по умолчанию — False) | Boolean |
has_id | Specifies whether the geometry will support point IDs. (Значение по умолчанию — False) | Boolean |
Свойства
Свойство | Описание | Тип данных |
JSON (только чтение) | ПрEsriедставление геометрии JSON в виде строки. Подсказка:Возвращаемая строка может быть конвертирована в словарь с помощью функции loads модуля json. | String |
WKB (только чтение) | Стандартное двоичное (well-known binary, WKB) представление для геометрии OGC. Это свойство обеспечивает портативное представление значения геометрии в виде непрерывного потока байтов. | Bytearray |
WKT (только чтение) | Стандартное текстовое (well-known text, WKT) представление для геометрии OGC. Это свойство обеспечивает портативное представление значения геометрии в виде текстовой строки. Любые истинные кривые в геометрии будут уплотнены в аппроксимируют кривые в строки WKT. | String |
area (только чтение) | Площадь объекта полигона. Эта область - ноль для всех остальных типов объектов. | Double |
centroid (только чтение) | Истинное положение центроида, если он расположен внутри объекта, иначе - точка надписи. | Point |
extent (чтение и запись) | Экстент геометрии. | Extent |
firstPoint (только чтение) | Первая точка координат геометрии. | Point |
hasCurves (только чтение) | Определяет, сдержит ли геометрия кривую. | Boolean |
hullRectangle (только чтение) | Строка пар координат прямоугольника, образующего выпуклую оболочку, разделенная пробелами. | String |
isMultipart (только чтение) | Определяет, содержит ли геометрия несколько частей. | Boolean |
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 (только чтение) | Тип геометрии: polygon, polyline, point или multipoint. | 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) | Возвращает минимальное расстояние между двумя геометриями. Расстояние измеряться в единицах системы координат геометрии. Если геометрии пересекаются, минимальное расстояние будет равно нулю. Обе геометрии должны иметь одинаковую проекцию. |
equals (second_geometry) | Указывает, имеют ли основная и сравнительная геометрии одинаковый тип формы и определяют ли они один и то же набор точек на плоскости. Сравнение производится только в 2D; значения M и Z не учитываются. На этом рисунке показаны только отношения True. |
getGeohash (precision) | Конвертирует координаты широты и долготы PointGeometry географической системы координат в строку geohash с произвольной точностью в пределах ограничивающей рамки в гриде geohash. |
getPart ({index}) | Возвращает объект Array из объектов Point для определенной части геометрии, если указан индекс. Если индекс не указан, возвращается объект Array, содержащий Array из Point объектов для каждой части геометрии. Метод getPart эквивалентен индексированию объекта; то есть, obj.getPart(0) эквивалентен obj[0]. |
intersect (other, dimension) | Строит геометрию, являющуюся геометрическим пересечением двух входных геометрий. Для создания различных типов формы можно использовать разную размерность. Пересечением двух геометрий с одинаковым типом формы будет геометрия, содержащая только перекрывающиеся области исходных геометрий. Для ускорения процесса проверьте, не являются ли данные две геометрии disjoint, перед вызовом intersect. |
move ({dx}, {dy}, {dz}) | Перемещает геометрию на заданные расстояния вдоль осей x, y и z для создания новой геометрии. |
overlaps (second_geometry) | Показывает, если пересечение двух геометрий имеет тот же тип формы, что и входная геометрия и не эквивалентно любой из входных геометрий. На этом рисунке показаны только отношения True. |
pointFromAngleAndDistance (angle, distance, {method}) | Возвращает точку при заданном угле в градусах и расстоянии в единицах пространственной привязки, с использованием определенного типа измерения. |
projectAs (spatial_reference, {transformation_name}) | Проецирует геометрию из одной пространственной привязки в другую. Когда геометрический объект и целевая пространственная привязка имеют различный датум, укажите значение параметра transformation_name. Подробнее см. Географические преобразования датума и ListTransformations. Вертикальные преобразования могут быть выполнены, когда выполнены следующие условия:
Когда параметр transformation_name имеет значение вертикальное преобразование и ни геометрический объект ни целевая пространственная привязка не имеют заданной вертикальной системы координат, функция завершит работу с ошибкой и выдаст исключение ValueError. Когда геометрический объект или значение параметра spatial_reference равно неизвестной системе координат, пространственная привязка выходной геометрии будет задана из значения параметра spatial_reference. Не рекомендуется использовать неизвестную систему координат для выполнения анализа. Метод projectAs не изменяет m-значения, если они присутствовали. |
rotate ({origin}, {rotation_angle}) | Поворачивает геометрию вокруг указанного начала координат на число градусов, указанных в радианах. Вращение применяется относительно начала координат, так что геометрия вращается вокруг начала координат. Положение повернутой геометрии существенно зависит от выбора начала координат. Поворот не применяется к направлению z. Ниже описываются возможные варианты начала координат и их влияние на выходные данные:
|
scale ({origin}, {sx}, {sy}, {sz}) | Масштабирует геометрию из указанного источника с заданными коэффициентами по осям x, y и z для создания новой геометрии. Положение трансформированной точки (или вершины) определяется
Преобразование применяется относительно начала координат, и начало координат остается неподвижным, в то время как геометрия расширяется или сжимается вокруг него. На положение и направление расширения или сжатия получаемой геометрии существенно влияет начало координат. Ниже описываются возможные варианты начала координат и их влияние на выходные данные:
|
symmetricDifference (other) | Строит геометрию, являющуюся геометрическим объединением двух геометрий с вычитанием пересечения этих геометрий. Обе входные геометрии должны быть одного типа. |
toCoordString (notation) | Конвертирует PointGeometry в заданную нотацию системы координат. |
touches (second_geometry) | Указывает на то, что границы геометрии пересекаются. Две геометрии соприкасаются, если пересечение геометрий не является пустым, а пересечение их внутренних частей пусто. Например, точка касается полилинии, только, если точка совпадает с одной из конечных точек полилинии. На этом рисунке показаны только отношения True. |
union (other) | Строит геометрию, являющуюся теоретико-множественным объединением входных геометрий. Обе объединяемые геометрии должны быть одного типа. |
within (second_geometry, {relation}) | Показывает, если базовая геометрия находится внутри сравнения геометрии. within является противоположностью оператора contains. На этом рисунке показаны только отношения True. Базовая геометрия находится внутри сравниваемой геометрии, если она является пересечением геометрий, и пересечение их внутренних частей не является пустым. within является оператором Клементини, за исключением случаев, когда базовая геометрия пуста. |
Методы
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) указывает на то, что обе эти геометрии имеют одинаковый тип формы и определяют один и тот же набор точек на плоскости. |
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 | Новая геометрия (точка, мультиточка, полилиния или полигон), являющаяся геометрическим пересечением двух входных геометрий. |
move ({dx}, {dy}, {dz})
Параметр | Описание | Тип данных |
dx | The distance the geometry will be moved along the x-axis. (Значение по умолчанию — 0.0) | Double |
dy | The distance the geometry will be moved along the y-axis. (Значение по умолчанию — 0.0) | Double |
dz | The distance the geometry will be moved along the z-axis. The geometry must be z-aware and have z-values. (Значение по умолчанию — 0.0) | Double |
Тип данных | Описание |
Geometry | Выходная геометрия, перемещенная на заданные расстояния вдоль осей x, y и z. |
overlaps (second_geometry)
Параметр | Описание | Тип данных |
second_geometry | Вторая геометрия. | Object |
Тип данных | Описание |
Boolean | Полученное логическое значение True указывает, что пересечение двух этих геометрий имеет такой же размер, как одна из входных геометрий. |
pointFromAngleAndDistance (angle, distance, {method})
Параметр | Описание | Тип данных |
angle | Угол поворота до возвращённой точки в градусах. | Double |
distance | Расстояние в единицах измерения пространственной привязки для возвращаемой точки. | Double |
method | На измерения PLANAR влияет проецирование географических данных на двухмерную поверхность (т.е. кривизна земной поверхности не учитывается). В качестве альтернативы можно выбрать типы измерений GEODESIC, GREAT_ELLIPTIC, LOXODROME или PRESERVE_SHAPE, если необходимо.
(Значение по умолчанию — GEODESIC) | String |
Тип данных | Описание |
PointGeometry | Возвращает точку при заданном угле и расстоянии в градусах и метрах. |
projectAs (spatial_reference, {transformation_name})
Параметр | Описание | Тип данных |
spatial_reference | The spatial reference to which the geometry will be projected. The value can be a SpatialReference object or the coordinate system name. | SpatialReference |
transformation_name | The geotransformation name. With ArcGIS Pro, if you do not specify a transformation, none will be applied. With ArcGIS Server, if you do not specify a transformation, a fallback transformation will be applied. | String |
Тип данных | Описание |
Object | Геометрия после проецирования. |
rotate ({origin}, {rotation_angle})
Параметр | Описание | Тип данных |
origin | The origin of the transformation. The argument can be either an arcpy.Point object or an arcpy.PointGeometry object. The default origin, arcpy.Point(0.0, 0.0), will usually be located outside the target geometry. (Значение по умолчанию — arcpy.Point(0.0, 0.0)) | Point |
rotation_angle | The angle, in radians, to rotate the geometry around its origin. The default rotation angle is 0.0 radians (no rotation). (Значение по умолчанию — 0.0) | Float |
Тип данных | Описание |
Geometry | Выходная геометрия, повернутая на указанный угол вокруг указанного начала координат. |
scale ({origin}, {sx}, {sy}, {sz})
Параметр | Описание | Тип данных |
origin | The origin of the transformation. The argument can be either an arcpy.Point object or an arcpy.PointGeometry object. The default origin, arcpy.Point(0.0, 0.0, 0.0), will usually be located outside the target geometry. (Значение по умолчанию — arcpy.Point(0.0, 0.0, 0.0)) | Point |
sx | The factor that will be used to scale the geometry along the x-axis. (Значение по умолчанию — 1.0) | Double |
sy | The factor that will be used to scale the geometry along the y-axis. (Значение по умолчанию — 1.0) | Double |
sz | The factor that will be used to scale the geometry along the z-axis. The geometry must be z-aware and have z-values. (Значение по умолчанию — 1.0) | Double |
Тип данных | Описание |
Geometry | Выходная геометрия масштабируется от указанного начала координат с заданными коэффициентами по осям x, y и z. |
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
# Create a spatial reference from a wkid
spatial_ref = arcpy.SpatialReference(32145)
# A list of coordinate pairs
feature_info = [[1, 2], [3, 5], [7, 3]]
# A list to hold the PointGeometry objects
features = []
# For each coordinate pair, create a PointGeometry object
for pt in feature_info:
point = arcpy.Point(*pt)
point_geometry = arcpy.PointGeometry(point, spatial_ref)
features.append(point_geometry)
# Persist a copy of the PointGeometry objects using CopyFeatures
arcpy.CopyFeatures_management(features, "c:/geometry/f.gdb/points")