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 con el fin de facilitar el geoprocesamiento. Los objetos de geometría se pueden crear desde cero usando 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.
#
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')
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
# 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))