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