Utilisation d'objets géométrie avec les outils de géotraitement

Dans de nombreux workflows de géotraitement, vous devez éventuellement exécuter une opération spécifique à l'aide d'informations sur les coordonnées et la géométrie, sans vouloir nécessairement créer une nouvelle classe d'entités (temporaire), la remplir avec des curseurs, l'utiliser, puis la supprimer. Les objets géométrie peuvent alors être utilisés en entrée et en sortie afin de simplifier le géotraitement. Les objets géométrie peuvent être entièrement créés à l'aide des classes Geometry, Multipoint, PointGeometry, Polygon ou Polyline.

Utilisation de géométrie en entrée

L'exemple suivant crée un objet géométrie surfacique à l'aide d'une liste de coordonnées XY. L'outil Découper permet alors de découper une classe d'entités avec l'objet géométrie surfacique.

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

Génération d'objets géométrie en sortie

Les objets géométrie en sortie peuvent être créés en définissant la sortie d'un outil de géotraitement sur un objet géométrie vide. Lors de l'exécution d'un outil en cas de définition sur un objet géométrie vide, l'outil retourne une liste d'objets géométrie. Dans l'exemple suivant, l'outil Copier des entités permet de retourner une liste d'objets géométrie, pouvant ensuite être parcourus par une boucle afin d'accumuler la longueur totale de toutes les entités.

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

Rubriques connexes


7/10/2012