Multipoint

Краткая информация

Объект Multipoint - это упорядоченный набор точек.

Обсуждение

Во многих рабочих процессах геообработки может потребоваться запустить определенную операцию, используя информацию о координатах и геометрии, при этом не желая проходить процесс создания нового (временного) класса пространственных объектов, отображения класса пространственных объектов с помощью курсоров, использования класса пространственных объектов, и последующего удаления временного класса пространственных объектов. Чтобы упростить геообработку, вместо этого в качестве входных и выходных данных можно использовать объекты геометрии. Объекты геометрии могут создаваться с нуля с использованием классов Geometry, Multipoint, PointGeometry, Polygon или Polyline.

В ходе создания геометрического объекта выполняется процесс упрощения, чтобы геометрия стала топологически согласованной в соответствии с выбранным типом. Например, он исправляет полигоны, которые могут быть самопересекающимися или содержать некорректные ориентации колец. Координаты могут быть смещены в рамках разрешения пространственной привязки геометрии.

Вместо геометрических методов можно использовать следующие операторы:

Оператор PythonГеометрический метод

+

intersect

|

union

-

difference

^

symmetricDifference

==

equals

!=

not equals

Например, для объединения двух геометрических объектов, g3 = g1 | g2 является эквивалентом g3 = g1.union(g2).

Оператор + будет использовать тип геометрии (dimension) из первой геометрии для определения типа геометрии выходных данных.

Синтаксис

 Multipoint (inputs, {spatial_reference}, {has_z}, {has_m}, {has_id})
ПараметрОписаниеТип данных
inputs

The coordinate information used to create the object. The data type can be Point or Array objects.

Object
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

Обзор метода

МетодОписание
boundary ()

Постройте границу геометрии.

Оператор границы

buffer (distance)

Постройте полигон на указанном расстоянии от геометрии.

Оператор буфера

clip (envelope)

Строит пересечение геометрии и заданного экстента.

Оператор Clip
contains (second_geometry, {relation})

Указывает, содержит ли базовая геометрия геометрию сравнения.

Метод contains противоположен методу within.

На этом рисунке показаны только отношения True.

Возможно содержит отношения

convexHull ()

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

Оператор ConvexHull

crosses (second_geometry)

Указывает, пересекаются ли две геометрии в геометрии меньшего типа формы.

Две полилинии пересекаются, если у них есть только общие точки, по крайней мере одна из которых не является конечной точкой. Полилиния и полигон пересекаются, если они имеют общую полилинию или точку (для вертикальной линии) внутри полигона, которая не эквивалентна всей полилинии.

На этом рисунке показаны только отношения True.

Возможные перекрестные отношения

cut (cutter)

Разделите геометрию на части слева и справа от разрезающей полилинии.

Когда полилиния или многоугольник разрезаны, они разбиваются в месте пересечения с разрезающей полилинией. Каждая часть классифицируется как левая или правая от разрезающей. Эта классификация основана на ориентации разрезающей линии. Части целевой полилинии, которые не пересекают разрезающую полилинию, возвращаются как правая часть результата для этой входной полилинии. Если геометрия не разрезана, левая геометрия будет пустой (None).

Оператор разрезания

difference (other)

Постройте геометрию, состоящую только из региона, уникального для базовой геометрии, но не являющегося частью другой геометрии.

На следующем рисунке показаны результаты, когда красный полигон является исходной геометрией:

Оператор Разности

disjoint (second_geometry)

Определяет, имеют ли базовая и сравнительная геометрии общие точки.

Когда этот метод возвращает False, две геометрии пересекаются.

На этом рисунке показаны только отношения True.

Возможные непересекающиеся отношения

distanceTo (other)

Возвращает минимальное расстояние между двумя геометриями. Расстояние измеряться в единицах системы координат геометрии. Если геометрии пересекаются, минимальное расстояние будет равно нулю.

Обе геометрии должны иметь одинаковую проекцию.

equals (second_geometry)

Указывает, имеют ли базовая и сравнительная геометрии один и тот же тип формы и определяют ли они один и тот же набор точек на плоскости. Это только 2D-сравнение; значения m и z игнорируются.

На этом рисунке показаны только отношения True.

Возможные равные отношения

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.

Возможные отношения наложений

projectAs (spatial_reference, {transformation_name})

Проецирует геометрию из одной пространственной привязки в другую.

Когда геометрический объект и целевая пространственная привязка имеют различный датум, укажите значение параметра transformation_name. Подробнее см. Географические преобразования датума и ListTransformations.

Вертикальные преобразования могут быть выполнены, когда выполнены следующие условия:

  • У объекта есть z-координаты.
  • Пространственная привязка объекта и значения параметра spatial_reference имеют заданную вертикальную систему координат.
  • Значение параметра transformation_name - вертикальное преобразование.

Когда параметр transformation_name имеет значение вертикальное преобразование и ни геометрический объект ни целевая пространственная привязка не имеют заданной вертикальной системы координат, функция завершит работу с ошибкой и выдаст исключение ValueError.

Когда геометрический объект или значение параметра spatial_reference равно неизвестной системе координат, пространственная привязка выходной геометрии будет задана из значения параметра spatial_reference. Не рекомендуется использовать неизвестную систему координат для выполнения анализа.

Метод projectAs не изменяет m-значения, если они присутствовали.

rotate ({origin}, {rotation_angle})

Поворачивает геометрию вокруг указанного начала координат на число градусов, указанных в радианах.

Вращение применяется относительно начала координат, так что геометрия вращается вокруг начала координат. Положение повернутой геометрии существенно зависит от выбора начала координат.

Поворот не применяется к направлению z.

Ниже описываются возможные варианты начала координат и их влияние на выходные данные:

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

    Начало координат находится вне геометрии

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

    Начало координат - центроид геометрии

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

    Начало координат - вершина геометрии

scale ({origin}, {sx}, {sy}, {sz})

Масштабирует геометрию из указанного источника с заданными коэффициентами по осям x, y и z для создания новой геометрии. Положение трансформированной точки (или вершины) определяется

( (x - origin_x) * scale_x + origin_x, (y - origin_y) * scale_y + origin_y, (z - origin_z) * scale_z + origin_z )

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

Ниже описываются возможные варианты начала координат и их влияние на выходные данные:

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

    Начало координат находится вне геометрии

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

    Начало координат - центроид геометрии

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

    Начало координат - вершина геометрии

symmetricDifference (other)

Строит геометрию, представляющую собой объединение двух геометрий за вычетом пересечения этих геометрий.

Эти две входные геометрии должны иметь одинаковый тип конфигурации.

Оператор symmetricDifference

touches (second_geometry)

Определяет, пересекаются ли границы геометрий.

Две геометрии соприкасаются, когда пересечение геометрий не пусто, но пересечение их внутренних частей пусто. Например, точка касается полилинии только в том случае, если она совпадает с одной из конечных точек полилинии.

На этом рисунке показаны только отношения True.

Возможные отношения касаний

union (other)

Создает геометрию, которая объединяет в себе множественность входных геометрий.

Эти две геометрии должны иметь одинаковый тип конфигурации.

В результате получается единая геометрия, представляющая собой сочетание обеих входных геометрий. Все, что находится в пределах любой из входных геометрий, будет частью полученного результата. Однако все, что является общим для обеих геометрий, будет присутствовать в этом результате только один раз.

Порядок входных геометрий никак не влияет на выходные данные.

Оператор объединения

within (second_geometry, {relation})

Указывает, находится ли базовая геометрия в пределах геометрии сравнения.

Метод within является обратным оператором метода contains.

На этом рисунке показаны только отношения True.

Возможные отношения "в пределах"

Базовая геометрия находится внутри сравниваемой геометрии, если она является пересечением геометрий, и пересечение их внутренних частей не является пустым. Метод within представляет собой оператор Клементини, за исключением случая пустой базовой геометрии.

Методы

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 used to define the clip extent.

Extent
Возвращаемое значение
Тип данныхОписание
Object

Выходная геометрия вырезается до указанного экстента.

contains (second_geometry, {relation})
ПараметрОписаниеТип данных
second_geometry

A second geometry.

Object
relation

Specifies the spatial relationship type that will be used.

  • BOUNDARYThe relationship has no restrictions for interiors or boundaries.
  • CLEMENTINI Interiors of geometries must intersect. This option is equivalent to specifying None. This is the default.
  • PROPER Boundaries of geometries must not intersect.

(Значение по умолчанию — None)

