Mais

Proj4 String para NAD83 (2011) / Louisiana South (ftUS)


Estou tentando converter coordenadas NAD83 (2011) / Louisiana South (ftUS) em mapas de pesquisa para lat / lon usando Proj4 em Python.

Alguém poderia me apontar na direção certa?

Eu verifiquei a latitude / longitude no site earthpoint.us. Sua conversão parece funcionar. Este é o meu código python que contém a string Proj4.

===============

de importação de pyproj Proj #EPSG: 6479 de epsg-registry.org southla = '+ proj = lcc + lat_1 = 30,7 + lat_2 = 29,3 + lat_0 = 28,5 + lon_0 = -91.33333333333333 + x_0 = 3280833.3333 + y_0 = 0 + ellps = GRS80 + datum = NAD83 + towgs84 = 0,0,0,0,0,0,0 + unidades = us-ft + no_defs 'p = Proj (southla) lonlat = p (3037416.890, 709211.549, inverso = True) print "% s,% s "% (lonlat [1], lonlat [0])

Como não há suporte EPSG: 6479 (NAD83 (2011) / Louisiana South (ftUS)) em PROJ4 (veja o comentário de mkennedy), ilustrarei o problema com EPSG: 3452, NAD83 / Louisiana South (ftUS) porque o problema é o mesmo, as unidades da projeção.

Solução com Pyproj

import pyproj southla = pyproj.Proj ('+ proj = lcc + lat_1 = 30,7 + lat_2 = 29,3 + lat_0 = 28,5 + lon_0 = -91,33333333333333 + x_0 = 3280833.3333 + y_0 = 0 + ellps = GRS80 + datum = NAD83 + towgs84 = 0 , 0,0,0,0,0,0 + unidades = us-ft + no_defs ') # ou southla = pyproj.Proj (init =' epsg: 3452 ') wgs84 = pyproj.Proj (' + proj = longlat + ellps = WGS84 + datum = WGS84 + no_defs ') longlat = pyproj.transform (southla, wgs84,3037416.890, 709211.549) imprimir longlat (-93.986162555568697, 34.865093872789771)

Resultado

Solução com GDAL

from osgeo import osr southla = osr.SpatialReference () southla.ImportFromEPSG (3452) wgs84 = osr.SpatialReference () wgs84.ImportFromEPSG (4326) x = 3037416.890 y = 709211.549 transformação = osr.CoordinateTransformation (southla) resultado da transformação wgs84. Resultado da impressão do TransformPoint (x, y) (-92,105819299234454, 30,447920720765676, 0,0)

Resultado

Por que a diferença?

Porque PyProj assume que suas coordenadas estão em metros e a unidade de EPSG: 3452 (ou EPSG: 6479) é "US levantamento foot" (unidades = us-ft) -> veja a conversão das coordenadas X, Y para lat / long usando pyproj e Proj.4 retorna as coordenadas erradas

preserve_units = Truecorrigir o problema (pyproj muda silenciosamente o parâmetro '+ unidades =')

foot_proj = pyproj.Proj (init = "epsg: 3452", preserve_units = True) longlat = pyproj.transform (foot_proj, wgs84,3037416.890, 709211.549) >>> longlat print longlat (-92.105819299234469, 30.447920720765683)

Resultado


As strings PROJ.4 sempre querem o falso leste (x_0) e o falso norte (y_0) em metros, não importa quais sejam as unidades do sistema de referência de coordenadas. Altere + x_0 para 1000000.0 e você deverá obter os resultados desejados.


QGIS oferece estas strings proj para NAD83 Louisiana South (ftUS):

EPSG: 3452 EPSG: 3457 EPSG: 3553 + proj = lcc + lat_1 = 30,7 + lat_2 = 29,3 + lat_0 = 28,5 + lon_0 = -91,33333333333333 + x_0 = 999999,9999898402 + y_0 = 0 + ellps = GRS80 + towgs84 = 0,0,0 , 0,0,0,0 + unidades = us-ft + no_defs EPSG: 102282 (da ESRI) + proj = lcc + lat_1 = 29,3 + lat_2 = 30,7 + lat_0 = 28,5 + lon_0 = -91,33333333333333 + x_0 = 1000000 + y_0 = 0 + ellps = GRS80 + unidades = m + no_defs EPSG: 102682 (de ESRI) + proj = lcc + lat_1 = 29,3 + lat_2 = 30,7 + lat_0 = 28,5 + lon_0 = -91,33333333333333 + x_0 = 1000000 + y_0 = 0 + datum = NAD83 + unidades = us-ft + no_defs

O cronograma NAD83 (2011) ainda não foi incorporado ao QGIS.


Assista o vídeo: Introducing Coordinate Systems and Transformations (Outubro 2021).