Utilizar objetos de geometría con herramientas de geoprocesamiento

En muchos flujos de trabajo de geoprocesamiento, puede que necesite ejecutar una operación concreta utilizando información de coordenadas y geometría, pero que no necesariamente desee pasar por el proceso de crear una nueva clase de entidad (temporal), llenar la clase de entidad con cursores, utilizar la clase de entidad y, a continuación, eliminar la clase de entidad temporal. En su lugar, puede utilizar objetos de geometría tanto para la entrada como para la salida, para simplificar el geoprocesamiento. Los objetos de geometría se pueden crear utilizando clases Geometry, Multipoint, PointGeometry, Polygon o Polyline .

Utilizar geometría como entrada

En el siguiente ejemplo se crea un objeto de geometría de polígono utilizando una lista de coordenadas x,y. A continuación, se utiliza la herramienta Clip para recortar una clase de entidad con el objeto de geometría de polígono.

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")

Generar objetos de geometría

Los objetos de geometría de salida se pueden crear estableciendo el resultado de una herramienta de geoprocesamiento en un objeto de geometría vacío. Cuando se ejecuta una herramienta establecida en un objeto de geometría vacío, la herramienta devuelve una lista de objetos de geometría. En el siguiente ejemplo, se utiliza la herramienta Copy Features para devolver una lista de objetos de geometría, que a continuación se puede recorrer para acumular la longitud total de todas las entidades.

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

Temas relacionados

9/11/2013