Festlegen des Raumbezugs eines Cursors
Der Raumbezug für eine Feature-Class beschreibt das entsprechende Koordinatensystem, die räumliche Domäne und die Genauigkeit.
- Das Koordinatensystem ist analog zu einer Kartenprojektion (z. B. geographisch, universeller transversaler Mercator [UTM] und State Plane). Es definiert die mathematische Beziehung zwischen den gespeicherten Koordinaten und der tatsächlichen Position auf der Erde.
- Die räumliche Domäne wird am besten als der zulässige Koordinatenbereich für die XY-Koordinaten, M-Werte (Messwerte) und Z-Werte beschrieben.
- Die Auflösung beschreibt die Zahl der Systemeinheiten pro Maßeinheit.
Standardmäßig ist der Raumbezug der Geometrie, die von einem Such-Cursor zurückgegeben wurde, der gleiche wie die vom Cursor geöffnete Feature-Class. Sie können auch den Raumbezug zu einem Aktualisierungs- oder einem Einfüge-Cursor festlegen.
Wenn Sie den Raumbezug für einen Aktualisierungs- oder einem Einfüge-Cursor festlegen, deklarieren Sie den Raumbezug der Geometrien, die Sie mit dem Cursor schreiben möchten. Angenommen, Sie möchten Geometrien in eine Feature-Class einfügen, die in UTM-Koordinaten vorliegt. Sie lesen die Geometrien aus einer Textdatei, die State-Plane-Koordinaten enthält, und fügen sie in diese Feature-Class ein. Der Raumbezug der Feature-Class (UTM) ist anders als der Raumbezug der Geometrien, die Sie aus der Textdatei (State Plane) lesen. Wenn Sie den Einfüge-Cursor für die Feature-Class öffnen, setzen Sie den Raumbezug auf State Plane und deklarieren, dass die von Ihnen eingefügten Geometrien von State Plane in UTM konvertiert werden. Daher ist die einzige Situation, in der Sie den Raumbezug eines Einfüge- oder Aktualisierungs-Cursors festlegen müssen, wenn die von Ihnen geschriebenen Geometrien einen anderen Raumbezug haben als die Feature-Class des Cursors.
Bei einem Such-Cursor führt die Angabe eines Raumbezugs, der nicht dem Raumbezug der Cursor-Feature-Class entspricht, zu Geometrien, die in den Raumbezug des Cursors transformiert werden.
Das folgende Beispiel enthält eine Point-Feature-Class mit einem Koordinatensystem in der UTM-Zone 21 Nord, die in diesem Raumbezug definiert ist. Das Skript erstellt eine Textdatei mit den Koordinaten der Punkte in Dezimalgrad.
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()