Краткая информация
Объекты геометрии задают пространственное расположение и связанную геометрическую форму.
Обсуждение
Во многих рабочих процессах геообработки может потребоваться запустить определенную операцию, используя информацию о координатах и геометрии, при этом не желая проходить процесс создания нового (временного) класса пространственных объектов, отображения класса пространственных объектов с помощью курсоров, использования класса пространственных объектов, и последующего удаления временного класса пространственных объектов. Чтобы упростить геообработку, вместо этого в качестве входных и выходных данных можно использовать объекты геометрии. Объекты геометрии могут создаваться сначала, используя классы Geometry, Multipoint, PointGeometry, Polygon, или Polyline.
В ходе создания геометрического объекта выполняется процесс упрощения, чтобы геометрия стала топологически согласованной в соответствии с выбранным типом. Например, он исправляет полигоны, которые могут быть самопересекающимися или содержать некорректные ориентации колец. Координаты могут быть смещены в рамках разрешения пространственной привязки геометрии.
Синтаксис
Geometry (geometry, inputs, {spatial_reference}, {has_z}, {has_m})
Параметр | Описание | Тип данных |
geometry | Тип геометрии: точка, полигон, полилиния или мультиточка. | String |
inputs | Координаты, используемые для создания объекта. Тип данных может быть Point или Array объектов. | Object |
spatial_reference | Пространственная привязка новой геометрии. (Значение по умолчанию — None) | SpatialReference |
has_z | Статус Z: True для геометрии, если Z используются, и False – если нет. (Значение по умолчанию — False) | Boolean |
has_m | Статус M: True для геометрии, если M используются, и False– если нет. (Значение по умолчанию — False) | Boolean |
Свойства
Свойство | Описание | Тип данных |
JSON (только чтение) | Возвращает представление геометрии Esri JSON в виде строки. Подсказка:Возвращаемая строка может быть конвертирована в словарь с помощью функции loads модуля json. | String |
WKB (только чтение) | Возвращает WKB-представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде непрерывного потока байтов. | Bytearray |
WKT (только чтение) | Возвращает WKT-представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде текстовой строки. Любые истинные кривые в геометрии будут уплотнены в аппроксимируют кривые в строки 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. |
cut (cutter) | Разбивает эту геометрию на части слева от режущей полилинии и справа от нее. При разрезании полилиния или полигон разбивается в месте пересечения с режущей полилинией. Каждая часть классифицируется как слева или справа от режущей линии. Данная классификация опирается на ориентацию режущей линии. Части целевой полилинии, которые не пересекают разрезающую полилинию, возвращаются как часть справа от результата для входной полилинии. Если геометрия не разрезается, то геометрия слева будет пустой (None). |
densify (type, distance, {deviation}) | Создает новую геометрию с добавленными вершинами. |
difference (other) | Выстраивает геометрию, состоящую из региона, уникального для базовой геометрии, но не являющуюся частью другой геометрии. Ниже иллюстрируются результаты, где красный полигон является исходной геометрией. |
disjoint (second_geometry) | Указывает, что базовая и сопоставляемая геометрия не имеют общих точек. Две геометрии пересекаются, если disjoint возвращает False. На этом рисунке показаны только отношения True. |
distanceTo (other) | Возвращает минимальное расстояние между двумя геометриями. Расстояние измеряться в единицах системы координат геометрии. Если геометрии пересекаются, минимальное расстояние будет равно нулю. Обе геометрии должны иметь одинаковую проекцию. |
equals (second_geometry) | Указывает, имеют ли основная и сравнительная геометрии одинаковый тип формы и определяют ли они один и то же набор точек на плоскости. Сравнение производится только в 2D; значения M и Z не учитываются. На этом рисунке показаны только отношения True. |
generalize (max_offset) | Создает новую упрощенную геометрию, используя заданное значение максимального допуска смещения. |
getArea ({type}, {units}) | Возвращает площадь пространственного объекта, определяемую по типу измерения. |
getLength ({measurement_type}, {units}) | Возвращает длину пространственного объекта, определяемую по типу измерения. |
getPart ({index}) | Возвращает объект Array из объектов Point для определенной части геометрии, если указан индекс. Если индекс не указан, возвращается объект Array, содержащий Array из Point объектов для каждой части геометрии. Метод getPart эквивалентен индексированию объекта; то есть, obj.getPart(0) эквивалентен obj[0]. |
intersect (other, dimension) | Строит геометрию, являющуюся геометрическим пересечением двух входных геометрий. Для создания различных типов формы можно использовать разную размерность. Пересечением двух геометрий с одинаковым типом формы будет геометрия, содержащая только перекрывающиеся области исходных геометрий. Для ускорения процесса проверьте, не являются ли данные две геометрии disjoint, перед вызовом intersect. |
measureOnLine (in_point, {use_percentage}) | Возвращает измерение расстояния от начальной точки этой линии до in_point. |
overlaps (second_geometry) | Показывает, если пересечение двух геометрий имеет тот же тип формы, что и входная геометрия и не эквивалентно любой из входных геометрий. На этом рисунке показаны только отношения True. |
pointFromAngleAndDistance (angle, distance, {method}) | Возвращает точку при заданном угле в градусах и расстоянии в единицах пространственной привязки, с использованием определенного типа измерения. |
positionAlongLine (value, {use_percentage}, {geodesic}) | Возвращает точку на линии, расположенную на заданном расстоянии от ее начала. |
projectAs (spatial_reference, {transformation_name}) | Проецирует геометрию и при необходимости применяет географическую трансформацию. Для проецирования геометрия должна иметь пространственную привязку, а не неизвестную систему координат. Новая система пространственной привязки, переданная методу, определяет выходную систему координат. Если какая-либо пространственная привязка неизвестна, координаты не будут изменены. Значение z и m не меняются методом projectAs. |
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) | Строит геометрию, являющуюся геометрическим объединением двух геометрий с вычитанием пересечения этих геометрий. Обе входные геометрии должны быть одного типа. |
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 указывает пересечение двух геометрий в геометрии меньшего типы формы. |
cut (cutter)
Параметр | Описание | Тип данных |
cutter | Геометрия разрезающей полилинии | PolyLine |
Тип данных | Описание |
Geometry | Перечень двух геометрий |
densify (type, distance, {deviation})
Параметр | Описание | Тип данных |
type | Тип сгущения, DISTANCE, ANGLE или GEODESIC.
| String |
distance | Максимальное расстояние между вершинами. Фактическое расстояние между вершинами, как правило, будет меньше, чем максимальное расстояние, так как новые вершины будут равномерно распределены вдоль первоначального сегмента. При использовании type для DISTANCE или ANGLE, расстояние будет измеряться в единицах измерения системы координат геометрии. При использовании type для GEODESIC, расстояние будет измеряться в метрах. | Double |
deviation | Уплотнение использует прямые линии для аппроксимации кривых. Вы используете deviation для контроля точности данной аппроксимации. Отклонение - это максимальное расстояние между новым сегментом и исходной кривой. Чем меньше значение, тем больше сегментов потребуется для аппроксимации кривой. При использовании type для DISTANCE, отклонение будет измеряться в единицах измерения системы координат геометрии. При использовании type для ANGLE, отклонение будет измеряться в радианах. При использовании type для GEODESIC, отклонение не используется. | 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) указывает на то, что обе эти геометрии имеют одинаковый тип формы и определяют один и тот же набор точек на плоскости. |
generalize (max_offset)
Параметр | Описание | Тип данных |
max_offset | Максимальный допуск смещения. | Double |
Тип данных | Описание |
Geometry | Упрощенная геометрия. |
getArea ({type}, {units})
Параметр | Описание | Тип данных |
type | The method used to measure area.
(Значение по умолчанию — GEODESIC) | String |
units | The units in which the area will be calculated.
| String |
Тип данных | Описание |
Double | Площадь объекта. По умолчанию в системах координат проекции площадь возвращается в единицах системы координат, а для географических систем координат площадь возвращается в квадратных метрах. |
getLength ({measurement_type}, {units})
Параметр | Описание | Тип данных |
measurement_type | The method used to measure length.
(Значение по умолчанию — GEODESIC) | String |
units | The units in which the length will be calculated.
| String |
Тип данных | Описание |
Double | Длина объекта. По умолчанию в системах координат проекции длина возвращается в единицах системы координат, а для географических систем координат длина возвращается в квадратных метрах. |
getPart ({index})
Параметр | Описание | Тип данных |
index | The index position of the geometry. | Integer |
Тип данных | Описание |
Array | Полученный в результате объект Array. |
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 влияет проецирование географических данных на двухмерную поверхность (т.е. кривизна земной поверхности не учитывается). В качестве альтернативы можно выбрать типы измерений GEODESIC, GREAT_ELLIPTIC, LOXODROME или PRESERVE_SHAPE, если необходимо.
(Значение по умолчанию — GEODESIC) | String |
Тип данных | Описание |
PointGeometry | Возвращает точку при заданном угле и расстоянии в градусах и метрах. |
positionAlongLine (value, {use_percentage}, {geodesic})
Параметр | Описание | Тип данных |
value | The distance along the line. If the distance is less than zero, the starting point of the line will be returned; if the distance is greater than the length of the line, the endpoint of the line will be returned. | Double |
use_percentage | Specifies whether the distance is specified as a fixed unit of measure or a ratio of the length of the line. If True, value is used as a percentage; if False, value is used as a distance. For percentages, the value should be expressed as a double from 0.0 (0 percent) to 1.0 (100 percent). (Значение по умолчанию — False) | Boolean |
geodesic | Specifies whether the distance measure is geodesic or planar. If True, the distance measure is treated as geodesic; if False, the distance measure is treated as planar. (Значение по умолчанию — False) | Boolean |
Тип данных | Описание |
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 | Геометрия после проецирования. |
queryPointAndDistance (in_point, {as_percentage})
Параметр | Описание | Тип данных |
in_point | Входная точка (PointGeometry или Point). | PointGeometry |
as_percentage | Если False, измерение возвращается как расстояние; если True, измерение возвращается в процентном отношении. (Значение по умолчанию — False) | Boolean |
Тип данных | Описание |
tuple | Возвращает кортеж (tuple), включающий следующее:
|
segmentAlongLine (start_measure, end_measure, {use_percentage})
Параметр | Описание | Тип данных |
start_measure | Начальное расстояние от начала линии. | Double |
end_measure | Конечное расстояние от начала линии. | Double |
use_percentage | Начальное и конечное измерения можно указать как в фиксированных единицах измерения, так и в виде отношения. Если значение равно True, то start_measure и end_measure используются как проценты; если значение равно False, то start_measure и end_measure используются как расстояние. Для обозначения процентов измерения должны быть выражены числами двойной точности (double) в диапазоне от 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))