4

I am trying to align with some data points that have been projected in Esri from NAD27 State Plane feet (SRID=32026) to Lon/Lat using the "NAD_1927_To_WGS_1984_6" datum transformation using ST_Transform in POSTGIS.

When using something like

ST_Transform( ST_GEOMFROMEWKT( 'SRID=32026;wkt_geom_string' ), 4326 ) )

I believe the default behavior is a NADCON grid-shift transformation, resulting in an approximate 5m shift to resulting features compared to their position from Esri resulting from above datum transformation being applied.

Therefore I thought I might need to use a custom string, and possibly even incorporate a pipeline, but so far, I have been unable to create a string that is syntactically correct.

The NAD_1927_To_WGS_1984_6 transformation is defined by Esri as Geocentric Translation with parameters dx=-8, dy=159, and dz=175. It seemed that might equate to a Helmert 3 position transformation using Proj, but that presumption may be incorrect on my part.

Here's my benchmark point from Esri displaying it's resultant long/lat, using the mentioned datum transformation, that I wish to align with:

Source Esri PCS Point= 'SRID=32026; POINT(1443665.55622 684595.615785)' in units ft
Esri-projected GCS Point= 'SRID=4326; POINT(-122.672081324 45.523768294)' in dd using esri 'NAD_1927_To_WGS_1984_6' datum transformation

One approach I tried with POSTGIS was as follows:

WITH data AS ( SELECT '+proj=longlat +ellps=WGS84 +datum=WGS84 +towgs84=-8,159,175 +nodefs'::text AS dtrans )
SELECT ST_AsEWKT( ST_Transform( ST_GEOMFROMEWKT( 'SRID=32026;POINT ( 1443665.55622 684595.615785 )' ), dtrans ) )
FROM data

Resulting in POINT(-122.670918714227 45.5218796715454).

Plugging the above two resultant long/lats into:

SELECT ST_Distance(gg1, gg2) As spheroid_dist
FROM (SELECT
    'SRID=4326;POINT(-122.672081324 45.523768294)'::geography as gg1,
    'SRID=4326;POINT(-122.670918714227 45.5218796715454)'::geography as gg2
    ) As foo;

Results in 228.71471422, which is way off.

I also tried command line cs2cs, attempting to build a pipeline that incorporated a helmert transformation, but was never able to get the syntax correct.

When I try:

echo 1443665.55622 684595.615785 | cs2cs -f "%.8f" +proj=pipeline +step +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs +step +proj=helmert +convention=coordinate_frame +x=0.67678 +y=0.65495 +z=-0.52827 +rx=-0.022742 +ry=0.012667 +rz=0.022704 +s=-0.01070 +to +proj=longlat +datum=WGS84 +no_defs

where

"+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft"

is the proj4text for SRID=32026.

The resultant error is malformed pipeline, cannot instantiate the source coordinate system. I have tried several variations of this syntax with the same error. I have also scoured the Proj documentation and this board for similar issues with documented resolutions, but have come up empty.

Based on this background, my main questions would be: Am I attempting to apply the correct transformation (helmert 3 pos) in Proj corresponding to a geocentric translation defined by Esri? If so, does someone have an example of a Proj pipeline string so that I can see the correct syntax, or could help me correct the syntax in the examples I have provided?

  • 2
    One problem that I see is that you put +towgs84 parameter in your destination (WGS84), but it should be included in the source crs or in the transformation, not the destination crs. If I transform from +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +towgs84=-8,159,175 +to_meter=0.3048006096012192 +no_defs to +proj=longlat +datum=WGS84 +no_defs, I get the same result as ESRI. Try using those as source and destination crs proj string in your ST_Transform. – FSimardGIS Feb 17 at 17:34
  • This is the correct answer - Thanks for the syntax assistance. Makes sense. Being new on this board, I want to make sure I give credit where due, and make this post useful for future reference. Due to my low reputation points, am I unable to accept this answer, or am I overlooking the icon for doing so? Also, would it be useful for future visitors of this post for me to edit the original post in some manner to provide additional clarity? – Jeff3780 Feb 17 at 19:07
  • 1
    @FSimardGIS you should post your comment as an answer to let OP accept it. Jeff3780 that should clear things up; once transformed into an actual answer, you will find all icons you need ;) Welcome to GIS.SE, this is a very good first question! – geozelot Feb 17 at 20:01
  • 1
    I'll post my comment as an answer so you'll be able to accept it then. – FSimardGIS Feb 17 at 20:02
5

I see that you put a +towgs84 parameter in your destination crs (WGS84), but it should be included in the source crs or in the transformation (as dx, dy, dz parameters), not the destination crs.

If I transform from:

+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +towgs84=-8,159,175 +to_meter=0.3048006096012192 +no_defs

to:

+proj=longlat +datum=WGS84 +no_defs

I get the same result as ESRI. Try using those as source and destination crs proj string in your ST_Transform.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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