[Proj] Additional up coming mods to libproj4
Gerald I. Evenden
geraldi.evenden at gmail.com
Sun Oct 19 07:47:09 PDT 2008
Besides the inverse material for some projections I took a couple of minutes
to add the proj_initstr(chr *) entry to the library as an alternative to
proj_init(int, char **); In addition, each string field of the later entry
may have multiple white-space separated projection options in the string.
The net result of this is that one can use lproj in the following manner:
lproj "+proj=poly ellps=intl lon_0=90w" +lat_0=40 infile
where the ellps= and lon_0= options are processed properly along with proj=
and lat_0=. Remember that the "+" part of the options is only necessary for
[l]proj to identify the runline parameter as a libproj option and not a
filename.
For those who use the library directly:
P=proj_initstr("proj=poly ellps=intl lon_0=90w lat_0=40");
may be used as an alternative to proj_init and is processed the same as the
lproj example.
I believe that Warmerdam has done something similar with his value added
releases.
The change is simple as the rcsdiff listing of proj_init.c shows: (note: there
is the prototype
PROJ *proj_initstr(char *);
added to lib_proj.h)
7c7
< LIBPROJ_ID[] = "$Id: proj_init.c,v 3.1 2006/01/11 01:38:18 gie Exp $";
---
> LIBPROJ_ID[] = "$Id: proj_init.c,v 3.2 2008/10/19 02:33:51 gie Exp $";
37c37
< proj_init(int argc, char **argv) {
---
> proj_init(int argc, char *argv[]) {
41c41
< int i;
---
> int i, first = 1;
47,51c47,55
< for (i = 0; i < argc; ++i)
< if (i)
< curr = curr->next = proj_mkparam(argv[i]);
< else
< start = curr = proj_mkparam(argv[i]);
---
> for (i = 0; i < argc; ++i) {
> char *ss;
> for (ss = argv[i]; (ss = strtok(ss, " \t")) != NULL; ss = NULL)
> if (first) {
> start = curr = proj_mkparam(ss);
> first = 0;
> } else
> curr = curr->next = proj_mkparam(ss);
> }
134a139,144
> PROJ *
> proj_initstr(char *str) {
> char * plist[1];
> plist[0] = str;
> return(proj_init(1, plist));
> }
136a147,151
> ** Revision 3.2 2008/10/19 02:33:51 gie
> ** added proj_initstr(char *str) entry as well as allowing
> ** multiple control entries per argv[] elements.
> ** Thus "proj=xxx ellps=xxx lon_0=xxx" are allowed.
> **
--
The whole religious complexion of the modern world is due
to the absence from Jerusalem of a lunatic asylum.
-- Havelock Ellis (1859-1939) British psychologist
More information about the Proj
mailing list