PointGeometry
Краткая информация
Объект PointGeometry – это геометрия, которая не имеет ни длины, ни площади в заданном масштабе.
Обсуждение
Во многих рабочих процессах геообработки может потребоваться запустить определенную операцию, используя информацию о координатах и геометрии, при этом не желая проходить процесс создания нового (временного) класса пространственных объектов, отображения класса пространственных объектов с помощью курсоров, использования класса пространственных объектов, и последующего удаления временного класса пространственных объектов. Чтобы упростить геообработку, вместо этого в качестве входных и выходных данных можно использовать объекты геометрии. Объекты геометрии могут создаваться с нуля с использованием классов Geometry, Multipoint, PointGeometry, Polygon или Polyline.
В ходе создания геометрического объекта выполняется процесс упрощения, чтобы геометрия стала топологически согласованной в соответствии с выбранным типом. Например, он исправляет полигоны, которые могут быть самопересекающимися или содержать некорректные ориентации колец. Координаты могут быть смещены в рамках разрешения пространственной привязки геометрии.
Вместо геометрических методов можно использовать следующие операторы:
|
Оператор Python |
Геометрический метод |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Например, для объединения двух геометрических объектов, g3 = g1 | g2 является эквивалентом g3 = g1.union(g2).
Оператор + будет использовать тип геометрии (dimension) из первой геометрии для определения типа геометрии выходных данных.
Синтаксис
PointGeometry(inputs, {spatial_reference}, {has_z}, {has_m}, {has_id})
| Имя | Объяснение | Тип данных |
|---|---|---|
|
inputs |
A |
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 в виде строки. Подсказка:Возвращаемая строка может быть конвертирована в словарь с помощью функции |
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 (Только для чтения) |
Тип геометрии: |
String |
Методы
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 (Дополнительный) |
Specifies the method that will be used to measure distance.
(Значение по умолчанию — GEODESIC) |
String |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
tuple |
Возвращает кортеж углов (в градусах) и расстояния (в метрах) до другой точки. |
boundary()
Постройте границу геометрии.

Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Границей полигона является полилиния. Границей полилинии является мультиточка, соответствующая конечной точки линии. Границей точки или мультиточки является пустая точка или мультиточка. |
buffer(distance)
Постройте полигон на указанном расстоянии от геометрии.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
distance |
The buffer distance. The buffer distance is in the same units as the geometry that is being buffered. A negative distance can only be specified for a polygon geometry. |
Double |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Polygon |
Буферизованная полигональная геометрия. |
clip(envelope)
Строит пересечение геометрии и заданного экстента.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
envelope |
An |
Extent |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Выходная геометрия вырезается до указанного экстента. |
contains(second_geometry, {relation})
Указывает, содержит ли базовая геометрия геометрию сравнения.
Метод contains противоположен методу within.
На этом рисунке показаны только отношения True.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
second_geometry |
A second geometry. |
Object |
|
relation (Дополнительный) |
Specifies the spatial relationship type that will be used.
(Значение по умолчанию — None) |
String |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Boolean |
Возвращает, содержит ли данная геометрия вторую геометрию. |
convexHull()
Создает геометрию, представляющую собой минимальный ограничивающий полигон, все внешние углы которого выпуклые.

Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Итоговая геометрия. Выпуклая оболочка одной точки — это сама точка. |
crosses(second_geometry)
Указывает, пересекаются ли две геометрии в геометрии меньшего типа формы.
Две полилинии пересекаются, если у них есть только общие точки, по крайней мере одна из которых не является конечной точкой. Полилиния и полигон пересекаются, если они имеют общую полилинию или точку (для вертикальной линии) внутри полигона, которая не эквивалентна всей полилинии.
На этом рисунке показаны только отношения True.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
second_geometry |
A second geometry. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Boolean |
Возвращает, пересекаются ли две геометрии в геометрии меньшего типа формы. |
difference(other)
Постройте геометрию, состоящую только из региона, уникального для базовой геометрии, но не являющегося частью другой геометрии.
На следующем рисунке показаны результаты, когда красный полигон является исходной геометрией:

