[Proj] Old problems

Gerald I. Evenden gerald.evenden at verizon.net
Tue Jan 3 22:25:50 EST 2006

Since I had "proj-4.4.9" downloaded I made some comparisons with libproj4 to 
see what the basic problems were.

As for the projections themselves (PJ_ files) there is little difference 
except for updated names for support functions and some *improved* functions
in libproj4.  There are, of coarse, a few projections in libproj4 that are not 
in the old stuff.  Of course, the pj_latlong "projection" has no place in a 
projection operation.  Could be replace with Equirectangular where +a=1;

I took a careful look at the pj_init, pj_fwd and pj_inv.  There is little 
difference with pj_fwd and pj_inv but the big problem is with pj_init.  The 
issue is the inclusion of the non-projection datum operations and the "prime 
meridian" problem.  Also, the old usage of a "default" input is removed in 

I do not see why the datum operations cannot be made a shell procedure process 
where the entries are nearly identical with libproj4.  Something like 
gx_init, gx_fwd, gx_inv, where gx_init feeds off the options related to 
datums and gives the list to pj_init to initialize the projection phase.  
Remember, libproj4 pj_init ignores any options that it does not recognize.  
Also, does anyone use the default file or +init?  This was one of my mistakes 
in the original and continually caused a headache with people calling about 
proj not working because it could not find the default file because they had 
not set a global. Getting rid of it would get rid of the +no_def's which 
haunt so many listings of usage.

I'd be glad to give up the pj_init, pj_fwd and pj_inv names and replace them 
with proj_init, proj_forward and proj_inverse in the libproj4 system.  Thus 
the libdatum could have the pj_* entries and minimize any hassles in changing 
application programs.  Any of the other less utilized entries would also 
prefix with proj_.  Note the structure pointer returned by the new pj_init 
would have a pointer to PJ returned by proj_init.

Under this scheme a application like GRASS would not have to do anything but 
change Makefile to recognize the new libdatum library.   "big smiley  :-)"

I would go further and change all the PJ_ and pj_ s to proj_ PROJ_ but that is 
a lot of work.

Any comments?

Jerry and the low riders:Daisy May and Joshua
"The being cannot be termed rational or virtuous,
who obeys any authority, but that of reason."
---Mary Wollstonecraft 1792

More information about the Proj mailing list