String
Возвращаемое значение
Тип данныхОписание
Boolean

Возвращает, содержит ли данная геометрия вторую геометрию.

convexHull ()
Возвращаемое значение
Тип данныхОписание
Object

Итоговая геометрия. Выпуклая оболочка одной точки — это сама точка.

crosses (second_geometry)
ПараметрОписаниеТип данных
second_geometry

A second geometry.

Object
Возвращаемое значение
Тип данныхОписание
Boolean

Возвращает, пересекаются ли две геометрии в геометрии меньшего типа формы.

cut (cutter)
ПараметрОписаниеТип данных
cutter

The cutting polyline geometry.

PolyLine
Возвращаемое значение
Тип данныхОписание
Geometry

Список из двух геометрий.

difference (other)
ПараметрОписаниеТип данных
other

A second geometry.

Object
Возвращаемое значение
Тип данныхОписание
Object

Итоговая геометрия.

disjoint (second_geometry)
ПараметрОписаниеТип данных
second_geometry

A second geometry.

Object
Возвращаемое значение
Тип данныхОписание
Boolean

Возвращает, имеют ли две геометрии общие точки.

distanceTo (other)
ПараметрОписаниеТип данных
other

Вторая геометрия.

Object
Возвращаемое значение
Тип данныхОписание
Double

Расстояние между двумя геометриями.

equals (second_geometry)
ПараметрОписаниеТип данных
second_geometry

A second geometry.

Object
Возвращаемое значение
Тип данныхОписание
Boolean

Возвращает, имеют ли две геометрии один и тот же тип формы и определяют ли они один и тот же набор точек на плоскости.

getPart ({index})
ПараметрОписаниеТип данных
index

The index position of the geometry.

Integer
Возвращаемое значение
Тип данныхОписание
Array

Полученный в результате объект Array.

intersect (other, dimension)
ПараметрОписаниеТип данных
other

The second geometry.

Object
dimension

Specifies the topological dimension (shape type) of the resulting geometry.

  • 1The geometry will be a zero-dimensional geometry (point or multipoint).
  • 2The geometry will be a one-dimensional geometry (polyline).
  • 4The geometry will be a two-dimensional geometry (polygon).
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

A second geometry.

Object
Возвращаемое значение
Тип данныхОписание
Boolean

Возвращает, имеет ли пересечение двух геометрий ту же размерность, что и одна из входных геометрий.

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

A second geometry.

Object
Возвращаемое значение
Тип данныхОписание
Object

Итоговая геометрия.

touches (second_geometry)
ПараметрОписаниеТип данных
second_geometry

A second geometry.

Object
Возвращаемое значение
Тип данныхОписание
Boolean

Возвращает, пересекаются ли границы геометрий.

union (other)
ПараметрОписаниеТип данных
other

The second geometry.

Object
Возвращаемое значение
Тип данныхОписание
Object

Итоговая геометрия.

within (second_geometry, {relation})
ПараметрОписаниеТип данных
second_geometry

A second geometry.

Object
relation

Specifies the spatial relationship type that will be used.

  • BOUNDARYThe relationship has no restrictions for interiors or boundaries.
  • CLEMENTINI Interiors of geometries must intersect. This option is equivalent to specifying None. This is the default.
  • PROPER Boundaries of geometries must not intersect.

(Значение по умолчанию — None)

String
Возвращаемое значение
Тип данныхОписание
Boolean

Возвращает, находится ли базовая геометрия в пределах геометрии сравнения.

Пример кода

Multipoint, пример

Создание класса мультиточечных объектов с нуля.

import arcpy

# Create a spatial reference from a wkid
spatial_ref = arcpy.SpatialReference(32145)

# A list of features and coordinate pairs
feature_info = [[[1, 2], [2, 4], [3, 7]],
                [[6, 8], [5, 7], [7, 2], [9, 5]]]

# A list that will hold each of the Multipoint objects
features = []

# Create Multipoint objects from an array of points
for feature in feature_info:
    array = arcpy.Array([arcpy.Point(*coords) for coords in feature])
    multipoint = arcpy.Multipoint(array, spatial_ref)
    features.append(multipoint)

# Persist a copy of the Multipoint objects using CopyFeatures
arcpy.management.CopyFeatures(features, "c:/geometry/multipoints.shp")

Связанные разделы