| Имя | Объяснение | Тип данных |
|---|---|---|
|
other |
A second geometry. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Итоговая геометрия. |
disjoint(second_geometry)
Определяет, имеют ли базовая и сравнительная геометрии общие точки.
Когда этот метод возвращает False, две геометрии пересекаются.
На этом рисунке показаны только отношения True.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
second_geometry |
A second geometry. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Boolean |
Возвращает, имеют ли две геометрии общие точки. |
distanceTo(other)
Возвращает минимальное расстояние между двумя геометриями. Расстояние измеряться в единицах системы координат геометрии. Если геометрии пересекаются, минимальное расстояние будет равно нулю.
Обе геометрии должны иметь одинаковую проекцию.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
other |
Вторая геометрия. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Double |
Расстояние между двумя геометриями. |
equals(second_geometry)
Указывает, имеют ли базовая и сравнительная геометрии один и тот же тип формы и определяют ли они один и тот же набор точек на плоскости. Это только 2D-сравнение; значения m и z игнорируются.
На этом рисунке показаны только отношения True.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
second_geometry |
A second geometry. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Boolean |
Возвращает, имеют ли две геометрии один и тот же тип формы и определяют ли они один и тот же набор точек на плоскости. |
getGeohash(precision)
Преобразует PointGeometry в координаты широты и долготы в географической системе координат в строку геохеша, точность которой определяется произвольной точностью в пределах ограничивающей рамки сетки геохеша.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
precision |
The precision length of the hash string that will be returned for the (Значение по умолчанию — 8) |
Integer |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
String |
Возвращает строку геохеша на основе координат широты и долготы входной геометрической точки, а также точности длины. |
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})
Возвращает объект Array из объектов Point для определенной части геометрии, если указан индекс. Если индекс не указан, возвращается объект Array, содержащий Array из Point объектов для каждой части геометрии.
Метод getPart эквивалентен индексированию объекта; то есть, obj.getPart(0) эквивалентен obj[0].
| Имя | Объяснение | Тип данных |
|---|---|---|
|
index (Дополнительный) |
The index position of the geometry. |
Integer |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Array |
Полученный в результате объект |
intersect(other, dimension)
Строит геометрию, являющуюся геометрическим пересечением двух входных геометрий. Для создания различных типов формы можно использовать разную размерность.
Пересечением двух геометрий с одинаковым типом формы будет геометрия, содержащая только перекрывающиеся области исходных геометрий.

Для ускорения процесса проверьте, не являются ли данные две геометрии disjoint перед вызовом intersect.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
other |
The second geometry. |
Object |
|
dimension |
Specifies the topological dimension (shape type) of the resulting geometry.
|
Integer |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Новая геометрия (точка, мультиточка, полилиния или полигон), являющаяся геометрическим пересечением двух входных геометрий. |
move({dx}, {dy}, {dz})
Перемещает геометрию на заданные расстояния вдоль осей x, y и z для создания новой геометрии.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
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)
Определяет, имеет ли пересечение двух геометрий тот же тип формы, что и одна из входных геометрий, и не является ли оно эквивалентным ни одной из входных геометрий.
На этом рисунке показаны только отношения True.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
second_geometry |
A second geometry. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Boolean |
Возвращает, имеет ли пересечение двух геометрий ту же размерность, что и одна из входных геометрий. |
pointFromAngleAndDistance(angle, distance, {method})
Возвращает точку при заданном угле в градусах и расстоянии в единицах пространственной привязки геометрии, с использованием определенного типа измерения.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
angle |
The angle in degrees to the returned point. |
Double |
|
distance |
The distance in the units of the geometry's spatial reference to the returned point. |
Double |
|
method (Дополнительный) |
Specifies the method that will be used to measure distance.
(Значение по умолчанию — GEODESIC) |
String |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
PointGeometry |
Возвращает точку при заданном угле и расстоянии в градусах и метрах. |
projectAs(spatial_reference, {transformation_name})
Проецирует геометрию из одной пространственной привязки в другую.
Когда геометрический объект и целевая пространственная привязка имеют различный датум, укажите значение параметра transformation_name. Подробнее см. Географические преобразования датума и ListTransformations.
Вертикальные преобразования могут быть выполнены, когда выполнены следующие условия:
У объекта есть z-координаты.
Пространственная привязка объекта и значения параметра
spatial_referenceимеют заданную вертикальную систему координат.Значение параметра
transformation_name- вертикальное преобразование.
Когда параметр transformation_name имеет значение вертикальное преобразование и ни геометрический объект ни целевая пространственная привязка не имеют заданной вертикальной системы координат, функция завершит работу с ошибкой и выдаст исключение ValueError.
Когда геометрический объект или значение параметра spatial_reference равно неизвестной системе координат, пространственная привязка выходной геометрии будет задана из значения параметра spatial_reference. Не рекомендуется использовать неизвестную систему координат для выполнения анализа.
Метод projectAs не изменяет m-значения, если они присутствовали.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
spatial_reference |
The spatial reference to which the geometry will be projected. The value can be a |
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})
Поворачивает геометрию вокруг указанного начала координат на число градусов, указанных в радианах.
Вращение применяется относительно начала координат, так что геометрия вращается вокруг начала координат. Положение повернутой геометрии существенно зависит от выбора начала координат.
Поворот не применяется к направлению z.
Ниже описываются возможные варианты начала координат и их влияние на выходные данные:
Начало координат находится вне геометрии (не внутри геометрии и не касается ее) - положение геометрии изменятся, но геометрия сохранит относительное положение по отношению к другим геометриям, повернутым таким же образом. Положения будут вращаться вокруг начала координат.

