Verwenden von Geometrieobjekten mit Geoverarbeitungswerkzeugen

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
# List of coordinates.
coordinates = [
    [2365000, 7355000],
    [2365000, 7455000],
    [2465000, 7455000],
    [2465000, 7355000]]
# Create an array with a point object for each coordinate pair
array = arcpy.Array([arcpy.Point(x, y) for x, y in coordinates])
# Create a polygon geometry object using the array object
boundary = arcpy.Polygon(array, arcpy.SpatialReference(2953))
# 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))