Cálculo de coordenadas XY en grados decimales a partir del conjunto de datos proyectado en el modelo o script?

8

¿Es posible calcular las coordenadas de los puntos XY en grados decimales en el modelo o script cuando una clase de entidad está en el sistema de coordenadas proyectadas?

Es fácil cuando un FC está en un sistema de coordenadas geográficas:

  • utilizando la herramienta Agregar coordenadas XY o
  • usando la expresión de Python, por ejemplo. !shape.extent.XMax!

Descubrí que las propiedades de área y longitud del campo de geometría se pueden modificar con la palabra clave de conversión de unidad de geometría. Para unidades lineales de medida, se puede usar @DECIMALDEGREES.
Desafortunadamente, !shape.extent.XMax@decimaldegrees!no funciona ya que XMax no es una longitud.

En la función Calcular geometría (a la que se accede haciendo clic con el botón derecho), existe la posibilidad de elegir el tipo de salida Grados decimales incluso para la clase de entidad proyectada.
¿Puedo hacer esto usando ArcPy?


Aquí hay un fragmento de código basado en la solución de iRfAn:

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
fuente
¿Es necesario mantener los puntos XY en un CS proyectado?
Roy
@Roy: sí, quiero preservar una clase de entidad en CS proyectada, pero calculé los grados decimales.
Marcin

Respuestas:

4

Yo creo que puedes.

Simplemente defina la referencia espacial en WGS-84 y use el cursor usando esta referencia espacial.

Las coordenadas se especifican en la referencia espacial proporcionada y se convierten sobre la marcha al sistema de coordenadas del conjunto de datos.

Para más detalles ver esto .

iRfAn
fuente
Puedes hacerlo de esta manera. Desde el SHAPEcampo obtendrá un objeto de geometría de puntos, desde el cual puede obtener las coordenadas X e Y.
om_henners
2

No estoy seguro acerca de un script, pero lo he logrado de una manera algo automatizada usando el generador de modelos: importe sus coordenadas xy y proyectelas en WGS 1984. Luego agregue campos y calcule la geometría de los puntos en grados decimales. Luego, vuelva a colocar sus puntos XY en el sistema de coordenadas original.

mburkenysdot
fuente
es un largo camino por recorrer, prefiero usar el cursor y usar WGS-84 como referencia espacial y calcular. No es necesario volver a proyectar y luego unirse.
iRfAn
@mburkenysdot: esta es una buena solución cuando alguien no quiere usar ningún script.
Marcin