[Proj] Time for a new release?
Roger Bivand
Roger.Bivand at nhh.no
Fri Nov 17 01:13:31 PST 2017
... and please explain PJ_FWD in the example - is it the macro in line 357
ff. in proj.h?
/* Apply transformation to observation - in forward or inverse direction */
enum PJ_DIRECTION {
PJ_FWD = 1, /* Forward */
PJ_IDENT = 0, /* Do nothing */
PJ_INV = -1 /* Inverse */
};
The question about non-existent inverses will bite for PJ_INV - am I looking
in the right place i pj_internal.c, line 80 ff:
PJ_COORD pj_inv4d (PJ_COORD coo, PJ *P) {
if (0!=P->inv4d)
return P->inv4d (coo, P);
if (0!=P->inv3d) {
coo.lpz = pj_inv3d (coo.xyz, P);
return coo;
}
if (0!=P->inv) {
coo.lp = pj_inv (coo.xy, P);
return coo;
}
proj_errno_set (P, EINVAL);
return proj_coord_error ();
}
so a no-inverse definition sets an error number and returns HUGE_VAL,
pj_internal.c line 56:
/* Work around non-constness of MSVC HUGE_VAL by providing functions rather
than constants */
PJ_COORD proj_coord_error (void) {
PJ_COORD c;
c.v[0] = c.v[1] = c.v[2] = c.v[3] = HUGE_VAL;
return c;
}
Can P->inv4d, P->inv3d and P->inv be read in the API?
These are the kinds of things that the migration guide could helpfully show.
Roger
-----
Roger Bivand
NHH Norwegian School of Economics, Bergen, Norway
--
Sent from: http://osgeo-org.1560.x6.nabble.com/PROJ-4-f3840930.html
More information about the Proj
mailing list