[Git][debian-gis-team/proj][upstream] New upstream version 5.0.0~rc3
Bas Couwenberg
gitlab at salsa.debian.org
Wed Feb 14 06:52:49 UTC 2018
Bas Couwenberg pushed to branch upstream at Debian GIS Project / proj
Commits:
1e4ca627 by Bas Couwenberg at 2018-02-14T07:27:23+01:00
New upstream version 5.0.0~rc3
- - - - -
26 changed files:
- cmake/CMakeLists.txt
- cmake/project-config.cmake.in
- man/man3/pj_init.3
- nad/README
- nad/testvarious
- nad/tv_out.dist
- src/PJ_pipeline.c
- src/cct.c
- src/gie.c
- src/lib_proj.cmake
- src/pj_datums.c
- src/pj_fwd.c
- src/pj_geocent.c
- src/pj_gridinfo.c
- src/pj_init.c
- src/pj_inv.c
- src/proj.def
- src/proj.h
- src/proj_4D_api.c
- src/proj_api.h
- src/proj_internal.h
- src/projects.h
- test/gie/4D-API_cs2cs-style.gie
- test/gie/GDA.gie
- test/gie/builtins.gie
- test/gie/more_builtins.gie
Changes:
=====================================
cmake/CMakeLists.txt
=====================================
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -21,3 +21,7 @@ install (FILES
install (EXPORT targets
FILE ${PROJECT_NAME_LOWER}-targets.cmake
DESTINATION "${CMAKECONFIGDIR}")
+install (EXPORT targets
+ NAMESPACE ${PROJECT_NAME}::
+ FILE ${PROJECT_NAME_LOWER}-namespace-targets.cmake
+ DESTINATION "${CMAKECONFIGDIR}")
=====================================
cmake/project-config.cmake.in
=====================================
--- a/cmake/project-config.cmake.in
+++ b/cmake/project-config.cmake.in
@@ -23,6 +23,7 @@ set (@PROJECT_NAME at _BINARY_DIRS "${_ROOT}/@BINDIR@")
set (@PROJECT_NAME at _LIBRARIES proj)
# Read in the exported definition of the library
include ("${_DIR}/@PROJECT_NAME_LOWER at -targets.cmake")
+include ("${_DIR}/@PROJECT_NAME_LOWER at -namespace-targets.cmake")
unset (_ROOT)
unset (_DIR)
=====================================
man/man3/pj_init.3
=====================================
--- a/man/man3/pj_init.3
+++ b/man/man3/pj_init.3
@@ -1,6 +1,6 @@
.\" @(#)pj_init.3 - 5.0.0
.\"
-.TH PJ_INIT 3U "2018/02/15 Rel. 5.0.0"
+.TH PJ_INIT 3 "2018/02/15 Rel. 5.0.0"
.ad b
.hy 1
.SH NAME
=====================================
nad/README
=====================================
--- a/nad/README
+++ b/nad/README
@@ -70,3 +70,7 @@ WO.lla.Z --- Washington, Oregon, N. California
Other grid shift files
ntv1_can.dat --- Canadian NTv1 grid shift file (NAD27-->NAD83)
ntf_r93.gsb --- French NTv2 grid shift file (NTF-->RGF93)
+BETA2007.gsb --- German NTv2 grid shift file (DE_DHDN-->ETRS89) :
+ http://crs.bkg.bund.de/crseu/crs/descrtrans/BeTA/de_dhdn2etrs_beta.php
+ Confirmed with Uwe Schmitz <uwe.schmitz at bezreg-koeln.nrw.de> that free
+ redistribution is allowed and welcome.
=====================================
nad/testvarious
=====================================
--- a/nad/testvarious
+++ b/nad/testvarious
@@ -782,11 +782,11 @@ EOF
echo "##############################################################" >> ${OUT}
echo "Test SCH inverse projection" >> ${OUT}
#
-$EXE -f '%.7f' \
+$EXE -f '%.6f' \
+proj=sch +datum=WGS84 +plat_0=30.0 +plon_0=45.0 +phdg_0=-12.0 +nodefs +to \
+proj=latlong +datum=WGS84 \
-E >> ${OUT} <<EOF
-0. 0.
+0. 0. 2.
0. 1000.
1000. 0.
1000. 1000.
=====================================
nad/tv_out.dist
=====================================
--- a/nad/tv_out.dist
+++ b/nad/tv_out.dist
@@ -389,10 +389,10 @@ Test SCH forward projection
30.0 45.0 1974596.2356203 787409.8217445 773.0028577
##############################################################
Test SCH inverse projection
-0. 0. 45.0000000 30.0000000 0.0000000
-0. 1000. 44.9898625 29.9981240 -0.0003617
-1000. 0. 44.9978450 30.0088238 -0.0000000
-1000. 1000. 44.9877066 30.0069477 -0.0005228
+0. 0. 2. 45.000000 30.000000 2.000000
+0. 1000. 44.989863 29.998124 -0.000362
+1000. 0. 44.997845 30.008824 -0.000000
+1000. 1000. 44.987707 30.006948 -0.000523
##############################################################
Test issue #316 (switch utm to use etmerc)
0 83 145723.870553 9300924.845226 0.000000
=====================================
src/PJ_pipeline.c
=====================================
--- a/src/PJ_pipeline.c
+++ b/src/PJ_pipeline.c
@@ -240,11 +240,13 @@ static PJ *pj_create_pipeline (PJ *P, size_t steps) {
-/* count the number of args in pipeline definition */
+/* count the number of args in pipeline definition, and mark all args as used */
static size_t argc_params (paralist *params) {
size_t argc = 0;
- for (; params != 0; params = params->next)
+ for (; params != 0; params = params->next) {
argc++;
+ params->used = 1;
+ }
return ++argc; /* one extra for the sentinel */
}
@@ -414,7 +416,7 @@ PJ *OPERATION(pipeline,0) {
err = proj_errno_reset (P);
next_step = proj_create_argv (P->ctx, current_argc, current_argv);
- proj_log_trace (P, "Pipeline: Step %d at %p", i, next_step);
+ proj_log_trace (P, "Pipeline: Step %d (%s) at %p", i, current_argv[0], next_step);
if (0==next_step) {
/* The step init failed, but possibly without setting errno. If so, we say "malformed" */
@@ -436,7 +438,7 @@ PJ *OPERATION(pipeline,0) {
P->opaque->pipeline[i+1] = next_step;
- proj_log_trace (P, "Pipeline at [%p]: step at [%p] done", P, next_step);
+ proj_log_trace (P, "Pipeline at [%p]: step at [%p] (%s) done", P, next_step, current_argv[0]);
}
/* Require a forward path through the pipeline */
=====================================
src/cct.c
=====================================
--- a/src/cct.c
+++ b/src/cct.c
@@ -151,6 +151,7 @@ static const char usage[] = {
int main(int argc, char **argv) {
PJ *P;
PJ_COORD point;
+ PJ_PROJ_INFO info;
OPTARGS *o;
FILE *fout = stdout;
char *buf;
@@ -222,6 +223,11 @@ int main(int argc, char **argv) {
return 1;
}
+ if (verbose > 4) {
+ info = proj_pj_info (P);
+ fprintf (stdout, "Final: %s argc=%d pargc=%d\n", info.definition, argc, o->pargc);
+ }
+
if (direction==-1) {
/* fail if an inverse operation is not available */
if (!proj_pj_info(P).has_inverse) {
=====================================
src/gie.c
=====================================
--- a/src/gie.c
+++ b/src/gie.c
@@ -681,7 +681,7 @@ back/forward transformation pairs.
banner (T.operation);
fprintf (T.fout, "%s", T.op_ko? " -----\n": delim);
fprintf (T.fout, " FAILURE in %s(%d):\n", opt_strip_path (T.curr_file), (int) F->lineno);
- fprintf (T.fout, " roundtrip deviation: %.3f mm, expected: %.3f mm\n", 1000*r, 1000*d);
+ fprintf (T.fout, " roundtrip deviation: %.6f mm, expected: %.6f mm\n", 1000*r, 1000*d);
}
return another_failure ();
}
@@ -700,13 +700,13 @@ static int expect_message (double d, const char *args) {
fprintf (T.fout, " FAILURE in %s(%d):\n", opt_strip_path (T.curr_file), (int) F->lineno);
fprintf (T.fout, " expected: %s\n", args);
- fprintf (T.fout, " got: %.9f %.9f", T.b.xy.x, T.b.xy.y);
+ fprintf (T.fout, " got: %.12f %.12f", T.b.xy.x, T.b.xy.y);
if (T.b.xyzt.t!=0 || T.b.xyzt.z!=0)
fprintf (T.fout, " %.9f", T.b.xyz.z);
if (T.b.xyzt.t!=0)
fprintf (T.fout, " %.9f", T.b.xyzt.t);
fprintf (T.fout, "\n");
- fprintf (T.fout, " deviation: %.3f mm, expected: %.3f mm\n", 1000*d, 1000*T.tolerance);
+ fprintf (T.fout, " deviation: %.6f mm, expected: %.6f mm\n", 1000*d, 1000*T.tolerance);
return 1;
}
@@ -829,42 +829,35 @@ Tell GIE what to expect, when transforming the ACCEPTed input
/* expected angular values, probably in degrees */
ce = proj_angular_output (T.P, T.dir)? torad_coord (T.P, T.dir, T.e): T.e;
if (T.verbosity > 3)
- printf ("EXPECTS %.4f %.4f %.4f %.4f\n", ce.v[0],ce.v[1],ce.v[2],ce.v[3]);
+ printf ("EXPECTS %.12f %.12f %.12f %.12f\n", ce.v[0],ce.v[1],ce.v[2],ce.v[3]);
/* input ("accepted") values, also probably in degrees */
ci = proj_angular_input (T.P, T.dir)? torad_coord (T.P, T.dir, T.a): T.a;
if (T.verbosity > 3)
- printf ("ACCEPTS %.4f %.4f %.4f %.4f\n", ci.v[0],ci.v[1],ci.v[2],ci.v[3]);
+ printf ("ACCEPTS %.12f %.12f %.12f %.12f\n", ci.v[0],ci.v[1],ci.v[2],ci.v[3]);
/* angular output from proj_trans comes in radians */
co = expect_trans_n_dim (ci);
T.b = proj_angular_output (T.P, T.dir)? todeg_coord (T.P, T.dir, co): co;
if (T.verbosity > 3)
- printf ("GOT %.4f %.4f %.4f %.4f\n", co.v[0],co.v[1],co.v[2],co.v[3]);
-
- /* but there are a few more possible input conventions... */
- if (proj_angular_output (T.P, T.dir)) {
- double e = HUGE_VAL;
- d = proj_lpz_dist (T.P, ce.lpz, co.lpz);
- /* check whether input was already in radians */
- if (d > T.tolerance)
- e = proj_lpz_dist (T.P, T.e.lpz, co.lpz);
- if (e < d)
- d = e;
-
- /* or the tolerance may be based on euclidean distance */
- if (d > T.tolerance)
- e = proj_xyz_dist (T.b.xyz, T.e.xyz);
- if (e < d)
- d = e;
+ printf ("GOT %.12f %.12f %.12f %.12f\n", co.v[0],co.v[1],co.v[2],co.v[3]);
+
+#if 0
+ /* We need to handle unusual axis orders - that'll be an item for version 5.1 */
+ if (T.P->axisswap) {
+ ce = proj_trans (T.P->axisswap, T.dir, ce);
+ co = proj_trans (T.P->axisswap, T.dir, co);
}
+#endif
+ if (proj_angular_output (T.P, T.dir))
+ d = proj_lpz_dist (T.P, ce, co);
else
- d = proj_xyz_dist (T.b.xyz, T.e.xyz);
+ d = proj_xyz_dist (co, ce);
+
if (d > T.tolerance)
return expect_message (d, args);
another_success ();
-
return 0;
}
@@ -1439,13 +1432,13 @@ static int pj_horner_selftest (void) {
/* Forward projection */
b = proj_trans (P, PJ_FWD, a);
- dist = proj_xy_dist (b.xy, c.xy);
+ dist = proj_xy_dist (b, c);
if (dist > 0.001)
return 2;
/* Inverse projection */
b = proj_trans (P, PJ_INV, c);
- dist = proj_xy_dist (b.xy, a.xy);
+ dist = proj_xy_dist (b, a);
if (dist > 0.001)
return 3;
@@ -1527,7 +1520,7 @@ static int pj_cart_selftest (void) {
/* Forward again, to get two linear items for comparison */
a = proj_trans (P, PJ_FWD, a);
- dist = proj_xy_dist (a.xy, b.xy);
+ dist = proj_xy_dist (a, b);
if (dist > 2e-9)
return 3;
@@ -1778,7 +1771,7 @@ static int pj_cart_selftest (void) {
a.lp.lam = PJ_TORAD(12);
a.lp.phi = PJ_TORAD(55);
- factors = proj_factors(P, a.lp);
+ factors = proj_factors(P, a);
if (proj_errno(P))
return 85; /* factors not created correctly */
@@ -1843,12 +1836,12 @@ static int pj_cart_selftest (void) {
/* linear in and out */
P = proj_create(PJ_DEFAULT_CTX,
- " +proj=helmert +ellps=GRS80"
+ " +proj=helmert"
" +x=0.0127 +y=0.0065 +z=-0.0209 +s=0.00195"
" +rx=-0.00039 +ry=0.00080 +rz=-0.00114"
" +dx=-0.0029 +dy=-0.0002 +dz=-0.0006 +ds=0.00001"
" +drx=-0.00011 +dry=-0.00019 +drz=0.00007"
- " +t_epoch=1988.0 +transpose"
+ " +t_epoch=1988.0 +transpose +no_defs"
);
if (0==P) return 0;
if (proj_angular_input (P, PJ_FWD)) return 116;
@@ -1860,8 +1853,12 @@ static int pj_cart_selftest (void) {
if (proj_angular_input (P, PJ_INV)) return 121;
if (proj_angular_output (P, PJ_FWD)) return 122;
if (proj_angular_output (P, PJ_INV)) return 123;
- proj_destroy(P);
+ /* We specified "no_defs" but didn't give any ellipsoid info */
+ /* pj_init_ctx should defualt to WGS84 */
+ if (P->a != 6378137.0) return 124;
+ if (P->f != 1.0/298.257223563) return 125;
+ proj_destroy(P);
return 0;
}
@@ -1869,9 +1866,6 @@ static int pj_cart_selftest (void) {
-
-
-
static int test_time(const char* args, double tol, double t_in, double t_exp) {
PJ_COORD in, out;
PJ *P = proj_create(PJ_DEFAULT_CTX, args);
=====================================
src/lib_proj.cmake
=====================================
--- a/src/lib_proj.cmake
+++ b/src/lib_proj.cmake
@@ -284,6 +284,10 @@ add_library( ${PROJ_CORE_TARGET}
${ALL_LIBPROJ_HEADERS}
${PROJ_RESOURCES} )
+if (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
+ target_include_directories (${PROJ_CORE_TARGET} INTERFACE
+ $<INSTALL_INTERFACE:${INCLUDEDIR}>)
+endif ()
if(WIN32)
set_target_properties(${PROJ_CORE_TARGET}
=====================================
src/pj_datums.c
=====================================
--- a/src/pj_datums.c
+++ b/src/pj_datums.c
@@ -47,7 +47,8 @@ C_NAMESPACE_VAR const struct PJ_DATUMS pj_datums[] = {
{"NAD27", "nadgrids=@conus, at alaska, at ntv2_0.gsb, at ntv1_can.dat",
"clrk66",
"North_American_Datum_1927"},
-{"potsdam", "towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7",
+{"potsdam", /*"towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7",*/
+ "nadgrids=@BETA2007.gsb",
"bessel",
"Potsdam Rauenberg 1950 DHDN"},
{"carthage","towgs84=-263.0,6.0,431.0", "clrk80ign",
=====================================
src/pj_fwd.c
=====================================
--- a/src/pj_fwd.c
+++ b/src/pj_fwd.c
@@ -73,11 +73,13 @@ static PJ_COORD pj_fwd_prepare (PJ *P, PJ_COORD coo) {
coo = proj_trans (P->hgridshift, PJ_INV, coo);
else if (P->helmert) {
coo = proj_trans (P->cart_wgs84, PJ_FWD, coo); /* Go cartesian in WGS84 frame */
- coo = proj_trans (P->helmert, PJ_FWD, coo); /* Step into local frame */
+ coo = proj_trans (P->helmert, PJ_INV, coo); /* Step into local frame */
coo = proj_trans (P->cart, PJ_INV, coo); /* Go back to angular using local ellps */
}
+ if (coo.lp.lam==HUGE_VAL)
+ return coo;
if (P->vgridshift)
- coo = proj_trans (P->vgridshift, PJ_FWD, coo);
+ coo = proj_trans (P->vgridshift, PJ_FWD, coo); /* Go orthometric from geometric */
/* Distance from central meridian, taking system zero meridian into account */
coo.lp.lam = (coo.lp.lam - P->from_greenwich) - P->lam0;
@@ -92,7 +94,7 @@ static PJ_COORD pj_fwd_prepare (PJ *P, PJ_COORD coo) {
/* We do not support gridshifts on cartesian input */
if (INPUT_UNITS==PJ_IO_UNITS_CARTESIAN && P->helmert)
- return proj_trans (P->helmert, PJ_FWD, coo);
+ return proj_trans (P->helmert, PJ_INV, coo);
return coo;
}
@@ -139,14 +141,18 @@ static PJ_COORD pj_fwd_finalize (PJ *P, PJ_COORD coo) {
coo.lpz.lam = adjlon(coo.lpz.lam);
if (P->vgridshift)
- coo = proj_trans (P->vgridshift, PJ_INV, coo);
+ coo = proj_trans (P->vgridshift, PJ_FWD, coo); /* Go orthometric from geometric */
+ if (coo.lp.lam==HUGE_VAL)
+ return coo;
if (P->hgridshift)
- coo = proj_trans (P->hgridshift, PJ_FWD, coo);
+ coo = proj_trans (P->hgridshift, PJ_INV, coo);
else if (P->helmert) {
coo = proj_trans (P->cart_wgs84, PJ_FWD, coo); /* Go cartesian in WGS84 frame */
- coo = proj_trans (P->helmert, PJ_FWD, coo); /* Step into local frame */
+ coo = proj_trans (P->helmert, PJ_INV, coo); /* Step into local frame */
coo = proj_trans (P->cart, PJ_INV, coo); /* Go back to angular using local ellps */
}
+ if (coo.lp.lam==HUGE_VAL)
+ return coo;
/* If input latitude was geocentrical, convert back to geocentrical */
if (P->geoc)
=====================================
src/pj_geocent.c
=====================================
--- a/src/pj_geocent.c
+++ b/src/pj_geocent.c
@@ -48,7 +48,7 @@ static LP inverse(XY xy, PJ *P) {
return lp;
}
-PJ *PROJECTION(geocent) {
+PJ *CONVERSION (geocent, 0) {
P->is_geocent = 1;
P->x0 = 0.0;
P->y0 = 0.0;
=====================================
src/pj_gridinfo.c
=====================================
--- a/src/pj_gridinfo.c
+++ b/src/pj_gridinfo.c
@@ -564,7 +564,7 @@ static int pj_gridinfo_init_ntv2( projCtx ctx, PAFile fid, PJ_GRIDINFO *gilist )
gi->gridname = pj_strdup( gilist->gridname );
gi->filename = pj_strdup( gilist->filename );
- if (!gi->gridname || gi->filename) {
+ if (!gi->gridname || !gi->filename) {
pj_gridinfo_free(ctx, gi);
pj_dalloc(ct);
pj_gridinfo_free(ctx, gilist);
=====================================
src/pj_init.c
=====================================
--- a/src/pj_init.c
+++ b/src/pj_init.c
@@ -470,22 +470,20 @@ pj_init(int argc, char **argv) {
}
-typedef PJ *(constructor)(PJ *);
-
-static constructor *pj_constructor (const char *name) {
+static PJ_CONSTRUCTOR pj_locate_constructor (const char *name) {
int i;
char *s;
for (i = 0; (s = pj_list[i].id) && strcmp(name, s) ; ++i) ;
if (0==s)
return 0;
- return (constructor *) pj_list[i].proj;
+ return (PJ_CONSTRUCTOR) pj_list[i].proj;
}
PJ *
pj_init_ctx(projCtx ctx, int argc, char **argv) {
char *s, *name;
- constructor *proj;
+ PJ_CONSTRUCTOR proj;
paralist *curr, *init, *start;
int i;
int err;
@@ -511,7 +509,7 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) {
n_inits++;
}
- /* can't have nested pipeline directly */
+ /* can't have nested pipelines directly */
if (n_pipelines > 1) {
pj_ctx_set_errno (ctx, PJD_ERR_MALFORMED_PIPELINE);
return 0;
@@ -559,7 +557,7 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) {
return pj_dealloc_params (ctx, start, PJD_ERR_PROJ_NOT_NAMED);
name += 5;
- proj = pj_constructor (name);
+ proj = pj_locate_constructor (name);
if (0==proj)
return pj_dealloc_params (ctx, start, PJD_ERR_UNKNOWN_PROJECTION_ID);
@@ -593,17 +591,26 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) {
if (pj_datum_set(ctx, start, PIN))
return pj_default_destructor (PIN, proj_errno(PIN));
- if (PIN->need_ellps) {
- int ret = pj_ellipsoid (PIN);
- if (0 != ret) {
+ err = pj_ellipsoid (PIN);
+
+ if (err) {
+ /* Didn't get an ellps, but doesn't need one: Get a free WGS84 */
+ if (PIN->need_ellps) {
pj_log (ctx, PJ_LOG_DEBUG_MINOR, "pj_init_ctx: Must specify ellipsoid or sphere");
return pj_default_destructor (PIN, proj_errno(PIN));
}
- PIN->a_orig = PIN->a;
- PIN->es_orig = PIN->es;
- if (pj_calc_ellipsoid_params (PIN, PIN->a, PIN->es))
- return pj_default_destructor (PIN, PJD_ERR_ECCENTRICITY_IS_ONE);
+ else {
+ if (PJD_ERR_MAJOR_AXIS_NOT_GIVEN==proj_errno (PIN))
+ proj_errno_reset (PIN);
+ PIN->f = 1.0/298.257223563;
+ PIN->a_orig = PIN->a = 6378137.0;
+ PIN->es_orig = PIN->es = PIN->f*(2-PIN->f);
+ }
}
+ PIN->a_orig = PIN->a;
+ PIN->es_orig = PIN->es;
+ if (pj_calc_ellipsoid_params (PIN, PIN->a, PIN->es))
+ return pj_default_destructor (PIN, PJD_ERR_ECCENTRICITY_IS_ONE);
/* Now that we have ellipse information check for WGS84 datum */
if( PIN->datum_type == PJD_3PARAM
=====================================
src/pj_inv.c
=====================================
--- a/src/pj_inv.c
+++ b/src/pj_inv.c
@@ -80,11 +80,13 @@ static PJ_COORD pj_inv_prepare (PJ *P, PJ_COORD coo) {
coo = proj_trans (P->hgridshift, PJ_FWD, coo);
else if (P->helmert) {
coo = proj_trans (P->cart, PJ_FWD, coo); /* Go cartesian in local frame */
- coo = proj_trans (P->helmert, PJ_INV, coo); /* Step into WGS84 */
+ coo = proj_trans (P->helmert, PJ_FWD, coo); /* Step into WGS84 */
coo = proj_trans (P->cart_wgs84, PJ_INV, coo); /* Go back to angular using WGS84 ellps */
}
+ if (coo.lp.lam==HUGE_VAL)
+ return coo;
if (P->vgridshift)
- coo = proj_trans (P->vgridshift, PJ_INV, coo);
+ coo = proj_trans (P->vgridshift, PJ_INV, coo); /* Go geometric from orthometric */
return coo;
}
@@ -99,9 +101,8 @@ static PJ_COORD pj_inv_prepare (PJ *P, PJ_COORD coo) {
coo.xyz.y = P->to_meter * coo.xyz.y - P->y0;
coo.xyz.z = P->to_meter * coo.xyz.z - P->z0;
- if (P->is_geocent) {
+ if (P->is_geocent)
coo = proj_trans (P->cart, PJ_INV, coo);
- }
return coo;
@@ -148,14 +149,18 @@ static PJ_COORD pj_inv_finalize (PJ *P, PJ_COORD coo) {
coo.lpz.lam = adjlon(coo.lpz.lam);
if (P->vgridshift)
- coo = proj_trans (P->vgridshift, PJ_INV, coo);
+ coo = proj_trans (P->vgridshift, PJ_INV, coo); /* Go geometric from orthometric */
+ if (coo.lp.lam==HUGE_VAL)
+ return coo;
if (P->hgridshift)
coo = proj_trans (P->hgridshift, PJ_FWD, coo);
else if (P->helmert) {
coo = proj_trans (P->cart, PJ_FWD, coo); /* Go cartesian in local frame */
- coo = proj_trans (P->helmert, PJ_INV, coo); /* Step into WGS84 */
+ coo = proj_trans (P->helmert, PJ_FWD, coo); /* Step into WGS84 */
coo = proj_trans (P->cart_wgs84, PJ_INV, coo); /* Go back to angular using WGS84 ellps */
}
+ if (coo.lp.lam==HUGE_VAL)
+ return coo;
}
/* If input latitude was geocentrical, convert back to geocentrical */
=====================================
src/proj.def
=====================================
--- a/src/proj.def
+++ b/src/proj.def
@@ -152,3 +152,6 @@ EXPORTS
proj_angular_input @138
proj_angular_output @139
+
+ proj_geod @140
+ proj_context_errno @141
=====================================
src/proj.h
=====================================
--- a/src/proj.h
+++ b/src/proj.h
@@ -112,13 +112,7 @@
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*****************************************************************************/
-/*
-#ifdef _MSC_VER
-#ifndef _USE_MATH_DEFINES
-#define _USE_MATH_DEFINES
-#endif
-#endif
-#include <math.h> For M_PI */
+
#include <stddef.h> /* For size_t */
@@ -151,11 +145,6 @@ typedef union PJ_COORD PJ_COORD;
struct PJ_AREA;
typedef struct PJ_AREA PJ_AREA;
-/* The slimmed down PROJ 5.0.0 version of struct FACTORS */
-/* Will take over the world and the name when we can rid */
-/* the library for deprecated stuff, but it's the typedef */
-/* which is userspace useful, so it does not do much of a */
-/* difference */
struct P5_FACTORS { /* Common designation */
double meridional_scale; /* h */
double parallel_scale; /* k */
@@ -210,15 +199,16 @@ typedef struct { double u, v, w, t; } PJ_UVWT;
typedef struct { double lam, phi, z, t; } PJ_LPZT;
typedef struct { double o, p, k; } PJ_OPK; /* Rotations: omega, phi, kappa */
typedef struct { double e, n, u; } PJ_ENU; /* East, North, Up */
+typedef struct { double s, a1, a2; } PJ_GEOD; /* Geodesic length, fwd azi, rev azi */
-/* Classic proj.4 pair/triplet types */
-typedef struct { double u, v; } UV;
-typedef struct { double x, y; } XY;
-typedef struct { double lam, phi; } LP;
+/* Classic proj.4 pair/triplet types - moved into the PJ_ name space */
+typedef struct { double u, v; } PJ_UV;
+typedef struct { double x, y; } PJ_XY;
+typedef struct { double lam, phi; } PJ_LP;
-typedef struct { double x, y, z; } XYZ;
-typedef struct { double u, v, w; } UVW;
-typedef struct { double lam, phi, z; } LPZ;
+typedef struct { double x, y, z; } PJ_XYZ;
+typedef struct { double u, v, w; } PJ_UVW;
+typedef struct { double lam, phi, z; } PJ_LPZ;
/* Avoid preprocessor renaming and implicit type-punning: Use a union to make it explicit */
@@ -227,14 +217,15 @@ union PJ_COORD {
PJ_XYZT xyzt;
PJ_UVWT uvwt;
PJ_LPZT lpzt;
+ PJ_GEOD geod;
PJ_OPK opk;
PJ_ENU enu;
- XYZ xyz;
- UVW uvw;
- LPZ lpz;
- XY xy;
- UV uv;
- LP lp;
+ PJ_XYZ xyz;
+ PJ_UVW uvw;
+ PJ_LPZ lpz;
+ PJ_XY xy;
+ PJ_UV uv;
+ PJ_LP lp;
};
@@ -263,8 +254,8 @@ struct PJ_GRID_INFO {
char gridname[32]; /* name of grid */
char filename[260]; /* full path to grid */
char format[8]; /* file format of grid */
- LP lowerleft; /* Coordinates of lower left corner */
- LP upperright; /* Coordinates of upper right corner */
+ PJ_LP lowerleft; /* Coordinates of lower left corner */
+ PJ_LP upperright; /* Coordinates of upper right corner */
int n_lon, n_lat; /* Grid size */
double cs_lon, cs_lat; /* Cell size of grid */
};
@@ -336,26 +327,31 @@ PJ_COORD proj_coord (double x, double y, double z, double t);
double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo);
/* Geodesic distance between two points with angular 2D coordinates */
-double proj_lp_dist (const PJ *P, LP a, LP b);
+double proj_lp_dist (const PJ *P, PJ_COORD a, PJ_COORD b);
/* The geodesic distance AND the vertical offset */
-double proj_lpz_dist (const PJ *P, LPZ a, LPZ b);
+double proj_lpz_dist (const PJ *P, PJ_COORD a, PJ_COORD b);
/* Euclidean distance between two points with linear 2D coordinates */
-double proj_xy_dist (XY a, XY b);
+double proj_xy_dist (PJ_COORD a, PJ_COORD b);
/* Euclidean distance between two points with linear 3D coordinates */
-double proj_xyz_dist (XYZ a, XYZ b);
+double proj_xyz_dist (PJ_COORD a, PJ_COORD b);
+
+/* Geodesic distance (in meter) + fwd and rev azimuth between two points on the ellipsoid */
+PJ_COORD proj_geod (const PJ *P, PJ_COORD a, PJ_COORD b);
+
/* Set or read error level */
+int proj_context_errno (PJ_CONTEXT *ctx);
int proj_errno (const PJ *P);
int proj_errno_set (const PJ *P, int err);
int proj_errno_reset (const PJ *P);
int proj_errno_restore (const PJ *P, int err);
/* Scaling and angular distortion factors */
-PJ_FACTORS proj_factors(PJ *P, LP lp);
+PJ_FACTORS proj_factors(PJ *P, PJ_COORD lp);
/* Info functions - get information about various PROJ.4 entities */
PJ_INFO proj_info(void);
=====================================
src/proj_4D_api.c
=====================================
--- a/src/proj_4D_api.c
+++ b/src/proj_4D_api.c
@@ -67,32 +67,47 @@ int proj_angular_output (PJ *P, enum PJ_DIRECTION dir) {
}
+/* Geodesic distance (in meter) + fwd and rev azimuth between two points on the ellipsoid */
+PJ_COORD proj_geod (const PJ *P, PJ_COORD a, PJ_COORD b) {
+ PJ_COORD c;
+ /* Note: the geodesic code takes arguments in degrees */
+ geod_inverse (P->geod,
+ PJ_TODEG(a.lpz.phi), PJ_TODEG(a.lpz.lam),
+ PJ_TODEG(b.lpz.phi), PJ_TODEG(b.lpz.lam),
+ c.v, c.v+1, c.v+2
+ );
+
+ return c;
+}
+
+
/* Geodesic distance (in meter) between two points with angular 2D coordinates */
-double proj_lp_dist (const PJ *P, LP a, LP b) {
+double proj_lp_dist (const PJ *P, PJ_COORD a, PJ_COORD b) {
double s12, azi1, azi2;
/* Note: the geodesic code takes arguments in degrees */
- geod_inverse (P->geod, PJ_TODEG(a.phi), PJ_TODEG(a.lam), PJ_TODEG(b.phi), PJ_TODEG(b.lam), &s12, &azi1, &azi2);
+ geod_inverse (P->geod,
+ PJ_TODEG(a.lpz.phi), PJ_TODEG(a.lpz.lam),
+ PJ_TODEG(b.lpz.phi), PJ_TODEG(b.lpz.lam),
+ &s12, &azi1, &azi2
+ );
return s12;
}
/* The geodesic distance AND the vertical offset */
-double proj_lpz_dist (const PJ *P, LPZ a, LPZ b) {
- PJ_COORD aa, bb;
- aa.lpz = a;
- bb.lpz = b;
- if (HUGE_VAL==a.lam || HUGE_VAL==b.lam)
+double proj_lpz_dist (const PJ *P, PJ_COORD a, PJ_COORD b) {
+ if (HUGE_VAL==a.lpz.lam || HUGE_VAL==b.lpz.lam)
return HUGE_VAL;
- return hypot (proj_lp_dist (P, aa.lp, bb.lp), a.z - b.z);
+ return hypot (proj_lp_dist (P, a, b), a.lpz.z - b.lpz.z);
}
/* Euclidean distance between two points with linear 2D coordinates */
-double proj_xy_dist (XY a, XY b) {
- return hypot (a.x - b.x, a.y - b.y);
+double proj_xy_dist (PJ_COORD a, PJ_COORD b) {
+ return hypot (a.xy.x - b.xy.x, a.xy.y - b.xy.y);
}
/* Euclidean distance between two points with linear 3D coordinates */
-double proj_xyz_dist (XYZ a, XYZ b) {
- return hypot (hypot (a.x - b.x, a.y - b.y), a.z - b.z);
+double proj_xyz_dist (PJ_COORD a, PJ_COORD b) {
+ return hypot (proj_xy_dist (a, b), a.xyz.z - b.xyz.z);
}
@@ -125,9 +140,9 @@ double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo) {
/* checking for angular *input* since we do a roundtrip, and end where we begin */
if (proj_angular_input (P, direction))
- return proj_lpz_dist (P, org.lpz, t.lpz);
+ return proj_lpz_dist (P, org, t);
- return proj_xyz_dist (org.xyz, t.xyz);
+ return proj_xyz_dist (org, t);
}
@@ -399,6 +414,8 @@ static int pj_cs2cs_emulation_setup (PJ *P) {
If any cs2cs style modifiers are given (axis=..., towgs84=..., ) create the 4D API
equivalent operations, so the preparation and finalization steps in the pj_inv/pj_fwd
invocators can emulate the behaviour of pj_transform and the cs2cs app.
+
+Returns 1 on success, 0 on failure
**************************************************************************************/
PJ *Q;
paralist *p;
@@ -473,12 +490,13 @@ invocators can emulate the behaviour of pj_transform and the cs2cs app.
def = malloc (100+n);
if (0==def)
return 0;
- sprintf (def, "break_cs2cs_recursion proj=helmert %s", s);
+ sprintf (def, "break_cs2cs_recursion proj=helmert %s transpose", s);
Q = proj_create (P->ctx, def);
+ pj_inherit_ellipsoid_def (P, Q);
free (def);
if (0==Q)
return 0;
- P->helmert = skip_prep_fin(Q);
+ P->helmert = skip_prep_fin (Q);
break;
}
@@ -486,25 +504,25 @@ invocators can emulate the behaviour of pj_transform and the cs2cs app.
/* We also need cartesian/geographical transformations if we are working in */
/* geocentric/cartesian space or we need to do a Helmert transform. */
if (P->is_geocent || P->helmert) {
- char def[100];
- sprintf (def, "break_cs2cs_recursion proj=cart");
+ char def[150];
+ sprintf (def, "break_cs2cs_recursion proj=cart a=%40.20g f=%40.20g", P->a, P->f);
Q = proj_create (P->ctx, def);
if (0==Q)
return 0;
- pj_inherit_ellipsoid_def(P, Q);
- P->cart = skip_prep_fin(Q);
+ P->cart = skip_prep_fin (Q);
sprintf (def, "break_cs2cs_recursion proj=cart ellps=WGS84");
Q = proj_create (P->ctx, def);
if (0==Q)
return 0;
- P->cart_wgs84 = skip_prep_fin(Q);
+ P->cart_wgs84 = skip_prep_fin (Q);
}
return 1;
}
+
/*************************************************************************************/
PJ *proj_create (PJ_CONTEXT *ctx, const char *definition) {
/**************************************************************************************
@@ -633,11 +651,26 @@ PJ *proj_destroy (PJ *P) {
return 0;
}
+/*****************************************************************************/
int proj_errno (const PJ *P) {
+/******************************************************************************
+ Read an error level from the context of a PJ.
+******************************************************************************/
return pj_ctx_get_errno (pj_get_ctx ((PJ *) P));
}
/*****************************************************************************/
+int proj_context_errno (PJ_CONTEXT *ctx) {
+/******************************************************************************
+ Read an error directly from a context, without going through a PJ
+ belonging to that context.
+******************************************************************************/
+ if (0==ctx)
+ ctx = pj_get_default_ctx();
+ return pj_ctx_get_errno (ctx);
+}
+
+/*****************************************************************************/
int proj_errno_set (const PJ *P, int err) {
/******************************************************************************
Set context-errno, bubble it up to the thread local errno, return err
@@ -995,7 +1028,7 @@ PJ_INIT_INFO proj_init_info(const char *initname){
/*****************************************************************************/
-PJ_FACTORS proj_factors(PJ *P, LP lp) {
+PJ_FACTORS proj_factors(PJ *P, PJ_COORD lp) {
/******************************************************************************
Cartographic characteristics at point lp.
@@ -1011,7 +1044,7 @@ PJ_FACTORS proj_factors(PJ *P, LP lp) {
if (0==P)
return factors;
- if (pj_factors(lp, P, 0.0, &f))
+ if (pj_factors(lp.lp, P, 0.0, &f))
return factors;
factors.meridional_scale = f.h;
=====================================
src/proj_api.h
=====================================
--- a/src/proj_api.h
+++ b/src/proj_api.h
@@ -25,8 +25,6 @@
* DEALINGS IN THE SOFTWARE.
*****************************************************************************/
-
-
/*
* This version number should be updated with every release!
*
@@ -84,10 +82,18 @@ extern int pj_errno; /* global error return code */
/* These make the function declarations below conform with classic proj */
typedef PJ *projPJ; /* projPJ is a pointer to PJ */
typedef struct projCtx_t *projCtx; /* projCtx is a pointer to projCtx_t */
-# define projXY XY
+#ifdef PROJ_H
+# define projXY PJ_XY
+# define projLP PJ_LP
+# define projXYZ PJ_XYZ
+# define projLPZ PJ_LPZ
+#else
+# define projXY XY
# define projLP LP
# define projXYZ XYZ
# define projLPZ LPZ
+#endif
+
#else
/* i.e. proj_api invoked as primary API */
typedef struct { double u, v; } projUV;
=====================================
src/proj_internal.h
=====================================
--- a/src/proj_internal.h
+++ b/src/proj_internal.h
@@ -91,9 +91,9 @@ PJ_COORD pj_approx_3D_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coo);
/* Grid functionality */
int proj_vgrid_init(PJ *P, const char *grids);
int proj_hgrid_init(PJ *P, const char *grids);
-double proj_vgrid_value(PJ *P, LP lp);
-LP proj_hgrid_value(PJ *P, LP lp);
-LP proj_hgrid_apply(PJ *P, LP lp, PJ_DIRECTION direction);
+double proj_vgrid_value(PJ *P, PJ_LP lp);
+PJ_LP proj_hgrid_value(PJ *P, PJ_LP lp);
+PJ_LP proj_hgrid_apply(PJ *P, PJ_LP lp, PJ_DIRECTION direction);
/* High level functionality for handling thread contexts */
enum proj_log_level {
=====================================
src/projects.h
=====================================
--- a/src/projects.h
+++ b/src/projects.h
@@ -157,10 +157,6 @@ typedef struct { double u, v, w; } projUVW;
#define XYZ projUVW
#define LPZ projUVW
-/* Yes, this is ridiculous, but a consequence of an old and bad decision about implicit type-punning through preprocessor abuse */
-typedef struct { double u, v; } UV;
-typedef struct { double u, v, w; } UVW;
-
#else
typedef struct { double x, y; } XY;
typedef struct { double x, y, z; } XYZ;
@@ -169,6 +165,15 @@ typedef struct { double lam, phi, z; } LPZ;
typedef struct { double u, v; } UV;
typedef struct { double u, v, w; } UVW;
#endif /* ndef PJ_LIB__ */
+
+#else
+typedef PJ_XY XY;
+typedef PJ_LP LP;
+typedef PJ_UV UV;
+typedef PJ_XYZ XYZ;
+typedef PJ_LPZ LPZ;
+typedef PJ_UVW UVW;
+
#endif /* ndef PROJ_H */
@@ -213,6 +218,37 @@ struct PJ_AREA {
struct projCtx_t;
typedef struct projCtx_t projCtx_t;
+/*****************************************************************************
+
+ Some function types that are especially useful when working with PJs
+
+******************************************************************************
+
+PJ_CONSTRUCTOR:
+
+ A function taking a pointer-to-PJ as arg, and returning a pointer-to-PJ.
+ Historically called twice: First with a 0 argument, to allocate memory,
+ second with the first return value as argument, for actual setup.
+
+PJ_DESTRUCTOR:
+
+ A function taking a pointer-to-PJ and an integer as args, then first
+ handling the deallocation of the PJ, afterwards handing the integer over
+ to the error reporting subsystem, and finally returning a null pointer in
+ support of the "return free (P)" (aka "get the hell out of here") idiom.
+
+PJ_OPERATOR:
+
+ A function taking a PJ_COORD and a pointer-to-PJ as args, applying the
+ PJ to the PJ_COORD, and returning the resulting PJ_COORD.
+
+*****************************************************************************/
+typedef PJ *(* PJ_CONSTRUCTOR) (PJ *);
+typedef void *(* PJ_DESTRUCTOR) (PJ *, int);
+typedef PJ_COORD (* PJ_OPERATOR) (PJ_COORD, PJ *);
+/****************************************************************************/
+
+
/* base projection data structure */
struct PJconsts {
@@ -262,10 +298,10 @@ struct PJconsts {
LP (*inv)(XY, PJ *);
XYZ (*fwd3d)(LPZ, PJ *);
LPZ (*inv3d)(XYZ, PJ *);
- PJ_COORD (*fwd4d)(PJ_COORD, PJ *);
- PJ_COORD (*inv4d)(PJ_COORD, PJ *);
+ PJ_OPERATOR fwd4d;
+ PJ_OPERATOR inv4d;
- void *(*destructor)(PJ *, int);
+ PJ_DESTRUCTOR destructor;
/*************************************************************************************
=====================================
test/gie/4D-API_cs2cs-style.gie
=====================================
--- a/test/gie/4D-API_cs2cs-style.gie
+++ b/test/gie/4D-API_cs2cs-style.gie
@@ -12,74 +12,57 @@ but provided through a different interface.
<gie>
-------------------------------------------------------------------------------
-Test the handling of the +towgs84 parameter
+Test the handling of the +towgs84 parameter.
-------------------------------------------------------------------------------
-This example is from Lotti Jivall: "Simplified transformations from
-ITRF2008/IGS08 to ETRS89 for maritime applications". The original
-XYZ data (cf. more_builtins.gie) have been transformed to LPZ using
-this command: echo x_val y_val z_val | cct -It0 proj=cart ellps=GRS80 --
+(additional tests of the towgs84 handling can be found in DHDN_ETRS89.gie)
+-------------------------------------------------------------------------------
+
-NOTE: Here, the ellipsoid has been swapped to WGS84, to align with
- the WGS84 ellipsoid used in the cs2cs emulation introduced by
- pj_cs2cs_emulation_setup()
-------------------------------------------------------------------------------
-operation proj=latlong ellps=WGS84
- towgs84 = 0.676780, 0.654950, -0.528270,
- -0.022742, 0.012667, 0.022704, -0.010700
+This example is from Lotti Jivall: "Simplified transformations from
+ITRF2008/IGS08 to ETRS89 for maritime applications" (see also more_builtins.gie)
-------------------------------------------------------------------------------
-tolerance 0.05 mm
-direction forward
-
-accept 13.4999969828397 54.9999995493206 -0.6034
-expect 13.4999906103972 54.9999957469562 -0.6374
+operation proj=geocent
+ towgs84 = 0.676780, 0.654950, -0.528270,
+ -0.022742, 0.012667, 0.022704,
+ -0.01070
+-------------------------------------------------------------------------------
+tolerance 1 um
direction inverse
-accept 13.4999906103972 54.9999957469562 -0.6374
-expect 13.4999969828397 54.9999995493206 -0.6034
+accept 3565285.00000000 855949.00000000 5201383.00000000
+expect 3565285.41342351 855948.67986759 5201382.72939791
-------------------------------------------------------------------------------
-
-------------------------------------------------------------------------------
This example is a random point, transformed from ED50 to ETRS89 using KMStrans2.
-
-NOTE: Signs swapped wrt. KMStrans2, which apparently uses frame rotation.
-------------------------------------------------------------------------------
operation proj=latlong ellps=intl
- towgs84 = 081.07030, 089.36030, 115.75260,
- 000.48488, 000.02436, 000.41321, 0.540645
+ towgs84 = -081.07030, -089.36030, -115.75260,
+ 000.48488, 000.02436, 000.41321, -0.540645
-------------------------------------------------------------------------------
-tolerance 0.1 mm
-# echo SWAPPED and trimmed - expect succcess
-# accept 16.819999997 55.170000002 61.0
+tolerance 25 mm
+
accept 16.82 55.17 61.0
expect 16.8210462130 55.1705688946 29.0317
-------------------------------------------------------------------------------
-This commented-out version of the example above was used to detect the sign
-discrepancy between KMSTrans2 and PROJ.
--------------------------------------------------------------------------------
-operation proj=latlong ellps=intl
- towgs84 = -081.07030, -089.36030, -115.75260,
- -000.48488, -000.02436, -000.41321, -0.540645
--------------------------------------------------------------------------------
-# echo NOT SWAPPED - Expect failure
-# accept 16.8210462130 55.1705688946 29.0317
-# expect 16.819999997 55.170000002 61.0
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------
operation proj=latlong nadgrids=nzgd2kgrid0005.gsb ellps=GRS80
-------------------------------------------------------------------------------
-tolerance 1 nm
+This functionality is also tested in DHDN_ETRS89.gie
+-------------------------------------------------------------------------------
+tolerance 1 mm
ignore pjd_err_failed_to_load_grid
-accept 173 -45 0 0
-expect 172.999892181021551 -45.001620431954613 0 0
+accept 173 -45
+expect 172.999892181021551 -45.001620431954613
direction inverse
-accept 172.999892181021551 -45.001620431954613 0 0
-expect 173 -45 0 0
+accept 172.999892181021551 -45.001620431954613
+expect 173 -45
-------------------------------------------------------------------------------
@@ -89,9 +72,12 @@ operation proj=latlong geoidgrids=egm96_15.gtx ellps=GRS80
-------------------------------------------------------------------------------
tolerance 15 cm # lax tolerance due to widespread bad egm96 file
ignore pjd_err_failed_to_load_grid
+
accept 12.5 55.5 0
expect 12.5 55.5 -36.0213
+
direction inverse
+
accept 12.5 55.5 -36.0213
expect 12.5 55.5 0
-------------------------------------------------------------------------------
@@ -111,6 +97,10 @@ expect 12.5 55.5 0
-------------------------------------------------------------------------------
Same as the two above, but also do axis swapping.
-------------------------------------------------------------------------------
+NOTE: A number of the tests below are commented out. The actually do the
+right thing, but the gie distance computation is not yet able to cope
+with "unusual" axis orders
+-------------------------------------------------------------------------------
operation proj=latlong geoidgrids=egm96_15.gtx axis=neu ellps=GRS80
-------------------------------------------------------------------------------
tolerance 15 cm # lax tolerance due to widely distributed, bad egm96 file
@@ -125,11 +115,11 @@ operation proj=latlong geoidgrids=egm96_15.gtx axis=dne ellps=GRS80
-------------------------------------------------------------------------------
tolerance 15 cm # lax tolerance due to widely distributed, bad egm96 file
ignore pjd_err_failed_to_load_grid
-accept 12.5 55.5 0
-expect 36.0213 55.5 12.5
-direction inverse
-accept 36.0213 55.5 12.5
-expect 12.5 55.5 0
+# accept 12.5 55.5 0
+# expect 36.0213 55.5 12.5
+# direction inverse
+# accept 36.0213 55.5 12.5
+# expect 12.5 55.5 0
-------------------------------------------------------------------------------
operation proj=merc geoidgrids=egm96_15.gtx ellps=GRS80
-------------------------------------------------------------------------------
@@ -152,9 +142,9 @@ tolerance 15 cm # lax tolerance due to widely distributed, bad egm96 file
ignore pjd_err_failed_to_load_grid
accept 12.5 55.5 0
expect 55.5 -36.0213 12.5
-direction inverse
-accept 55.5 -36.0213 12.5
-expect 12.5 55.5 0
+# direction inverse
+# accept 55.5 -36.0213 12.5
+# expect 12.5 55.5 0
-------------------------------------------------------------------------------
operation proj=merc geoidgrids=egm96_15.gtx axis=sue ellps=GRS80
-------------------------------------------------------------------------------
@@ -162,8 +152,38 @@ tolerance 15 cm
ignore pjd_err_failed_to_load_grid
accept 12.5 55.5 0
expect -7424275.1946 -36.0213 1391493.6349 0.0000
-direction inverse
-accept -7424275.1946 -36.0213 1391493.6349 0.0000
-expect 12.5 55.5 0
+# direction inverse
+# accept -7424275.1946 -36.0213 1391493.6349 0.0000
+# expect 12.5 55.5 0
+-------------------------------------------------------------------------------
+
+
+
+-------------------------------------------------------------------------------
+A test case from a comment by Github user c0nk
+-------------------------------------------------------------------------------
+operation proj=somerc
+ lat_0=46.95240555555556 lon_0=7.439583333333333 k_0=1
+ x_0=2600000 y_0=1200000 ellps=bessel
+ towgs84=674.374,15.056,405.346 no_defs
+-------------------------------------------------------------------------------
+tolerance 20 cm
+accept 7.438632495 46.951082877
+expect 2600000.0 1200000.0
+-------------------------------------------------------------------------------
+Same test, but now implemented as a pipeline. This is for testing a nasty bug,
+where, at the end of pipeline creation, a false warning about missing ellps was
+left behind from the creation of the Helmert step (now repaired in pj_init).
+-------------------------------------------------------------------------------
+operation proj=pipeline
+ step proj=cart ellps=WGS84 no_defs
+ step proj=helmert x=674.37400 y=15.05600 z=405.34600 inv no_defs
+ step proj=cart ellps=bessel no_defs inv
+ step proj=somerc lat_0=46.95240555555556 lon_0=7.439583333333333
+ k_0=1 x_0=2600000 y_0=1200000 ellps=bessel units=m no_defs
+-------------------------------------------------------------------------------
+tolerance 20 cm
+accept 7.438632495 46.951082877
+expect 2600000.0 1200000.0
-------------------------------------------------------------------------------
</gie>
=====================================
test/gie/GDA.gie
=====================================
--- a/test/gie/GDA.gie
+++ b/test/gie/GDA.gie
@@ -50,6 +50,7 @@ operation proj = pipeline ellps=GRS80;
z = -0.04019; rz = -0.0328979; s = -0.009994;
step proj = cart inv;
-----------------------------------------------------------------------------------
+tolerance 2 mm
accept 133.88551329 -23.67012389 603.3466 0 # Alice Springs GDA94
expect 133.8855216 -23.67011014 603.2489 0 # Alice Springs GDA2020
-------------------------------------------------------------------------------
=====================================
test/gie/builtins.gie
=====================================
--- a/test/gie/builtins.gie
+++ b/test/gie/builtins.gie
@@ -20,7 +20,7 @@ Albers Equal Area
-------------------------------------------------------------------------------
operation +proj=aea +ellps=GRS80 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222571.608757106 110653.326743030
accept 2 -1
@@ -43,7 +43,7 @@ expect -0.001796630 -0.000904370
-------------------------------------------------------------------------------
operation +proj=aea +R=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223334.085170885 111780.431884472
accept 2 -1
@@ -73,7 +73,7 @@ Azimuthal Equidistant
-------------------------------------------------------------------------------
operation +proj=aeqd +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222616.522190052 110596.996549550
accept 2 -1
@@ -96,7 +96,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=aeqd +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223379.456047271 111723.757570854
accept 2 -1
@@ -126,7 +126,7 @@ Airy
-------------------------------------------------------------------------------
operation +proj=airy +a=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 189109.886908621 94583.752387504
accept 2 -1
@@ -145,7 +145,7 @@ Aitoff
-------------------------------------------------------------------------------
operation +proj=aitoff +R=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223379.458811696 111706.742883853
accept 2 -1
@@ -174,7 +174,7 @@ Mod. Stereographic of Alaska
-------------------------------------------------------------------------------
operation +proj=alsk +ellps=clrk66
-------------------------------------------------------------------------------
-tolerance 0.00001 mm
+tolerance 0.1 mm
accept -160.000000000 55.000000000
expect -513253.146950842 -968928.031867943
accept -160.000000000 70.000000000
@@ -197,7 +197,7 @@ expect -144.758985461 60.202929201
-------------------------------------------------------------------------------
operation +proj=alsk +R=6370997
-------------------------------------------------------------------------------
-tolerance 0.0001 mm
+tolerance 0.1 mm
accept -160.000000000 55.000000000
expect -511510.319410844 -967150.991676078
accept -160.000000000 70.000000000
@@ -226,7 +226,7 @@ Apian Globular I
-------------------------------------------------------------------------------
operation +proj=apian +a=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223374.577355253 111701.072127637
accept 2 -1
@@ -245,7 +245,7 @@ August Epicycloidal
-------------------------------------------------------------------------------
operation +proj=august +a=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223404.978180972 111722.340289763
accept 2 -1
@@ -264,7 +264,7 @@ Bacon Globular
-------------------------------------------------------------------------------
operation +proj=bacon +a=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223334.132555965 175450.725922666
accept 2 -1
@@ -283,7 +283,7 @@ Bipolar conic of western hemisphere
-------------------------------------------------------------------------------
operation +proj=bipc +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 2452160.217725756 -14548450.759654747
accept 2 -1
@@ -306,7 +306,7 @@ expect -73.034496627 17.246832896
-------------------------------------------------------------------------------
operation +proj=bipc +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 2460565.740974965 -14598319.989330800
accept 2 -1
@@ -335,7 +335,7 @@ Boggs Eumorphic
-------------------------------------------------------------------------------
operation +proj=boggs +a=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 211949.700808182 117720.998305411
accept 2 -1
@@ -355,7 +355,7 @@ Bonne (Werner lat_1=90)
-------------------------------------------------------------------------------
operation +proj=bonne +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222605.296097157 55321.139565495
accept 2 -1
@@ -378,7 +378,7 @@ expect -0.001796698 0.499095631
-------------------------------------------------------------------------------
operation +proj=bonne +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223368.115572528 55884.555246394
accept 2 -1
@@ -407,7 +407,7 @@ Cal Coop Ocean Fish Invest Lines/Stations
-------------------------------------------------------------------------------
operation +proj=calcofi +ellps=GRS80 +lat_1=0.5 +lat_2=2 +no_defs
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 508.444872150 -1171.764860418
accept 2 -1
@@ -430,7 +430,7 @@ expect -62.486322854 87.980755945
-------------------------------------------------------------------------------
operation +proj=calcofi +R=6400000 +lat_1=0.5 +lat_2=2 +no_defs
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 507.090507488 -1164.727375198
accept 2 -1
@@ -459,7 +459,7 @@ Cassini
-------------------------------------------------------------------------------
operation +proj=cass +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222605.285776991 110642.229253999
accept 2 -1
@@ -482,7 +482,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=cass +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223368.105203484 111769.145040586
accept 2 -1
@@ -513,7 +513,7 @@ operation +proj=pipeline +R=6390000
+step +proj=ccon +lat_1=52 +lat_0=52 +lon_0=19 +x_0=330000 +y_0=-350000
+step +proj=axisswap +order=1,-2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 24 55
expect 650031.54109413219363 4106.1617770643609028
accept 15 49
@@ -544,7 +544,7 @@ Central Cylindrical
-------------------------------------------------------------------------------
operation +proj=cc +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 111712.415540593
accept 2 -1
@@ -574,7 +574,7 @@ Equal Area Cylindrical
-------------------------------------------------------------------------------
operation +proj=cea +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222638.981586547 110568.812396267
accept 2 -1
@@ -597,7 +597,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=cea +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 111695.401198614
accept 2 -1
@@ -627,7 +627,7 @@ Chamberlin Trimetric
-------------------------------------------------------------------------------
operation +proj=chamb +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect -27864.779586801 -223364.324593274
accept 2 -1
@@ -646,7 +646,7 @@ Collignon
-------------------------------------------------------------------------------
operation +proj=collg +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 249872.921577930 99423.174788460
accept 2 -1
@@ -675,7 +675,7 @@ Compact Miller
-------------------------------------------------------------------------------
operation +proj=comill +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 110611.859089459
accept 2 -1
@@ -704,7 +704,7 @@ Craster Parabolic (Putnins P4)
-------------------------------------------------------------------------------
operation +proj=crast +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 218280.142056781 114306.045604280
accept 2 -1
@@ -733,7 +733,7 @@ Denoyer Semi-Elliptical
-------------------------------------------------------------------------------
operation +proj=denoy +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223377.422876954 111701.072127637
accept 2 -1
@@ -752,7 +752,7 @@ Eckert I
-------------------------------------------------------------------------------
operation +proj=eck1 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 204680.888202951 102912.178426065
accept 2 -1
@@ -781,7 +781,7 @@ Eckert II
-------------------------------------------------------------------------------
operation +proj=eck2 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 204472.870907960 121633.734975242
accept 2 -1
@@ -810,7 +810,7 @@ Eckert III
-------------------------------------------------------------------------------
operation +proj=eck3 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 188652.015721538 94328.919337031
accept 2 -1
@@ -839,7 +839,7 @@ Eckert IV
-------------------------------------------------------------------------------
operation +proj=eck4 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 188646.389356416 132268.540174065
accept 2 -1
@@ -868,7 +868,7 @@ Eckert V
-------------------------------------------------------------------------------
operation +proj=eck5 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 197031.392134061 98523.198847227
accept 2 -1
@@ -897,7 +897,7 @@ Eckert VI
-------------------------------------------------------------------------------
operation +proj=eck6 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 197021.605628992 126640.420733174
accept 2 -1
@@ -927,7 +927,7 @@ Equidistant Cylindrical (Plate Caree)
-------------------------------------------------------------------------------
operation +proj=eqc +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 111701.072127637
accept 2 -1
@@ -957,7 +957,7 @@ Equidistant Conic
-------------------------------------------------------------------------------
operation +proj=eqdc +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222588.440269286 110659.134907347
accept 2 -1
@@ -980,7 +980,7 @@ expect -0.001796358 -0.000904370
-------------------------------------------------------------------------------
operation +proj=eqdc +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223351.088175114 111786.108747174
accept 2 -1
@@ -1010,7 +1010,7 @@ Euler
-------------------------------------------------------------------------------
operation +proj=euler +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222597.634659108 111404.240549919
accept 2 -1
@@ -1033,7 +1033,7 @@ expect -0.001796279 -0.000898316
-------------------------------------------------------------------------------
operation +proj=euler +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223360.655598694 111786.112389791
accept 2 -1
@@ -1064,7 +1064,7 @@ lat_0=(0)
-------------------------------------------------------------------------------
operation +proj=etmerc +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5 +zone=30
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222650.796797586 110642.229411933
accept 2 -1
@@ -1093,7 +1093,7 @@ Fahey
-------------------------------------------------------------------------------
operation +proj=fahey +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 182993.344649124 101603.193569884
accept 2 -1
@@ -1122,7 +1122,7 @@ Foucaut
-------------------------------------------------------------------------------
operation +proj=fouc +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222588.120675892 111322.316700694
accept 2 -1
@@ -1145,7 +1145,7 @@ expect -0.001796631 -0.000898315
-------------------------------------------------------------------------------
operation +proj=fouc +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223351.109003414 111703.907721713
accept 2 -1
@@ -1174,7 +1174,7 @@ Foucaut Sinusoidal
-------------------------------------------------------------------------------
operation +proj=fouc_s +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 111695.401198614
accept 2 -1
@@ -1203,7 +1203,7 @@ Gall (Gall Stereographic)
-------------------------------------------------------------------------------
operation +proj=gall +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 157969.171134520 95345.249178386
accept 2 -1
@@ -1232,7 +1232,7 @@ Geocentric
-------------------------------------------------------------------------------
operation +proj=geocent +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1 0
expect 6373287.27950247 222560.09599219 110568.77482092
accept 2 -1 0
@@ -1255,7 +1255,7 @@ expect -0.001796631 -0.000898315
-------------------------------------------------------------------------------
operation +proj=geocent +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
===============================================================================
@@ -1267,7 +1267,7 @@ Geostationary Satellite View
-------------------------------------------------------------------------------
operation +proj=geos +ellps=GRS80 +lat_1=0.5 +lat_2=2 +h=35785831
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222527.070365800 110551.303413329
accept 2 -1
@@ -1290,7 +1290,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=geos +R=6400000 +lat_1=0.5 +lat_2=2 +h=35785831
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223289.457635795 111677.657456537
accept 2 -1
@@ -1319,7 +1319,7 @@ Ginsburg VIII (TsNIIGAiK)
-------------------------------------------------------------------------------
operation +proj=gins8 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 194350.250939590 111703.907635335
accept 2 -1
@@ -1339,7 +1339,7 @@ General Sinusoidal Series
-------------------------------------------------------------------------------
operation +proj=gn_sinu +a=6400000 +lat_1=0.5 +lat_2=2 +m=1 +n=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223385.132504696 111698.236447187
accept 2 -1
@@ -1368,7 +1368,7 @@ Gnomonic
-------------------------------------------------------------------------------
operation +proj=gnom +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223492.924747185 111780.509206593
accept 2 -1
@@ -1397,7 +1397,7 @@ Goode Homolosine
-------------------------------------------------------------------------------
operation +proj=goode +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223368.119026632 111701.072127637
accept 2 -1
@@ -1426,7 +1426,7 @@ Mod. Stereographic of 48 U.S.
-------------------------------------------------------------------------------
operation +proj=gs48 +R=6370997
-------------------------------------------------------------------------------
-tolerance 0.0001 mm
+tolerance 0.1 mm
accept -119.000000000 40.000000000
expect -1923908.446529346 355874.658944479
accept -70.000000000 64.000000000
@@ -1455,7 +1455,7 @@ Mod. Stereographic of 50 U.S.
-------------------------------------------------------------------------------
operation +proj=gs50 +ellps=clrk66
-------------------------------------------------------------------------------
-tolerance 0.0001 mm
+tolerance 0.1 mm
accept -160.000000000 65.000000000
expect -1874628.537740233 2660907.942291015
accept -130.000000000 45.000000000
@@ -1478,7 +1478,7 @@ expect -75.550660091 34.191114076
-------------------------------------------------------------------------------
operation +proj=gs50 +R=6370997
-------------------------------------------------------------------------------
-tolerance 0.0001 mm
+tolerance 0.1 mm
accept -160.000000000 65.000000000
expect -1867268.253460009 2656506.230401823
accept -130.000000000 45.000000000
@@ -1508,7 +1508,7 @@ Hammer & Eckert-Greifendorff
-------------------------------------------------------------------------------
operation +proj=hammer +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223373.788703241 111703.907397767
accept 2 -1
@@ -1537,7 +1537,7 @@ Hatano Asymmetrical Equal Area
-------------------------------------------------------------------------------
operation +proj=hatano +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 189878.878946528 131409.802440626
accept 2 -1
@@ -1566,7 +1566,7 @@ HEALPix
-------------------------------------------------------------------------------
operation +proj=healpix +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222390.103949239 130406.588664482
accept 2 -1
@@ -1589,7 +1589,7 @@ expect -0.001798641 -0.000766795
-------------------------------------------------------------------------------
operation +proj=healpix +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 131588.044441999
accept 2 -1
@@ -1619,7 +1619,7 @@ rHEALPix
-------------------------------------------------------------------------------
operation +proj=rhealpix +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222390.103949239 130406.588664482
accept 2 -1
@@ -1642,7 +1642,7 @@ expect -0.001798641 -0.000766795
-------------------------------------------------------------------------------
operation +proj=rhealpix +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 131588.044441999
accept 2 -1
@@ -1671,7 +1671,7 @@ Interrupted Goode Homolosine
-------------------------------------------------------------------------------
operation +proj=igh +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223878.497456271 111701.072127637
accept 2 -1
@@ -1701,7 +1701,7 @@ International Map of the World Polyconic
-------------------------------------------------------------------------------
operation +proj=imw_p +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222588.441139376 55321.128653810
accept 2 -1
@@ -1730,7 +1730,7 @@ Icosahedral Snyder Equal Area
-------------------------------------------------------------------------------
operation +proj=isea +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect -1097074.948022474 3442909.309037183
accept 2 -1
@@ -1749,7 +1749,7 @@ Kavraisky V
-------------------------------------------------------------------------------
operation +proj=kav5 +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 200360.905308829 123685.082476998
accept 2 -1
@@ -1772,7 +1772,7 @@ expect -0.001996259 -0.000808483
-------------------------------------------------------------------------------
operation +proj=kav5 +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 201047.703110878 124109.050629171
accept 2 -1
@@ -1801,7 +1801,7 @@ Kavraisky VII
-------------------------------------------------------------------------------
operation +proj=kav7 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 193462.974943729 111701.072127637
accept 2 -1
@@ -1830,7 +1830,7 @@ Krovak
-------------------------------------------------------------------------------
operation +proj=krovak +ellps=GRS80 +no_defs
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect -3196535.232563641 -6617878.867551444
accept 2 -1
@@ -1860,7 +1860,7 @@ Laborde
-------------------------------------------------------------------------------
operation +proj=labrd +ellps=GRS80 +lon_0=0.5 +lat_0=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 166973.166090228 -110536.912730266
accept 2 -1
@@ -1889,7 +1889,7 @@ Lambert Azimuthal Equal Area
-------------------------------------------------------------------------------
operation +proj=laea +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222602.471450095 110589.827224410
accept 2 -1
@@ -1912,7 +1912,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=laea +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223365.281370125 111716.668072916
accept 2 -1
@@ -1942,7 +1942,7 @@ Lagrange
-------------------------------------------------------------------------------
operation +proj=lagrng +a=6400000 +W=2 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 111703.375917226 27929.831908033
accept 2 -1
@@ -1961,7 +1961,7 @@ Larrivee
-------------------------------------------------------------------------------
operation +proj=larr +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223393.637624201 111707.215961256
accept 2 -1
@@ -1980,7 +1980,7 @@ Laskowski
-------------------------------------------------------------------------------
operation +proj=lask +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 217928.275907355 112144.329220142
accept 2 -1
@@ -2000,7 +2000,7 @@ Lambert Conformal Conic
-------------------------------------------------------------------------------
operation +proj=lcc +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222588.439735968 110660.533870800
accept 2 -1
@@ -2030,7 +2030,7 @@ Lambert Conformal Conic Alternative
-------------------------------------------------------------------------------
operation +proj=lcca +ellps=GRS80 +lat_0=1 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222605.285770237 67.806007272
accept 2 -1
@@ -2060,7 +2060,7 @@ Lambert Equal Area Conic
-------------------------------------------------------------------------------
operation +proj=leac +ellps=GRS80 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 220685.140542979 112983.500889396
accept 2 -1
@@ -2083,7 +2083,7 @@ expect -0.001796616 -0.000904387
-------------------------------------------------------------------------------
operation +proj=leac +R=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 221432.868592852 114119.454526532
accept 2 -1
@@ -2112,7 +2112,7 @@ Lee Oblated Stereographic
-------------------------------------------------------------------------------
operation +proj=lee_os +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.0010 mm
+tolerance 0.1 mm
accept 2 1
expect -25564478.952605054 154490848.828625500
accept 2 -1
@@ -2141,7 +2141,7 @@ Loximuthal
-------------------------------------------------------------------------------
operation +proj=loxim +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223382.295791339 55850.536063819
accept 2 -1
@@ -2171,7 +2171,7 @@ Space oblique for LANDSAT
-------------------------------------------------------------------------------
operation +proj=lsat +ellps=GRS80 +lat_1=0.5 +lat_2=2 +lsat=1 +path=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 18241950.014558550 9998256.839822935
accept 2 -1
@@ -2200,7 +2200,7 @@ McBryde-Thomas Flat-Polar Sine (No. 1)
-------------------------------------------------------------------------------
operation +proj=mbt_s +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 204131.517850273 121400.330225508
accept 2 -1
@@ -2223,7 +2223,7 @@ expect -0.001959383 -0.000823699
-------------------------------------------------------------------------------
operation +proj=mbt_s +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 204831.240570992 121816.466696035
accept 2 -1
@@ -2252,7 +2252,7 @@ McBryde-Thomas Flat-Pole Sine (No. 2)
-------------------------------------------------------------------------------
operation +proj=mbt_fps +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 198798.176129850 125512.017254531
accept 2 -1
@@ -2281,7 +2281,7 @@ McBride-Thomas Flat-Polar Parabolic
-------------------------------------------------------------------------------
operation +proj=mbtfpp +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 206804.786929820 120649.762565793
accept 2 -1
@@ -2310,7 +2310,7 @@ McBryde-Thomas Flat-Polar Quartic
-------------------------------------------------------------------------------
operation +proj=mbtfpq +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 209391.854738393 119161.040199055
accept 2 -1
@@ -2339,7 +2339,7 @@ McBryde-Thomas Flat-Polar Sinusoidal
-------------------------------------------------------------------------------
operation +proj=mbtfps +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 204740.117478572 121864.729719340
accept 2 -1
@@ -2369,7 +2369,7 @@ Mercator
-------------------------------------------------------------------------------
operation +proj=merc +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222638.981586547 110579.965218250
accept 2 -1
@@ -2392,7 +2392,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=merc +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 111706.743574944
accept 2 -1
@@ -2421,7 +2421,7 @@ Miller Oblated Stereographic
-------------------------------------------------------------------------------
operation +proj=mil_os +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect -1908527.949594205 -1726237.473061448
accept 2 -1
@@ -2450,7 +2450,7 @@ Miller Cylindrical
-------------------------------------------------------------------------------
operation +proj=mill +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 111704.701754394
accept 2 -1
@@ -2480,7 +2480,7 @@ Space oblique for MISR
-------------------------------------------------------------------------------
operation +proj=misrsom +ellps=GRS80 +lat_1=0.5 +lat_2=2 +path=1
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 18556630.368369825 9533394.675311271
accept 2 -1
@@ -2503,7 +2503,7 @@ expect 127.761567257 -0.001735150
-------------------------------------------------------------------------------
operation +proj=misrsom +R=6400000 +lat_1=0.5 +lat_2=2 +path=1
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 18641249.279170386 9563342.532334166
accept 2 -1
@@ -2532,7 +2532,7 @@ Mollweide
-------------------------------------------------------------------------------
operation +proj=moll +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 201113.698641813 124066.283433860
accept 2 -1
@@ -2562,7 +2562,7 @@ Murdoch I
-------------------------------------------------------------------------------
operation +proj=murd1 +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222600.813473554 111404.244180546
accept 2 -1
@@ -2585,7 +2585,7 @@ expect -0.001796254 -0.000898316
-------------------------------------------------------------------------------
operation +proj=murd1 +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223363.845309492 111786.116032863
accept 2 -1
@@ -2615,7 +2615,7 @@ Murdoch II
-------------------------------------------------------------------------------
operation +proj=murd2 +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222588.099751230 111426.140027412
accept 2 -1
@@ -2638,7 +2638,7 @@ expect -0.001796356 -0.000897888
-------------------------------------------------------------------------------
operation +proj=murd2 +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223351.088007027 111808.086934388
accept 2 -1
@@ -2668,7 +2668,7 @@ Murdoch III
-------------------------------------------------------------------------------
operation +proj=murd3 +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222600.814077577 111404.246601372
accept 2 -1
@@ -2691,7 +2691,7 @@ expect -0.001796254 -0.000898316
-------------------------------------------------------------------------------
operation +proj=murd3 +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223363.845915585 111786.118461987
accept 2 -1
@@ -2720,7 +2720,7 @@ Natural Earth
-------------------------------------------------------------------------------
operation +proj=natearth +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 194507.265257889 112508.737358295
accept 2 -1
@@ -2749,7 +2749,7 @@ Natural Earth 2
-------------------------------------------------------------------------------
operation +proj=natearth2 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 189255.172934731 113022.495810907
accept 2 -1
@@ -2778,7 +2778,7 @@ Nell
-------------------------------------------------------------------------------
operation +proj=nell +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223385.132504696 111698.236447187
accept 2 -1
@@ -2807,7 +2807,7 @@ Nell-Hammer
-------------------------------------------------------------------------------
operation +proj=nell_h +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223385.131640953 111698.236533562
accept 2 -1
@@ -2836,7 +2836,7 @@ Nicolosi Globular
-------------------------------------------------------------------------------
operation +proj=nicol +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223374.561814140 111732.553988545
accept 2 -1
@@ -2856,7 +2856,7 @@ Near-sided perspective
-------------------------------------------------------------------------------
operation +proj=nsper +a=6400000 +h=1000000
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222239.816114100 111153.763991925
accept 2 -1
@@ -2885,7 +2885,7 @@ New Zealand Map Grid
-------------------------------------------------------------------------------
operation +proj=nzmg +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.010 mm
+tolerance 0.1 mm
accept 2 1
expect 3352675144.747425100 -7043205391.100243600
accept 2 -1
@@ -2918,7 +2918,7 @@ General Oblique Transformation
-------------------------------------------------------------------------------
operation +proj=ob_tran +R=6400000 +o_proj=latlon +o_lon_p=20 +o_lat_p=20 +lon_0=180
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect -2.685687214 1.237430235
accept 2 -1
@@ -2948,7 +2948,7 @@ Oblique Cylindrical Equal Area
-------------------------------------------------------------------------------
operation +proj=ocea +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 19994423.837934088 223322.760576728
accept 2 -1
@@ -2978,7 +2978,7 @@ Oblated Equal Area
-------------------------------------------------------------------------------
operation +proj=oea +a=6400000 +lat_1=0.5 +lat_2=2 +n=1 +m=2 +theta=3
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 228926.872097864 99870.488430076
accept 2 -1
@@ -3009,7 +3009,7 @@ Oblique Mercator
-------------------------------------------------------------------------------
operation +proj=omerc +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222650.796885261 110642.229314984
accept 2 -1
@@ -3038,7 +3038,7 @@ Ortelius Oval
-------------------------------------------------------------------------------
operation +proj=ortel +a=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223374.577355253 111701.072127637
accept 2 -1
@@ -3057,7 +3057,7 @@ Orthographic
-------------------------------------------------------------------------------
operation +proj=ortho +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223322.760576727 111695.401198614
accept 2 -1
@@ -3087,7 +3087,7 @@ Perspective Conic
-------------------------------------------------------------------------------
operation +proj=pconic +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222588.098841617 111416.604770067
accept 2 -1
@@ -3110,7 +3110,7 @@ expect -0.001796356 -0.000897965
-------------------------------------------------------------------------------
operation +proj=pconic +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223351.087094295 111798.518992055
accept 2 -1
@@ -3139,7 +3139,7 @@ Patterson Cylindrical
-------------------------------------------------------------------------------
operation +proj=patterson +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 113354.250397780
accept 2 -1
@@ -3168,7 +3168,7 @@ Polyconic (American)
-------------------------------------------------------------------------------
operation +proj=poly +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222605.285770237 110642.194561440
accept 2 -1
@@ -3191,7 +3191,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=poly +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223368.105210219 111769.110491225
accept 2 -1
@@ -3220,7 +3220,7 @@ Putnins P1
-------------------------------------------------------------------------------
operation +proj=putp1 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 211642.762754160 105831.180787330
accept 2 -1
@@ -3249,7 +3249,7 @@ Putnins P2
-------------------------------------------------------------------------------
operation +proj=putp2 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 211638.039634339 117895.033043380
accept 2 -1
@@ -3278,7 +3278,7 @@ Putnins P3
-------------------------------------------------------------------------------
operation +proj=putp3 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 178227.115507794 89124.560786088
accept 2 -1
@@ -3307,7 +3307,7 @@ Putnins P3'
-------------------------------------------------------------------------------
operation +proj=putp3p +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 178238.118539985 89124.560786088
accept 2 -1
@@ -3336,7 +3336,7 @@ Putnins P4'
-------------------------------------------------------------------------------
operation +proj=putp4p +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 195241.477349386 127796.782307926
accept 2 -1
@@ -3365,7 +3365,7 @@ Putnins P5
-------------------------------------------------------------------------------
operation +proj=putp5 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 226367.213380562 113204.568558475
accept 2 -1
@@ -3394,7 +3394,7 @@ Putnins P5'
-------------------------------------------------------------------------------
operation +proj=putp5p +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 226388.175248756 113204.568558475
accept 2 -1
@@ -3423,7 +3423,7 @@ Putnins P6
-------------------------------------------------------------------------------
operation +proj=putp6 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 226369.395133403 110218.523796521
accept 2 -1
@@ -3452,7 +3452,7 @@ Putnins P6'
-------------------------------------------------------------------------------
operation +proj=putp6p +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 198034.195132195 125989.475461323
accept 2 -1
@@ -3481,7 +3481,7 @@ Quartic Authalic
-------------------------------------------------------------------------------
operation +proj=qua_aut +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222613.549033097 111318.077887984
accept 2 -1
@@ -3504,7 +3504,7 @@ expect -0.001796631 -0.000898315
-------------------------------------------------------------------------------
operation +proj=qua_aut +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223376.624524029 111699.654379186
accept 2 -1
@@ -3533,7 +3533,7 @@ Quadrilateralized Spherical Cube
-------------------------------------------------------------------------------
operation +proj=qsc +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 304638.450843852 164123.870923794
accept 2 -1
@@ -3556,7 +3556,7 @@ expect -0.001321341 -0.000610653
-------------------------------------------------------------------------------
operation +proj=qsc +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 305863.792402891 165827.722754715
accept 2 -1
@@ -3585,7 +3585,7 @@ Robinson
-------------------------------------------------------------------------------
operation +proj=robin +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 189588.423282508 107318.530350703
accept 2 -1
@@ -3614,7 +3614,7 @@ Roussilhe Stereographic
-------------------------------------------------------------------------------
operation +proj=rouss +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222644.894131617 110611.091868370
accept 2 -1
@@ -3644,7 +3644,7 @@ Rectangular Polyconic
-------------------------------------------------------------------------------
operation +proj=rpoly +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223368.098302014 111769.110486991
accept 2 -1
@@ -3663,7 +3663,7 @@ Sinusoidal (Sanson-Flamsteed)
-------------------------------------------------------------------------------
operation +proj=sinu +ellps=GRS80 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222605.299539466 110574.388554153
accept 2 -1
@@ -3686,7 +3686,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=sinu +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223368.119026632 111701.072127637
accept 2 -1
@@ -3716,7 +3716,7 @@ Swiss. Obl. Mercator
-------------------------------------------------------------------------------
operation +proj=somerc +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222638.981586547 110579.965218249
accept 2 -1
@@ -3739,7 +3739,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=somerc +R=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223402.144255274 111706.743574944
accept 2 -1
@@ -3769,7 +3769,7 @@ Stereographic
-------------------------------------------------------------------------------
operation +proj=stere +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222644.854550117 110610.883474174
accept 2 -1
@@ -3792,7 +3792,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=stere +R=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223407.810259507 111737.938996443
accept 2 -1
@@ -3821,7 +3821,7 @@ Oblique Stereographic Alternative
-------------------------------------------------------------------------------
operation +proj=sterea +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222644.894109198 110611.091871737
accept 2 -1
@@ -3844,7 +3844,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=sterea +R=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223407.810259507 111737.938996443
accept 2 -1
@@ -3874,7 +3874,7 @@ Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion)
-------------------------------------------------------------------------------
operation +proj=gstmerc +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223413.466406322 111769.145040586
accept 2 -1
@@ -3903,7 +3903,7 @@ Transverse Central Cylindrical
-------------------------------------------------------------------------------
operation +proj=tcc +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223458.844192458 111769.145040586
accept 2 -1
@@ -3922,7 +3922,7 @@ Transverse Cylindrical Equal Area
-------------------------------------------------------------------------------
operation +proj=tcea +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223322.760576727 111769.145040586
accept 2 -1
@@ -3951,7 +3951,7 @@ Times
-------------------------------------------------------------------------------
operation +proj=times +ellps=sphere
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 0.000000000 0.000000000
expect 0.000000000 0.000000000
accept 80.000000000 70.000000000
@@ -3985,7 +3985,7 @@ Tissot
-------------------------------------------------------------------------------
operation +proj=tissot +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222641.078699631 54347.828487281
accept 2 -1
@@ -4008,7 +4008,7 @@ expect -0.001796279 0.511648325
-------------------------------------------------------------------------------
operation +proj=tissot +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223404.248556849 54534.122161158
accept 2 -1
@@ -4037,7 +4037,7 @@ Transverse Mercator
-------------------------------------------------------------------------------
operation +proj=tmerc +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222650.796795778 110642.229411927
accept 2 -1
@@ -4060,7 +4060,7 @@ expect -0.001796631 -0.000904369
-------------------------------------------------------------------------------
operation +proj=tmerc +R=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223413.466406322 111769.145040597
accept 2 -1
@@ -4090,7 +4090,7 @@ Two Point Equidistant
-------------------------------------------------------------------------------
operation +proj=tpeqd +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.15 mm
accept 2 1
expect -27750.758831679 -222599.403691777
accept 2 -1
@@ -4113,7 +4113,7 @@ expect 0.000898554 1.248203369
-------------------------------------------------------------------------------
operation +proj=tpeqd +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect -27845.882978485 -223362.430695260
accept 2 -1
@@ -4143,7 +4143,7 @@ Tilted perspective
-------------------------------------------------------------------------------
operation +proj=tpers +a=6400000 +h=1000000 +azi=20
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 170820.288955531 180460.865555805
accept 2 -1
@@ -4173,7 +4173,7 @@ Universal Polar Stereographic
-------------------------------------------------------------------------------
operation +proj=ups +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 2433455.563438467 -10412543.301512826
accept 2 -1
@@ -4203,7 +4203,7 @@ Urmaev V
-------------------------------------------------------------------------------
operation +proj=urm5 +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223393.638433964 111696.818785117
accept 2 -1
@@ -4223,7 +4223,7 @@ Urmaev Flat-Polar Sinusoidal
-------------------------------------------------------------------------------
operation +proj=urmfps +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 196001.708134192 127306.843329993
accept 2 -1
@@ -4253,7 +4253,7 @@ Universal Transverse Mercator (UTM)
-------------------------------------------------------------------------------
operation +proj=utm +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5 +zone=30
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 1057002.405491298 110955.141175949
accept 2 -1
@@ -4282,7 +4282,7 @@ van der Grinten (I)
-------------------------------------------------------------------------------
operation +proj=vandg +a=6400000 +lat_1=0.5 +lat_2=2 +no_defs
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223395.249543407 111704.596633675
rem 223395.249543407 111704.596633675 osgeo
@@ -4315,7 +4315,7 @@ van der Grinten II
-------------------------------------------------------------------------------
operation +proj=vandg2 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223395.247850437 111718.491037226
accept 2 -1
@@ -4334,7 +4334,7 @@ van der Grinten III
-------------------------------------------------------------------------------
operation +proj=vandg3 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223395.249552831 111704.519904421
accept 2 -1
@@ -4353,7 +4353,7 @@ van der Grinten IV
-------------------------------------------------------------------------------
operation +proj=vandg4 +R=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.01 mm
+tolerance 0.1 mm
accept 2 1
expect 223374.577294355 111701.195484154
accept 2 -1
@@ -4373,7 +4373,7 @@ Vitkovsky I
-------------------------------------------------------------------------------
operation +proj=vitk1 +ellps=GRS80 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 222607.171211458 111404.251442435
accept 2 -1
@@ -4396,7 +4396,7 @@ expect -0.001796202 -0.000898316
-------------------------------------------------------------------------------
operation +proj=vitk1 +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223370.224840471 111786.123319644
accept 2 -1
@@ -4425,7 +4425,7 @@ Wagner I (Kavraisky VI)
-------------------------------------------------------------------------------
operation +proj=wag1 +a=6400000 +lat_1=0.5 +lat_2=2 +n=0.5
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 195986.781561158 127310.075060660
accept 2 -1
@@ -4454,7 +4454,7 @@ Wagner II
-------------------------------------------------------------------------------
operation +proj=wag2 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 206589.888099962 120778.040357547
accept 2 -1
@@ -4484,7 +4484,7 @@ Wagner III
-------------------------------------------------------------------------------
operation +proj=wag3 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223387.021718166 111701.072127637
accept 2 -1
@@ -4513,7 +4513,7 @@ Wagner IV
-------------------------------------------------------------------------------
operation +proj=wag4 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 192801.218662384 129416.216394803
accept 2 -1
@@ -4542,7 +4542,7 @@ Wagner V
-------------------------------------------------------------------------------
operation +proj=wag5 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 203227.051925325 138651.631442713
accept 2 -1
@@ -4571,7 +4571,7 @@ Wagner VI
-------------------------------------------------------------------------------
operation +proj=wag6 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 211652.562164410 105831.180787330
accept 2 -1
@@ -4600,7 +4600,7 @@ Wagner VII
-------------------------------------------------------------------------------
operation +proj=wag7 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 198601.876957312 125637.045714171
accept 2 -1
@@ -4619,7 +4619,7 @@ Werenskiold I
-------------------------------------------------------------------------------
operation +proj=weren +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223378.515757634 146214.093042288
accept 2 -1
@@ -4649,7 +4649,7 @@ Winkel I
-------------------------------------------------------------------------------
operation +proj=wink1 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223385.131640953 111701.072127637
accept 2 -1
@@ -4679,7 +4679,7 @@ Winkel II
-------------------------------------------------------------------------------
operation +proj=wink2 +a=6400000 +lat_1=0.5 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223387.396433786 124752.032797445
accept 2 -1
@@ -4699,7 +4699,7 @@ Winkel Tripel
-------------------------------------------------------------------------------
operation +proj=wintri +a=6400000 +lat_1=0 +lat_2=2
-------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
accept 2 1
expect 223390.801533485 111703.907505745
accept 2 -1
=====================================
test/gie/more_builtins.gie
=====================================
--- a/test/gie/more_builtins.gie
+++ b/test/gie/more_builtins.gie
@@ -208,23 +208,26 @@ expect failure errno failed_to_load_grid
-
-------------------------------------------------------------------------------
Some tests from PJ_hgridshift.c
-------------------------------------------------------------------------------
operation proj=hgridshift +grids=nzgd2kgrid0005.gsb ellps=GRS80
-------------------------------------------------------------------------------
-tolerance 1 nm
-ignore pjd_err_failed_to_load_grid
-accept 173 -45 0 0
-roundtrip 100
+Note: These data are home grown and suitable for regression testing only
+We need a set of authoritative test cases to test the nzgd2000 grid.
-------------------------------------------------------------------------------
-expect 172.999892181021551 -45.001620431954613 0 0
+tolerance 1 mm
+ignore pjd_err_failed_to_load_grid
+accept 172.999892181021551 -45.001620431954613
+expect 173 -45
direction inverse
-accept 172.999892181021551 -45.001620431954613 0 0
-expect 173 -45 0 0
+accept 173 -45
+expect 172.999892181021551 -45.001620431954613
-------------------------------------------------------------------------------
+
+
+-------------------------------------------------------------------------------
# Fail on purpose: open non-existing grid:
operation proj=hgridshift grids=@nonexistinggrid.gsb,anothernonexistinggrid.gsb
expect failure errno failed_to_load_grid
View it on GitLab: https://salsa.debian.org/debian-gis-team/proj/commit/1e4ca627c2ac3b9197e0d31c3c4c96aaf6d81ab4
---
View it on GitLab: https://salsa.debian.org/debian-gis-team/proj/commit/1e4ca627c2ac3b9197e0d31c3c4c96aaf6d81ab4
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-grass-devel/attachments/20180214/54476830/attachment-0001.html>
More information about the Pkg-grass-devel
mailing list