Saltar al contenido

Conversión de coordenadas proyectadas a lat/lon usando Python

Después de investigar en diversos repositorios y páginas de internet al terminar encontramos la resolución que te compartimos a continuación.

Solución:

La forma más sencilla de transformar coordenadas en Python es pyprojes decir, el Interfaz de Python para la biblioteca PROJ.4. En realidad:

from pyproj import Proj, transform

inProj = Proj(init='epsg:3857')
outProj = Proj(init='epsg:4326')
x1,y1 = -11705274.6374,4826473.6922
x2,y2 = transform(inProj,outProj,x1,y1)
print x2,y2

devoluciones -105.150271116 39.7278572773


EDITAR basado en el comentario de Marc:

pyproj 2.4 da un FutureWarning sobre obsoleto Proj inicialización con el init= sintaxis. La sintaxis actualizada es idéntica pero sin la init=. Como esto:

inProj = Proj('epsg:3857')
outProj = Proj('epsg:4326')

De manera predeterminada, el sitio al que se vinculó utiliza el Sistema de referencia espacial EPSG 3857 (WGS84 Web Mercator). Encontré esta información aquí.

Puede especificar otro Sistema de referencia espacial ingresando el EPSG deseado en el formulario debajo Spatial Reference o puede convertir las coordenadas devueltas con Python.

Por ejemplo, puede usar los enlaces GDAL Python para convertir este punto del sistema de coordenadas proyectadas (EPSG 3857) a un sistema de coordenadas geográficas (EPSG 4326).

import ogr, osr

pointX = -11705274.6374 
pointY = 4826473.6922

# Spatial Reference System
inputEPSG = 3857
outputEPSG = 4326

# create a geometry from coordinates
point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(pointX, pointY)

# create coordinate transformation
inSpatialRef = osr.SpatialReference()
inSpatialRef.ImportFromEPSG(inputEPSG)

outSpatialRef = osr.SpatialReference()
outSpatialRef.ImportFromEPSG(outputEPSG)

coordTransform = osr.CoordinateTransformation(inSpatialRef, outSpatialRef)

# transform point
point.Transform(coordTransform)

# print point in EPSG 4326
print point.GetX(), point.GetY()

Esto devuelve para su punto las coordenadas de -105.150271116 39.7278572773.

afalciano tiene la respuesta correcta, pero quería incluir una variante del uso de pyproj.

Eso lo hace requiere que conozcas el proj4 string y es un poco más rápido.

import pyproj
p = pyproj.Proj("+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
lon, lat = p(x, y, inverse=True)
print lat, lon

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *