Bei vielen Workflows der Geoverarbeitung möchten Sie eventuell bestimmte Vorgänge mit Koordinaten- und Geometriedaten ausführen, jedoch nicht unbedingt eine neue (temporäre) Feature-Class erstellen, diese mit Cursorn füllen, die Feature-Class verwenden und dann die vorläufige Feature-Class wieder löschen. Sie können anstelle von Eingabe und Ausgabe auch Geometrieobjekte verwenden und so die Geoverarbeitung vereinfachen. Geometrieobjekte können von Grund auf neu mit Geometry-, Multipoint-, PointGeometry-, Polygon- oder Polyline-Classes erstellt werden.
Verwenden von Geometrie als Eingabe
Im folgenden Beispiel wird mit einer Liste von X- und Y-Koordinaten ein Polygon-Geometrieobjekt erstellt. Dann wird das Werkzeug Ausschneiden verwendet, um eine Feature-Class mit dem Polygon-Geometrieobjekt auszuschneiden.
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')
Ausgeben von Geometrieobjekten
Ausgabegeometrieobjekte können erstellt werden, indem die Ausgabe eines Geoverarbeitungswerkzeugs auf ein leeres Geometrieobjekt festgelegt wird. Wenn ein Werkzeug ausgeführt wird, in dem ein leeres Geometrieobjekt festgelegt ist, gibt das Werkzeug eine Liste von Geometrieobjekten zurück. Im folgenden Beispiel wird das Werkzeug Features kopieren verwendet, um eine Liste von Geometrieobjekten zurückzugeben, die dann in einer Schleife durchlaufen werden kann, um die Gesamtlänge aller Features zu akkumulieren.
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))