4

I am trying to convert NAD83(2011) / Louisiana South (ftUS) coordinates on survey maps to lat/lon using Proj4 in Python.

Could someone point me in the right direction?

I have verified the lat/lon on earthpoint.us site. Their conversion seems to work. This is my python code which contains the Proj4 string.

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

from pyproj import Proj

#EPSG:6479 from 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 +units=us-ft +no_defs'

p=Proj(southla)

lonlat = p(3037416.890, 709211.549,inverse=True)

print "%s, %s" % (lonlat[1],lonlat[0])

3 Answers 3

6

As as there is no support EPSG:6479 (NAD83(2011) / Louisiana South (ftUS)) in PROJ4 (look at the comment of mkennedy) I will illustrate the problem with EPSG:3452, NAD83 / Louisiana South (ftUS) because the problem is the same, the units of the projection.

Solution with 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 +units=us-ft +no_defs')
# or 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)

Result

enter image description here

Solution with GDAL

from osgeo import osr
southla  = osr.SpatialReference()
southla.ImportFromEPSG(3452) 
wgs84 = osr.SpatialReference()
wgs84.ImportFromEPSG(4326)
x = 3037416.890
y = 709211.549 
transformation = osr.CoordinateTransformation(southla,wgs84)
result = transformation.TransformPoint(x, y)
print result
(-92.105819299234454, 30.447920720765676, 0.0)

Result

enter image description here

Why the difference?

Because PyProj assumes that your coordinates are in meters and the unit of EPSG:3452 (or EPSG:6479) is "US survey foot" (units=us-ft) -> look at Converting X,Y coordinates to lat/long using pyproj and Proj.4 returns the wrong coordinates

preserve_units=True fix the problem (pyproj silently changes '+units=' parameter)

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)

Result

enter image description here

4
  • EPSG:3452 is the NAD83-based zone, not the NAD83 (2011)-based one (not that it matters in this case!). The OP has it correct in a comment in the code: EPSG:6479.
    – mkennedy
    Commented Oct 14, 2014 at 18:17
  • Ok, I am not American but the unit of EPSG6479 is also us-ft`
    – gene
    Commented Oct 14, 2014 at 18:31
  • Yes, the strings are the same because there isn't separate support for NAD83(2011) in PROJ.4, but if the difference becomes important later, having the correct WKID/EPSG ID could matter.
    – mkennedy
    Commented Oct 14, 2014 at 18:33
  • Thanks gene and @mkennedy. The explanation by gene is just what I needed to see the difference. I read the thread concerning preserve_units but didn't make the connection. It wouldn't have worked in my example because my false easting was in ft, not meters. Swapping things around as suggested cleared it right up! Thanks again. Commented Oct 14, 2014 at 22:40
6

PROJ.4 strings always want the false easting (x_0) and false northing (y_0) in meters, no matter what the coordinate reference system units are. Change +x_0 to 1000000.0 and you should get the results you want.

1
  • OT, but: If you are using a +k=??? scaling units markedly different than 1.0, then the easting and northing should be similarly scaled. I used a g218gproj4='+proj=lcc +lat_1=25 +lat_2=25 +lat_0=12.19 +lon_0=265 +k_0=8.20463003682238e-05 +x_0=346.906301484053 +y_0=-49.5724920086904 +a=6370000.0,+b=6370000.0 +units=m +no_defs' to translate between geographic coordinates directly into the grid coordinates of a model intended to match the grid from a nco.ncep.noaa.gov/pmb/docs/on388/tableb.html#GRID218 weather model. This scaled to the model's 12km pixels with the SW pixel at 0,0.
    – Dave X
    Commented May 7, 2015 at 19:42
0

QGIS offers these proj strings for 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 +units=us-ft +no_defs

EPSG:102282 (from 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 +units=m +no_defs

EPSG:102682 (from 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 +units=us-ft +no_defs

The time frame NAD83(2011) is not yet incorporated in QGIS.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.