Définition de la référence spatiale d'un curseur

La référence spatiale d'une classe d'entités décrit son système de coordonnées, son domaine spatial et sa précision.

Par défaut, la référence spatiale de la géométrie retournée par un curseur de recherche est la même que celle de la classe d'entités ouverte par le curseur. Vous pouvez également définir la référence spatiale sur un curseur de mise à jour ou d'insertion.

Lorsque vous définissez la référence spatiale sur un curseur de mise à jour ou d'insertion, vous déclarez la référence spatiale des géométries que vous allez enregistrer avec le curseur. Par exemple, supposons que vous insérez des géométries dans une classe d'entités en coordonnées UTM. Vous lisez des géométries dans un fichier texte contenant des coordonnées de plan d'état et vous les insérez dans cette classe d'entités. La référence spatiale de la classe d'entités (UTM) est différente de celle des géométries lues dans le fichier texte (plan d'état). Lorsque vous ouvrez le curseur d'insertion sur la classe d'entités, vous définissez sa référence spatiale sur le plan d'état, en déclarant que vous souhaitez la conversion des géométries insérées de plan d'état en UTM. Par conséquent, vous devez définir la référence spatiale sur un curseur d'insertion ou de mise à jour uniquement lorsque les géométries enregistrées figurent dans une référence spatiale différente de celle de la classe d'entités du curseur.

Dans le cas d'un curseur de recherche, la spécification d'une référence spatiale différente de celle de la classe d'entités du curseur permet de transformer les géométries dans la référence spatiale du curseur.

L'exemple suivant présente une classe d'entités ponctuelles avec un système de coordonnées UTM zone 21 Nord défini dans sa référence spatiale. Le script crée un fichier texte dont les coordonnées de points sont exprimées en degrés décimaux.

import arcpy

# Describe a feature class with a geographic coordinate system
#
desc = arcpy.Describe("d:/base/data.gdb/latlongbnd")

# Create search cursor. Use the spatial reference object from the
#   described feature class so geometries are returned in decimal degrees.
#
rows = arcpy.da.SearchCursor("d:/base/data.gdb/buildings", ["SHAPE@"], 
                             spatial_reference=desc.spatialReference)

# Open the file for output. This also creates the file if it does not exist.
#
out = open(arcpy.GetParameterAsText(0), "w")

# Print the coordinates of each building point feature
#
for row in rows:
    # Get the geometry's point object.
    #
    pnt = row[0].getPart()

    # Write the x,y coordinate to the output file
    #
    out.write(pnt.X + ";" + pnt.Y + "\n")

# Close the output file
#
out.close()

Thèmes connexes

9/12/2013