Conversión de coordenadas UTM a geográficas (datum WGS84) usando los elipsoides Hayford o WGS84 con módulo pyproj

En un artículo precedente se elaboró una aplicación escrita en C/C++ destinada a convertir coordenadas UTM en geográficas (datum WGS84) usando los elipsoides Hayford o WGS 84 y tomando como base para la codificación las ecuaciones de Coticchia-Surace. Codificar este mismo tipo de cálculos en Python es mucho más sencillo porque se cuenta con el módulo pyproj; tal como se presenta a continuación:

#!/usr/bin/env python
# -*- coding: utf-8

import pyproj
from os import system

system("clear")

print "Programa para convertir coordenadas UTM en geograficas (datum WGS84)"

print "Escoja un numero para seleccionar el elipsoide de entrada"

print "Hayford = 1            WGS 84 = 2"

opcion = int(raw_input("opción = ? "))

if opcion == 1:
	elipsoide1 = "intl"

elif opcion == 2:
	elipsoide1 = "WGS84"

UTM_X = float(raw_input("UTM_X = ? "))
UTM_Y = float(raw_input("UTM_Y = ? "))

huso = int(raw_input("huso = ? "))

srcProj = pyproj.Proj(proj="utm", zone=huso, ellps=elipsoide1, units="m")
dstProj = pyproj.Proj(proj='longlat', ellps='WGS84', datum='WGS84')

long,lat = pyproj.transform(srcProj, dstProj, UTM_X, UTM_Y)

print "UTM zone %d coordenadas (%0.4f, %0.4f) = (%0.6f, %0.6f)" % (huso, UTM_X, UTM_Y, long, lat)

La ejecución de este script para los dos ejemplos que se encuentran en el artículo ya referido produce los mismos resultados.

Para el vértice de Llatías (España):

Programa para convertir coordenadas UTM en geograficas (datum WGS84)
Escoja un numero para seleccionar el elipsoide de entrada
Hayford = 1            WGS 84 = 2
opción = ? 1
UTM_X = ? 435157.59
UTM_Y = ? 4815453.64
huso = ? 30
UTM zone 30 coordenadas (435157.5900, 4815453.6400) = (-3.801873, 43.488407)

Para el vértice de Carbonera (España):

Programa para convertir coordenadas UTM en geograficas (datum WGS84)
Escoja un numero para seleccionar el elipsoide de entrada
Hayford = 1            WGS 84 = 2
opción = ? 2
UTM_X = ? 448500.79
UTM_Y = ? 4377580.93
huso = ? 30
UTM zone 30 coordenadas (448500.7900, 4377580.9300) = (-3.599370, 39.546358)

La incorporación de otros elipsoides es muy sencillo. Para averiguar la codificación de los mismos, que puede servir también para programar otro tipo de transformaciones, me elaboré el siguiente script:

#!/usr/bin/env python
# -*- coding: utf-8

from osgeo import ogr
from os import system,chdir

system("clear")

directorio = str(raw_input("Directorio de shapefiles = ? "))

chdir ("/home/zeito/Desktop/" + directorio)

system("ls *.shp")

print

nameshape = str(raw_input("nombre shapefile = ? "))

shapefile = ogr.Open(nameshape)

layer = shapefile.GetLayer(0)

nameRefEsp = layer.GetSpatialRef().ExportToProj4()

print nameRefEsp

Ejecutado con el directorio tl_2009_us_state que se encuentra en mi escritorio, lo usé para averiguar la proyección, en nomenclatura proj4, del shapefile tl_2009_us_state.shp. El resultado fue el siguiente:

Directorio de shapefiles = ? tl_2009_us_state
tl_2009_us_state.shp

nombre shapefile = ? tl_2009_us_state.shp
+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs 
Esta entrada fue publicada en Código Python, SIG, Software Libre. Guarda el enlace permanente.

2 respuestas a Conversión de coordenadas UTM a geográficas (datum WGS84) usando los elipsoides Hayford o WGS84 con módulo pyproj

  1. Saul de Leon dijo:

    GRACIAS POR TU APORTE, EXCELENTE

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s