Berechnen von XY-Koordinaten in Dezimalgraden aus dem projizierten Datensatz in Modell oder Skript?

8

Ist es möglich, Punkt-XY-Koordinaten in Dezimalgraden im Modell oder Skript zu berechnen, wenn sich eine Feature-Class im projizierten Koordinatensystem befindet?

Es ist einfach, wenn sich ein FC im geografischen Koordinatensystem befindet:

  • mit dem Werkzeug XY-Koordinaten hinzufügen oder
  • mit Python-Ausdruck zB. !shape.extent.XMax!

Ich habe festgestellt, dass die Flächen- und Längeneigenschaften des Geometriefelds mit dem Schlüsselwort zur Konvertierung von Geometrieeinheiten geändert werden können. Für lineare Maßeinheiten kann man @DECIMALDEGREES verwenden.
Leider !shape.extent.XMax@decimaldegrees!funktioniert es nicht, da XMax keine Länge ist.

In der Funktion "Geometrie berechnen" (Zugriff mit der rechten Maustaste) besteht die Möglichkeit, den Ausgabetyp "Dezimalgrad" auch für die projizierte Feature-Class auszuwählen.
Kann ich dies mit ArcPy tun?


Hier ist ein Code-Snippet, das auf der Lösung von iRfAn basiert:

import arcpy, os
projectedFC = r"C:\tmp\test.gdb\points01_Projected"
prjFile = os.path.join(arcpy.GetInstallInfo()["InstallDir"],
            r"Coordinate Systems\Geographic Coordinate Systems\World\WGS 1984.prj")
spatialRef = arcpy.SpatialReference(prjFile)

updCursor = arcpy.UpdateCursor(projectedFC,"", spatialRef)
for row in updCursor:
    pnt = row.Shape.getPart(0)
    row.X = pnt.X
    row.Y = pnt.Y
    updCursor.updateRow(row)

del updCursor, row
Marcin
quelle
Ist es notwendig, die XY-Punkte in einem projizierten CS zu behalten?
Roy
@ Roy: Ja, ich möchte eine Feature-Class in projiziertem CS beibehalten, aber Dezimalgrade berechnen.
Marcin

Antworten:

4

Ich glaube du kannst.

Definieren Sie einfach die Raumreferenz in WGS-84 und verwenden Sie den Cursor mit dieser Raumreferenz.

Koordinaten werden in der bereitgestellten räumlichen Referenz angegeben und im laufenden Betrieb in das Koordinatensystem des Datensatzes konvertiert.

Weitere Details finden Sie hier .

iRfAn
quelle
Sie können es so machen. Aus dem SHAPEFeld erhalten Sie ein Punktgeometrieobjekt, aus dem Sie die X- und Y-Koordinaten abrufen können.
om_henners
2

Ich bin mir bei einem Skript nicht sicher, aber ich habe dies mit Model Builder etwas automatisiert erreicht: Importieren Sie Ihre xy-Koordinaten und projizieren Sie sie in WGS 1984. Fügen Sie dann Felder hinzu und berechnen Sie die Geometrie der Punkte in Dezimalgraden. Bringen Sie dann Ihre XY-Punkte zurück in das ursprüngliche Koordinatensystem.

mburkenysdot
quelle
Es ist ein langer Weg, ich werde lieber den Cursor verwenden und WGS-84 als räumliche Referenz verwenden und berechnen. Keine Notwendigkeit, neu zu projizieren und danach zu verbinden.
iRfAn
@mburkenysdot: Dies ist eine gute Problemumgehung, wenn jemand kein Skript verwenden möchte.
Marcin