Начало координат является центроид геометрии (центроид находится внутри геометрии или касается ее) - Геометрия будет вращаться (крутиться) на месте вокруг своего центроида.

Начало координат - вершина геометрии - Геометрия будет вращаться вокруг выбранной вершины.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
origin (Дополнительный) |
The origin of the transformation. The argument can be either an The default origin, (Значение по умолчанию — 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})
Масштабирует геометрию из указанного источника с заданными коэффициентами по осям x, y и z для создания новой геометрии. Положение трансформированной точки (или вершины) определяется
\(( \space (x \space - \space origin_x) \space * \space scale_x \space + \space origin_x, \space (y \space - \space origin_y) \space * \space scale_y \space + \space origin_y, \space (z \space - \space origin_z) \space * \space scale_z \space + \space origin_z \space )\)
Преобразование применяется относительно начала координат, и начало координат остается неподвижным, в то время как геометрия расширяется или сжимается вокруг него. На положение и направление расширения или сжатия получаемой геометрии существенно влияет начало координат.
Ниже описываются возможные варианты начала координат и их влияние на выходные данные:
Начало координат находится вне геометрии (не внутри геометрии и не касается ее) - размер и положение геометрии изменятся, но геометрия сохранит относительное положение по отношению к другим геометриям, масштабированным таким же образом. Положения будут расширяться от исходной точки или сжиматься к ней.

Началом координат является центроид геометрии (если центроид находится внутри геометрии или касается ее) - размер геометрии изменится, но ее местоположение останется привязанным к центроиду. Геометрия будет увеличиваться или уменьшаться вокруг центроида.

Начало координат - вершина геометрии - размер геометрии изменится, но ее положение останется привязанным к выбранной вершине. Геометрия будет увеличиваться или уменьшаться по направлению к выбранной вершине.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
origin (Дополнительный) |
The origin of the transformation. The argument can be either an The default origin, (Значение по умолчанию — 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 |
A second geometry. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Итоговая геометрия. |
toCoordString(notation)
Конвертирует PointGeometry в заданную нотацию системы координат.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
notation |
The coordinate system notation to be generated.
|
None |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
String |
Точка в заданной нотации системы координат. |
touches(second_geometry)
Определяет, пересекаются ли границы геометрий.
Две геометрии соприкасаются, когда пересечение геометрий не пусто, но пересечение их внутренних частей пусто. Например, точка касается полилинии только в том случае, если она совпадает с одной из конечных точек полилинии.
На этом рисунке показаны только отношения True.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
second_geometry |
A second geometry. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Boolean |
Возвращает, пересекаются ли границы геометрий. |
union(other)
Создает геометрию, которая объединяет в себе множественность входных геометрий.
Эти две геометрии должны иметь одинаковый тип конфигурации.
В результате получается единая геометрия, представляющая собой сочетание обеих входных геометрий. Все, что находится в пределах любой из входных геометрий, будет частью полученного результата. Однако все, что является общим для обеих геометрий, будет присутствовать в этом результате только один раз.
Порядок входных геометрий никак не влияет на выходные данные.

| Имя | Объяснение | Тип данных |
|---|---|---|
|
other |
The second geometry. |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Итоговая геометрия. |
within(second_geometry, {relation})
Указывает, находится ли базовая геометрия в пределах геометрии сравнения.
Метод within является обратным оператором метода contains.
На этом рисунке показаны только отношения True.

Базовая геометрия находится внутри сравниваемой геометрии, если она является пересечением геометрий, и пересечение их внутренних частей не является пустым. Метод within представляет собой оператор Клементини, за исключением случая пустой базовой геометрии.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
second_geometry |
A second geometry. |
Object |
|
relation (Дополнительный) |
Specifies the spatial relationship type that will be used.
(Значение по умолчанию — None) |
String |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Boolean |
Возвращает, находится ли базовая геометрия в пределах геометрии сравнения. |
Пример кода
Создание класса точечных объектов с нуля.
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.management.CopyFeatures(features, "c:/geometry/f.gdb/points")