lunes, 16 de enero de 2017

Reproyectar puntos con módulo pyproj

La reproyección con pyproj es muy fácil y directa. En este caso hay que usar el contructor de la clase 'Proj' y el método 'transform' para la reproyección. El constructor admite varias sintaxis pero, en el ejemplo a continuación, se va a utilizar aquella que hace referencia al código EPSG (European Petroleum Survey Group). Otro aspecto importante a mencionar es que si el datum de origen viene expresado en unidades diferentes a metros, es imprescindible emplear el modificador 'preserve_units = True' en el método 'Proj' para evitar resultados erróneos.



El código siguiente permite trasformar un punto arbitrario de la ciudad de Milwaukee (USA), cuyo datum de origen viene expresado en pies, a long/lat (grados).

1
2
3
4
5
6
7
8
from pyproj import Proj, transform
# Wisconsin EPSG:32054: units in feet
inProj = Proj(init = 'epsg:32054', preserve_units=True)
outProj = Proj(init = 'epsg:4326')
x1,y1 = 2560131.496875003, 406816.434375003
x2,y2 = transform(inProj, outProj,x1,y1)

print "({:.6f}, {:.6f})".format(x2, y2)

El resultado del cálculo corresponde a:

1
(-87.902857, 43.096913)

el cual es esencialmente correcto.



No hay comentarios: