Во многих рабочих потоках геообработки может потребоваться запустить определенную операцию, используя информацию о координатах и геометрии, при этом не желая проходить процесс создания нового (временного) класса пространственных объектов, отображения класса пространственных объектов с помощью курсоров, использования класса пространственных объектов, и последующего удаления временного класса пространственных объектов. Чтобы упростить геообработку, вместо этого в качестве входных и выходных данных можно использовать объекты геометрии. Объекты геометрии могут создаваться сначала, используя классы Geometry, Multipoint, PointGeometry, Polygon или Polyline.
Использование геометрии в качестве входных данных
Следующий пример иллюстрирует использование объекта геометрии полигона в качестве списка координат x,y. Затем используется инструмент Вырезание (Clip), чтобы вырезать класс пространственных объектов с объектом геометрии полигона.
import arcpy
# Create an Array object.
#
array = arcpy.Array()
# List of coordinates.
#
coordinates = [[1.0, 1.0], [1.0, 10.0], [10.0, 10.0], [10.0, 1.0]]
# For each coordinate set, create a point object and add the x- and
# y-coordinates to the point object, then add the point object
# to the array object.
#
for x, y in coordinates:
pnt = arcpy.Point(x, y)
array.add(pnt)
# Add in the first point of the array again to close the polygon boundary
#
array.add(array.getObject(0))
# Create a polygon geometry object using the array object
#
boundary = arcpy.Polygon(array)
# Use the geometry to clip an input feature class
#
arcpy.Clip_analysis('c:/data/rivers.shp', boundary, 'c:/data/rivers_clipped.shp')
Вывод объектов геометрии
Выходной объект геометрии можно создать, задав в качестве выхода инструмента геообработки пустой объект геометрии. При запуске инструмента с назначением пустого объекта геометрии инструмент возвращает список объектов геометрии. В следующем примере инструмент Копировать объекты (Copy Features) используется, чтобы вернуть список объектов геометрии, которые можно затем зациклить, чтобы накопить общую длину всех объектов.
import arcpy
# Run the CopyFeatures tool, setting the output to a geometry object.
# geometries is returned as a list of geometry objects.
#
geometries = arcpy.CopyFeatures_management('c:/temp/outlines.shp', arcpy.Geometry())
# Walk through each geometry, totaling the length
#
length = sum([g.length for g in geometries])
print('Total length: {}'.format(length))