[OSRS-PROJ] Re: Quick 'how-to' to on PROJ.4

Frank Warmerdam warmerdam at pobox.com
Wed Jul 25 13:18:00 PDT 2001


Precedence: bulk
Reply-To: osrs-proj at remotesensing.org

"Petri J. Riipinen" wrote:
> 
> Hi Frank,
> 
> Remember me a while ago, we exchanged some email about compiling GDAL with
> Cygwin. Well, I finally got Linux, no more Cygwin to fool around with.
> 
> I have now reached a point, where I should start integrating GPS with my
> map, that I draw from Shapefiles (reading them with shapelib).
> 
> I know that the answer must be somewhere in the PROJ.4 docs, but I guess
> I'm too lazy to go through them (they look a bit scary, IMHO).
> 
> So, could you give me a quick 'how-to' on how to use PROJ.4 to translate
> from GPS-coordinates to Finnish coordinates. I really don't need to be an
> expert in "complete world of transformations", the Finnish part is enough.
> 
> I guess that these links should contain all the information that you need
> to come up with an answer:
> http://www.nls.fi/kartta/julkaisu/kkj.html
> http://www.nls.fi/kartta/palvelut/wgs84/wgs84win_e.html
> 
> Also, I got these files for testing, they might mean more to you then they
> mean to me:
> ------ name: 20p.tab -------
> !table
> !version 300
> !charset WindowsLatin1
> !Copyright National Land Survey of Finland
> !          Helsinki, 11.05.2000, for MapInfo 4.x
> Definition Table
> File "20p.tif"
> Type "Raster"
> (3419987.5,6800012.5) (0,0) Label "Pt 1",
> (3500012.5,6800012.5) (3200,0) Label "Pt 2",
> (3500012.5,6719987.5) (3200,3200) Label "Pt 3",
> (3419987.5,6719987.5) (0,3200) Label "Pt 4"
> CoordSys Earth Projection 24,28,"m",27,0,1,3500000,0

As best as I can figure out this coordinate system is:

 Tranverse Mercator
  Central Meridian: 27dE
  Center Latitude: 0dN
  Scale Factor: 1.0
  False Easting: 3500000
  False Northing: 0

The ellipse is (28 in mapinfo) is apparently Hayford 1924, or in PROJ.4
speak "+ellps=intl". 
  
To convert from KKJ meters to lat/long values in the same ellipsoid:

warmerda at gdal[160]% proj -I +proj=tmerc +lon_0=27 +x_0=3500000 +ellps=intl
3419987.5 6800012.5
25d30'25.592"E  61d18'0.427"N

To convert back:

warmerda at gdal[161]% proj +proj=tmerc +lon_0=27 +x_0=3500000 +ellps=intl
25d30'25.592"E  61d18'0.427"N
3419987.51      6800012.50

To convert to WGS84 we need to approximate the datum shift to WGS84.  
>From my mapinfo knowledge, datum 28 is european 1950 for which mapinfo
uses the shift values -87, -98, -121.

To do datum shifts from the commandline we need to use "cs2cs" which
includes datum shifting. 

warmerda at gdal[167]% cs2cs +proj=tmerc +lon_0=27 +x_0=3500000 +towgs84=-87,-98,-121 +ellps=intl +to  +proj=latlong +datum=WGS84
3419987.5 6800012.5
25d30'22.167"E  61d17'59.479"N 16.655

Notice there is a difference of several seconds with the datum shift. 

The equivelent to "cs2cs" can be accomplished from a code by calling
pj_translate() with coordinate system definitions created with
pj_init().  The KKJ definition is:

  +proj=tmerc +lon_0=27 +x_0=3500000 +towgs84=-87,-98,-121 +ellps=intl 

To WGS84 definition is:
  +proj=latlong +datum=WGS84

To go from WGS84 to KKJ just reverse the order of the coordinate
system definitions passed in pj_transform(). 

You should check the results against an accurate map to ensure I haven't
messed something up (like reversing the sense of the towgs84 parameters
or something). 

I would also encourage you to email such requests to the PROJ.4 mailing
list.  I am going to be away for a week shortly, and it gives others the
change to help out too. 

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    | Geospatial Programmer for Rent
----------------------------------------
PROJ.4 Discussion List
See http://www.remotesensing.org/proj for subscription, unsubscription
and other information.



More information about the Proj mailing list