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

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

Ausgeben von Geometrieobjekten

Ausgabegeometrieobjekte können erstellt werden, indem die Ausgabe eines Geoverarbeitungswerkzeugs auf ein leeres Geometrieobjekt festgelegt wird. Wenn ein Werkzeug, das auf ein leeres Geometrieobjekt festgelegt ist, ausgeführt wird, 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

# 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

Verwandte Themen


7/10/2012