Использование объектов геометрии с инструментами геообработки

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

Использование геометрии в качестве входных данных

Следующий пример иллюстрирует использование объекта геометрии полигона в качестве списка координат x,y. Затем используется инструмент Вырезание (Clip), чтобы вырезать класс пространственных объектов с объектом геометрии полигона.

import arcpy

# Create an Array object.
#
array = arcpy.Array()

# List of coordinates.
#
coordList = ['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 coordPair in coordList:
    x, y = coordPair.split(";")
    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
#
boundaryPolygon = arcpy.Polygon(array)

# Use the geometry to clip an input feature class
#
arcpy.Clip_analysis("c:/data/rivers.shp", boundaryPolygon, "c:/data/rivers_clipped.shp")

Вывод объектов геометрии

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

import arcpy

# Create an empty Geometry object
#
g = arcpy.Geometry()

# Run the CopyFeatures tool, setting the output to the geometry object.  GeometryList
#  is returned as a list of geometry objects.
#  
geometryList = arcpy.CopyFeatures_management("c:/temp/outlines.shp", g)

# Walk through each geometry, totaling the length
#
length = 0
for geometry in geometryList:
    length += geometry.length

print "Total length: %f" % length

Связанные темы

5/10/2014