Más

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

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


Estoy tratando de convertir las coordenadas NAD83 (2011) / Louisiana South (ftUS) en mapas de levantamiento a lat / lon usando Proj4 en Python.

¿Alguien podría señalarme en la dirección correcta?

He verificado el lat / lon en el sitio earthpoint.us. Su conversión parece funcionar. Este es mi código de Python que contiene la cadena Proj4.

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

de pyproj importar 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, inverse = True) print "% s,% s "% (lonlat [1], lonlat [0])

Como no hay soporte EPSG: 6479 (NAD83 (2011) / Louisiana South (ftUS)) en PROJ4 (mira el comentario de mkennedy) ilustraré el problema con EPSG: 3452, NAD83 / Louisiana South (ftUS) porque el El problema es el mismo, las unidades de la proyección.

Solución con Pyproj

importar 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 ') # o 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) print longlat (-93.986162555568697, 34.865093872789771)

Resultado

Solución con GDAL

from osgeo import osr southla = osr.SpatialReference () southla.ImportFromEPSG (3452) wgs84 = osr.SpatialReference () wgs84.ImportFromEPSG (4326) x = 3037416.890 y = 709211.549 transformación = osr.CoordinateTransformation (southla, wgs84) resultado = transformación. Resultado de impresión de TransformPoint (x, y) (-92.105819299234454, 30.447920720765676, 0.0)

Resultado

¿Por qué la diferencia?

Debido a que PyProj asume que sus coordenadas están en metros y la unidad de EPSG: 3452 (o EPSG: 6479) es "pie topográfico de EE. UU." (Unidades = us-ft) -> consulte Conversión de coordenadas X, Y a lat / long usando pyproj y Proj.4 devuelve las coordenadas incorrectas

preserve_units = Verdaderosoluciona el problema (pyproj cambia silenciosamente el parámetro '+ unidades =')

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

Resultado


Las cadenas PROJ.4 siempre quieren el falso este (x_0) y el falso norte (y_0) en metros, sin importar cuáles sean las unidades del sistema de referencia de coordenadas. Cambie + x_0 a 1000000.0 y debería obtener los resultados que desea.


QGIS ofrece estas cadenas de proyectos 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 (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 + 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

El marco de tiempo NAD83 (2011) aún no está incorporado en QGIS.


Ver el vídeo: Mapping Datum Shifts from NAD27 to NAD83 Part 1