This is an automated email from the git hooks/post-receive script. sebastic pushed a commit to branch experimental in repository proj.
commit 1e4ca627c2ac3b9197e0d31c3c4c96aaf6d81ab4 Author: Bas Couwenberg <[email protected]> Date: Wed Feb 14 07:27:23 2018 +0100 New upstream version 5.0.0~rc3 --- cmake/CMakeLists.txt | 4 + cmake/project-config.cmake.in | 1 + man/man3/pj_init.3 | 2 +- nad/README | 4 + nad/testvarious | 4 +- nad/tv_out.dist | 8 +- src/PJ_pipeline.c | 10 +- src/cct.c | 6 + src/gie.c | 62 ++++--- src/lib_proj.cmake | 4 + src/pj_datums.c | 3 +- src/pj_fwd.c | 18 +- src/pj_geocent.c | 2 +- src/pj_gridinfo.c | 2 +- src/pj_init.c | 35 ++-- src/pj_inv.c | 17 +- src/proj.def | 3 + src/proj.h | 60 ++++--- src/proj_4D_api.c | 79 ++++++--- src/proj_api.h | 12 +- src/proj_internal.h | 6 +- src/projects.h | 50 +++++- test/gie/4D-API_cs2cs-style.gie | 126 ++++++++------ test/gie/GDA.gie | 1 + test/gie/builtins.gie | 352 ++++++++++++++++++++-------------------- test/gie/more_builtins.gie | 19 ++- 26 files changed, 511 insertions(+), 379 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 0fcde0c..7073b7b 100644 --- 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}") diff --git a/cmake/project-config.cmake.in b/cmake/project-config.cmake.in index 9a52b3b..5744546 100644 --- a/cmake/project-config.cmake.in +++ b/cmake/project-config.cmake.in @@ -23,6 +23,7 @@ set (@PROJECT_NAME@_BINARY_DIRS "${_ROOT}/@BINDIR@") set (@PROJECT_NAME@_LIBRARIES proj) # Read in the exported definition of the library include ("${_DIR}/@[email protected]") +include ("${_DIR}/@[email protected]") unset (_ROOT) unset (_DIR) diff --git a/man/man3/pj_init.3 b/man/man3/pj_init.3 index 06ecb33..5a5aede 100644 --- 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 diff --git a/nad/README b/nad/README index 884cedd..4ed6b19 100644 --- 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 <[email protected]> that free + redistribution is allowed and welcome. diff --git a/nad/testvarious b/nad/testvarious index 4ca20a6..8b3c14a 100755 --- 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. diff --git a/nad/tv_out.dist b/nad/tv_out.dist index 28b1562..4dff3a6 100644 --- 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 diff --git a/src/PJ_pipeline.c b/src/PJ_pipeline.c index 2f904ab..25c7a95 100644 --- 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 */ diff --git a/src/cct.c b/src/cct.c index 2ce478b..dc68122 100644 --- 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) { diff --git a/src/gie.c b/src/gie.c index 9931b2e..577ad7c 100644 --- 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); diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake index f1337a5..c9e4d9e 100644 --- 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} diff --git a/src/pj_datums.c b/src/pj_datums.c index 48c77c6..f084f9c 100644 --- 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,@alaska,@ntv2_0.gsb,@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",*/ + "[email protected]", "bessel", "Potsdam Rauenberg 1950 DHDN"}, {"carthage","towgs84=-263.0,6.0,431.0", "clrk80ign", diff --git a/src/pj_fwd.c b/src/pj_fwd.c index 66b86aa..d238fa4 100644 --- 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) diff --git a/src/pj_geocent.c b/src/pj_geocent.c index 6530b10..3d771c4 100644 --- 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; diff --git a/src/pj_gridinfo.c b/src/pj_gridinfo.c index b1b39e0..b855980 100644 --- 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); diff --git a/src/pj_init.c b/src/pj_init.c index 0acc6c7..7848648 100644 --- 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 diff --git a/src/pj_inv.c b/src/pj_inv.c index 5e44eb3..4ea88b6 100644 --- 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 */ diff --git a/src/proj.def b/src/proj.def index f2936ed..d6c84dc 100644 --- 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 diff --git a/src/proj.h b/src/proj.h index 7362949..133f141 100644 --- 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); diff --git a/src/proj_4D_api.c b/src/proj_4D_api.c index 42e3cbf..dab4b40 100644 --- 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; diff --git a/src/proj_api.h b/src/proj_api.h index 40c40ad..5bba588 100644 --- 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; diff --git a/src/proj_internal.h b/src/proj_internal.h index bc3b2dd..071510c 100644 --- 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 { diff --git a/src/projects.h b/src/projects.h index 60bac8a..25ff82a 100644 --- 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; /************************************************************************************* diff --git a/test/gie/4D-API_cs2cs-style.gie b/test/gie/4D-API_cs2cs-style.gie index edd8388..66da063 100644 --- 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> diff --git a/test/gie/GDA.gie b/test/gie/GDA.gie index b77ca93..ea975bb 100644 --- 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 ------------------------------------------------------------------------------- diff --git a/test/gie/builtins.gie b/test/gie/builtins.gie index e8f1bfe..66916cd 100644 --- 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 diff --git a/test/gie/more_builtins.gie b/test/gie/more_builtins.gie index e1c026e..d7074c5 100644 --- 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 [email protected],anothernonexistinggrid.gsb expect failure errno failed_to_load_grid -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/proj.git _______________________________________________ Pkg-grass-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

