[Proj] How to build the correct paramater list for pj_init()

Roger Oberholtzer roger at opq.se
Wed Oct 31 06:04:56 EDT 2007


On Mon, 2007-10-29 at 12:57 -0600, Richard Zinn wrote:
> Hi, Sorry if this has been addressed before, I couldn't see any way to
> search the archive.
>  
> I want to build the correct paramater list for proj based on this
> data:
> PROJCS["NAD_1983_UTM_Zone_12N",GEOGCS["GCS_North_American_1983",
> DATUM["D_North_American_1983",
> SPHEROID["GRS_1980",6378137.0,298.257222101]],
> PRIMEM["Greenwich",0.0],
> UNIT["Degree",0.0174532925199433]],
>  
> PROJECTION["Transverse_Mercator"],
> PARAMETER["False_Easting",500000.0],
> PARAMETER["False_Northing",0.0],
> PARAMETER["Central_Meridian",-111.0],
> PARAMETER["Scale_Factor",0.9996],
> PARAMETER["Latitude_Of_Origin",0.0],
> UNIT["Meter",1.0]]
>  
> I've read the documentation, and since I'm just a newbie to
> cartography it is all still a little unclear and I need to learn by
> example.
>  
> Is there any code out there (any language) I could see that takes this
> kind of input and builds out the paramaters for prj_init()?
>  
> My guess is that it is something like this:
> static char *params_in[] = { 
>   "proj=tmerc", 
>   "lat_0=0", 
>   "lon_0=500000", 
>   "units=m" 
> };
> prj_init(4, params_in);
>  
> But that doesn't work :)  And I'm sure it is pretty far off.

Here is an example I use in the UK. I use a different routine, but you
should be able to do the same:        

Initialize thus: 

	projPJ fromProj, toProj;

	fromProj = pj_init_plus(
						"+proj=latlong "
						"+ellps=WGS84 "
						"+towgs84=0,0,0 "
						"+nodefs");

	toProj   = pj_init_plus(
						"+proj=tmerc "
						"+lat_0=49 "
						"+lon_0=-2 "
						"+k=0.9996012717 "
						"+x_0=400000 "
						"+y_0=-100000 "
						"+ellps=airy "
						"+nadgrids=gb.gsb "
						"+units=m "
						"+no_defs");

fromProf describes the source data. In my case, WGS84 from a Trimble
receiver. toProj describes what I want out. In my case, OSTN02 in the
UK. At least this is how I interpret things. This code works for me.

To do a conversion, LONG is the longitude and LAT is the latitude, both
in degrees. I do not do anything with the altitude (HEIGHT):

	#define DEGREE_TO_RADIAN (M_PI / 180.0)

	lng = LONG * DEGREE_TO_RADIAN;
	lat = LAT  * DEGREE_TO_RADIAN;
	alt = 0; // We do not give this a height

	pj_transform(fromProj, toProj, 1, 0, &lng, &lat, &alt);

	local_easting = lng;
	local_northing = lat;
	local_altitude = HEIGHT;

The tricky part is the parameters to use!


>  
> Thanks.
> _______________________________________________
> Proj mailing list
> Proj at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/proj
-- 
Roger Oberholtzer

OPQ Systems / Ramböll RST

Ramböll Sverige AB
Kapellgränd 7
P.O. Box 4205
SE-102 65 Stockholm, Sweden

Tel: Int +46 8-615 60 20
Mobl: Int +46 70-815 1696



More information about the Proj mailing list