[Proj] DHDN / Gauss Krueger to WGS84

Frank Warmerdam warmerdam at pobox.com
Thu Sep 20 12:06:09 EDT 2007

Oliver Eichler wrote:
>> I do have a coordinate in easting/northing [m] from a raster map  using
>> Gauss Krüger projection and Potsdam datum. Now I would like to get the
>> lon/lat coordinate on a WGS84 ellipsoid. And vice versa. I would like to
>> use the proj4 C API not the command line.
> Ok, further investigations condensed into something like:
> pjgaukru = pj_init_plus("+init=epsg:31467");
> pjwgs84 = pj_init_plus("+init=epsg:4326");
> // easting / northing to lon / lat
> pt = pj_inv(pt,pjgaukru)
> //???
> double z = 0;
> pj_datum_transform(pjgaukru, pjwgs84, 1, 0, &pt.u, &pt.v, &z);
> However the result is still several minutes away from the expected
> coordinate. What do I miss?


How about:

pjgaukru = pj_init_plus("+init=epsg:31467");
pjwgs84 = pj_init_plus("+init=epsg:4326");

double z = 0;

pj_datum_transform(pjgaukru, pjwgs84, 1, 0, &pt.u, &pt.v, &z);

Don't forget that the output is pt.u with the longitude in
radians, and pt.v with the latitude in radians.  The call
you make to pj_inv() is duplicating work that is done by
pj_transform() (corrupting really).

I would add that epsg:31467 expands as:

+proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel 
+datum=potsdam +units=m +no_defs

Note that this definition is using +datum=potsdam which expands to:

   +ellps=bessel +towgs84=606.0,23.0,413.0

This may or may not be the best datum shift parameters for your area of
work.  You may need to research a better local shift.

Best regards,
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | President OSGeo, http://osgeo.org

More information about the Proj mailing list