From afb37da0535186c6909d4410efc0a20c4a88c8c9 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 21 Nov 2018 21:49:52 +0100 Subject: createFromUserInput("authname:code"): make it case insensitive regarding authname --- src/io.cpp | 20 +++++++++++++++++--- test/unit/test_io.cpp | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/io.cpp b/src/io.cpp index 87caddd0..8a58816f 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -4093,9 +4093,23 @@ BaseObjectNNPtr createFromUserInput(const std::string &text, if (!dbContext) { throw ParsingException("no database context specified"); } - auto factory = - AuthorityFactory::create(NN_NO_CHECK(dbContext), tokens[0]); - return factory->createCoordinateReferenceSystem(tokens[1]); + DatabaseContextNNPtr dbContextNNPtr(NN_NO_CHECK(dbContext)); + const auto &authName = tokens[0]; + const auto &code = tokens[1]; + auto factory = AuthorityFactory::create(dbContextNNPtr, authName); + try { + return factory->createCoordinateReferenceSystem(code); + } catch (...) { + const auto authorities = dbContextNNPtr->getAuthorities(); + for (const auto &authCandidate : authorities) { + if (ci_equal(authCandidate, authName)) { + return AuthorityFactory::create(dbContextNNPtr, + authCandidate) + ->createCoordinateReferenceSystem(code); + } + } + throw; + } } // urn:ogc:def:crs:EPSG::4326 diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 26597f09..00da162c 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -7607,6 +7607,7 @@ TEST(io, createFromUserInput) { EXPECT_NO_THROW(createFromUserInput("+proj=longlat", nullptr)); EXPECT_NO_THROW(createFromUserInput("EPSG:4326", dbContext)); + EXPECT_NO_THROW(createFromUserInput("epsg:4326", dbContext)); EXPECT_NO_THROW( createFromUserInput("urn:ogc:def:crs:EPSG::4326", dbContext)); EXPECT_NO_THROW(createFromUserInput( -- cgit v1.2.3 From fe59ae44f86b20c8ad85a699ae923a67b894c124 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 21 Nov 2018 22:55:36 +0100 Subject: rtodms(): make it output decimal point when locale has comma decimal instead --- src/rtodms.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/rtodms.c b/src/rtodms.c index f0e2f675..674cebdf 100644 --- a/src/rtodms.c +++ b/src/rtodms.c @@ -66,6 +66,13 @@ rtodms(char *s, double r, int pos, int neg) { size_t suffix_len = sign ? 3 : 2; (void)sprintf(ss,format,deg,min,sec,sign); + /* Replace potential decimal comma by decimal point for non C locale */ + for( p = ss; *p != '\0'; ++p ) { + if( *p == ',' ) { + *p = '.'; + break; + } + } for (q = p = ss + strlen(ss) - suffix_len; *p == '0'; --p) ; if (*p != '.') ++p; -- cgit v1.2.3 From 85a4e9149152dd97463651496854f9ecbd720b84 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 21 Nov 2018 22:55:53 +0100 Subject: Move 'builtins' test of src/gie.c to test/unit/gie_self_tests.cpp --- src/gie.c | 632 +------------------------------------------ test/gie/more_builtins.gie | 7 - test/unit/CMakeLists.txt | 8 + test/unit/Makefile.am | 16 +- test/unit/gie_self_tests.cpp | 562 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 581 insertions(+), 644 deletions(-) create mode 100644 test/unit/gie_self_tests.cpp diff --git a/src/gie.c b/src/gie.c index 73b27df8..d71a3e75 100644 --- a/src/gie.c +++ b/src/gie.c @@ -149,7 +149,7 @@ static ffio *ffio_create (const char **tags, size_t n_tags, size_t max_record_si static const char *gie_tags[] = { "", "operation", "accept", "expect", "roundtrip", "banner", "verbose", - "direction", "tolerance", "ignore", "require_grid", "builtins", "echo", "skip", "" + "direction", "tolerance", "ignore", "require_grid", "echo", "skip", "" }; static const size_t n_gie_tags = sizeof gie_tags / sizeof gie_tags[0]; @@ -196,8 +196,6 @@ ffio *F = 0; static gie_ctx T; int tests=0, succs=0, succ_fails=0, fail_fails=0, succ_rtps=0, fail_rtps=0; -int succ_builtins=0, fail_builtins=0; - static const char delim[] = {"-------------------------------------------------------------------------------\n"}; @@ -312,7 +310,6 @@ int main (int argc, char **argv) { if (T.verbosity > 1) { fprintf (T.fout, "Failing roundtrips: %4d, Succeeding roundtrips: %4d\n", fail_rtps, succ_rtps); fprintf (T.fout, "Failing failures: %4d, Succeeding failures: %4d\n", fail_fails, succ_fails); - fprintf (T.fout, "Failing builtins: %4d, Succeeding builtins: %4d\n", fail_builtins, succ_builtins); fprintf (T.fout, "Internal counters: %4.4d(%4.4d)\n", tests, succs); fprintf (T.fout, "%s", delim); } @@ -369,17 +366,6 @@ static int another_failing_roundtrip (void) { return another_failure (); } -static int another_succeeding_builtin (void) { - succ_builtins++; - return another_success (); -} - -static int another_failing_builtin (void) { - fail_builtins++; - return another_failure (); -} - - static int process_file (const char *fname) { FILE *f; @@ -606,57 +592,6 @@ either a conversion or a transformation) return 0; } - - - -static int unitconvert_selftest (void); -static int cart_selftest (void); -static int horner_selftest (void); - -/*****************************************************************************/ -static int builtins (const char *args) { -/***************************************************************************** -There are still a few tests that cannot be described using gie -primitives. Instead, they are implemented as builtins, and invoked -using the "builtins" command verb. -******************************************************************************/ - int i; - if (T.verbosity > 1) { - finish_previous_operation (args); - banner ("builtins: unitconvert, horner, cart"); - } - T.op_ok = 0; - T.op_ko = 0; - T.op_skip = 0; - i = unitconvert_selftest (); - if (i!=0) { - fprintf (T.fout, "unitconvert_selftest fails with %d\n", i); - another_failing_builtin(); - } - else - another_succeeding_builtin (); - - - i = cart_selftest (); - if (i!=0) { - fprintf (T.fout, "cart_selftest fails with %d\n", i); - another_failing_builtin(); - } - else - another_succeeding_builtin (); - - i = horner_selftest (); - if (i!=0) { - fprintf (T.fout, "horner_selftest fails with %d\n", i); - another_failing_builtin(); - } - else - another_succeeding_builtin (); - - return 0; -} - - static PJ_COORD torad_coord (PJ *P, PJ_DIRECTION dir, PJ_COORD a) { size_t i, n; char *axis = "enut"; @@ -1064,7 +999,6 @@ static int dispatch (const char *cmnd, const char *args) { if (0==strcmp (cmnd, "tolerance")) return tolerance (args); if (0==strcmp (cmnd, "ignore")) return ignore (args); if (0==strcmp (cmnd, "require_grid")) return require_grid (args); - if (0==strcmp (cmnd, "builtins")) return builtins (args); if (0==strcmp (cmnd, "echo")) return echo (args); if (0==strcmp (cmnd, "skip")) return skip (args); @@ -1508,567 +1442,3 @@ whitespace etc. The block is stored in G->args. Returns 1 on success, 0 otherwis pj_shrink (G->args); return 1; } - - - - - -static const char tc32_utm32[] = { - " +proj=horner" - " +ellps=intl" - " +range=500000" - " +fwd_origin=877605.269066,6125810.306769" - " +inv_origin=877605.760036,6125811.281773" - " +deg=4" - " +fwd_v=6.1258112678e+06,9.9999971567e-01,1.5372750011e-10,5.9300860915e-15,2.2609497633e-19,4.3188227445e-05,2.8225130416e-10,7.8740007114e-16,-1.7453997279e-19,1.6877465415e-10,-1.1234649773e-14,-1.7042333358e-18,-7.9303467953e-15,-5.2906832535e-19,3.9984284847e-19" - " +fwd_u=8.7760574982e+05,9.9999752475e-01,2.8817299305e-10,5.5641310680e-15,-1.5544700949e-18,-4.1357045890e-05,4.2106213519e-11,2.8525551629e-14,-1.9107771273e-18,3.3615590093e-10,2.4380247154e-14,-2.0241230315e-18,1.2429019719e-15,5.3886155968e-19,-1.0167505000e-18" - " +inv_v=6.1258103208e+06,1.0000002826e+00,-1.5372762184e-10,-5.9304261011e-15,-2.2612705361e-19,-4.3188331419e-05,-2.8225549995e-10,-7.8529116371e-16,1.7476576773e-19,-1.6875687989e-10,1.1236475299e-14,1.7042518057e-18,7.9300735257e-15,5.2881862699e-19,-3.9990736798e-19" - " +inv_u=8.7760527928e+05,1.0000024735e+00,-2.8817540032e-10,-5.5627059451e-15,1.5543637570e-18,4.1357152105e-05,-4.2114813612e-11,-2.8523713454e-14,1.9109017837e-18,-3.3616407783e-10,-2.4382678126e-14,2.0245020199e-18,-1.2441377565e-15,-5.3885232238e-19,1.0167203661e-18" -}; - - -static const char sb_utm32[] = { - " +proj=horner" - " +ellps=intl" - " +range=500000" - " +tolerance=0.0005" - " +fwd_origin=4.94690026817276e+05,6.13342113183056e+06" - " +inv_origin=6.19480258923588e+05,6.13258568148837e+06" - " +deg=3" - " +fwd_c=6.13258562111350e+06,6.19480105709997e+05,9.99378966275206e-01,-2.82153291753490e-02,-2.27089979140026e-10,-1.77019590701470e-09,1.08522286274070e-14,2.11430298751604e-15" - " +inv_c=6.13342118787027e+06,4.94690181709311e+05,9.99824464710368e-01,2.82279070814774e-02,7.66123542220864e-11,1.78425334628927e-09,-1.05584823306400e-14,-3.32554258683744e-15" -}; - -static int horner_selftest (void) { - PJ *P; - PJ_COORD a, b, c; - double dist; - - /* Real polynonia relating the technical coordinate system TC32 to "System 45 Bornholm" */ - P = proj_create (PJ_DEFAULT_CTX, tc32_utm32); - if (0==P) - return 10; - - a = b = proj_coord (0,0,0,0); - a.uv.v = 6125305.4245; - a.uv.u = 878354.8539; - c = a; - - /* Check roundtrip precision for 1 iteration each way, starting in forward direction */ - dist = proj_roundtrip (P, PJ_FWD, 1, &c); - if (dist > 0.01) - return 1; - proj_destroy(P); - - /* The complex polynomial transformation between the "System Storebaelt" and utm32/ed50 */ - P = proj_create (PJ_DEFAULT_CTX, sb_utm32); - if (0==P) - return 11; - - /* Test value: utm32_ed50(620000, 6130000) = sb_ed50(495136.8544, 6130821.2945) */ - a = b = c = proj_coord (0,0,0,0); - a.uv.v = 6130821.2945; - a.uv.u = 495136.8544; - c.uv.v = 6130000.0000; - c.uv.u = 620000.0000; - - /* Forward projection */ - b = proj_trans (P, PJ_FWD, a); - 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, a); - if (dist > 0.001) - return 3; - - /* Check roundtrip precision for 1 iteration each way */ - dist = proj_roundtrip (P, PJ_FWD, 1, &a); - if (dist > 0.01) - return 4; - - proj_destroy(P); - return 0; -} - - - - - - - - - - - - -/* Testing quite a bit of the pj_obs_api as a side effect (inspired by pj_obs_api_test.c) */ -static int cart_selftest (void) { - PJ_CONTEXT *ctx; - PJ *P; - PJ_COORD a, b, obs[2]; - PJ_COORD coord[2]; - - PJ_INFO info; - PJ_PROJ_INFO pj_info; - PJ_GRID_INFO grid_info; - PJ_INIT_INFO init_info; - - PJ_FACTORS factors; - - const PJ_OPERATIONS *oper_list; - const PJ_ELLPS *ellps_list; - const PJ_UNITS *unit_list; - const PJ_PRIME_MERIDIANS *pm_list; - - int err; - size_t n, sz; - double dist, h, t; - char *args[3] = {"proj=utm", "zone=32", "ellps=GRS80"}; - char arg[50] = {"+proj=utm; +zone=32; +ellps=GRS80"}; - char buf[40]; - - /* An utm projection on the GRS80 ellipsoid */ - P = proj_create (PJ_DEFAULT_CTX, arg); - if (0==P) - return 1; - - - /* Clean up */ - proj_destroy (P); - - /* Same projection, now using argc/argv style initialization */ - P = proj_create_argv (PJ_DEFAULT_CTX, 3, args); - if (0==P) - return 2; - - /* zero initialize everything, then set (longitude, latitude) to (12, 55) */ - a = proj_coord (0,0,0,0); - /* a.lp: The coordinate part of a, interpreted as a classic LP pair */ - a.lp.lam = PJ_TORAD(12); - a.lp.phi = PJ_TORAD(55); - - /* Forward projection */ - b = proj_trans (P, PJ_FWD, a); - - /* Inverse projection */ - a = proj_trans (P, PJ_INV, b); - - /* Null projection */ - a = proj_trans (P, PJ_IDENT, a); - - /* Forward again, to get two linear items for comparison */ - a = proj_trans (P, PJ_FWD, a); - - dist = proj_xy_dist (a, b); - if (dist > 2e-9) - return 3; - - /* Clear any previous error */ - proj_errno_reset (P); - - /* Invalid projection */ - a = proj_trans (P, 42, a); - if (a.lpz.lam!=HUGE_VAL) - return 4; - err = proj_errno (P); - if (0==err) - return 5; - - /* Clear error again */ - proj_errno_reset (P); - - /* Clean up */ - proj_destroy (P); - - /* Now do some 3D transformations */ - P = proj_create (PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); - if (0==P) - return 6; - - /* zero initialize everything, then set (longitude, latitude, height) to (12, 55, 100) */ - a = b = proj_coord (0,0,0,0); - a.lpz.lam = PJ_TORAD(12); - a.lpz.phi = PJ_TORAD(55); - a.lpz.z = 100; - - /* Forward projection: 3D-Cartesian-to-Ellipsoidal */ - b = proj_trans (P, PJ_FWD, a); - - /* Check roundtrip precision for 10000 iterations each way */ - dist = proj_roundtrip (P, PJ_FWD, 10000, &a); - dist += proj_roundtrip (P, PJ_INV, 10000, &b); - if (dist > 4e-9) - return 7; - - - /* Test at the North Pole */ - a = b = proj_coord (0,0,0,0); - a.lpz.lam = PJ_TORAD(0); - a.lpz.phi = PJ_TORAD(90); - a.lpz.z = 100; - - /* Forward projection: Ellipsoidal-to-3D-Cartesian */ - dist = proj_roundtrip (P, PJ_FWD, 1, &a); - if (dist > 1e-9) - return 8; - - /* Test at the South Pole */ - a = b = proj_coord (0,0,0,0); - a.lpz.lam = PJ_TORAD(0); - a.lpz.phi = PJ_TORAD(-90); - a.lpz.z = 100; - b = a; - - /* Forward projection: Ellipsoidal-to-3D-Cartesian */ - dist = proj_roundtrip (P, PJ_FWD, 1, &a); - if (dist > 1e-9) - return 9; - - - /* Inverse projection: 3D-Cartesian-to-Ellipsoidal */ - b = proj_trans (P, PJ_INV, b); - - /* Move p to another context */ - ctx = proj_context_create (); - if (ctx==pj_get_default_ctx()) - return 10; - proj_context_set (P, ctx); - if (ctx != P->ctx) - return 11; - b = proj_trans (P, PJ_FWD, b); - - /* Move it back to the default context */ - proj_context_set (P, 0); - if (pj_get_default_ctx() != P->ctx) - return 12; - proj_context_destroy (ctx); - - /* We go on with the work - now back on the default context */ - b = proj_trans (P, PJ_INV, b); - proj_destroy (P); - - - /* Testing proj_trans_generic () */ - - /* An utm projection on the GRS80 ellipsoid */ - P = proj_create (PJ_DEFAULT_CTX, "+proj=utm +zone=32 +ellps=GRS80"); - if (0==P) - return 13; - - obs[0] = proj_coord (PJ_TORAD(12), PJ_TORAD(55), 45, 0); - obs[1] = proj_coord (PJ_TORAD(12), PJ_TORAD(56), 50, 0); - sz = sizeof (PJ_COORD); - - /* Forward projection */ - a = proj_trans (P, PJ_FWD, obs[0]); - b = proj_trans (P, PJ_FWD, obs[1]); - - n = proj_trans_generic ( - P, PJ_FWD, - &(obs[0].lpz.lam), sz, 2, - &(obs[0].lpz.phi), sz, 2, - &(obs[0].lpz.z), sz, 2, - 0, sz, 0 - ); - if (2!=n) - return 14; - if (a.lpz.lam != obs[0].lpz.lam) return 15; - if (a.lpz.phi != obs[0].lpz.phi) return 16; - if (a.lpz.z != obs[0].lpz.z) return 17; - if (b.lpz.lam != obs[1].lpz.lam) return 18; - if (b.lpz.phi != obs[1].lpz.phi) return 19; - if (b.lpz.z != obs[1].lpz.z) return 20; - - /* now test the case of constant z */ - obs[0] = proj_coord (PJ_TORAD(12), PJ_TORAD(55), 45, 0); - obs[1] = proj_coord (PJ_TORAD(12), PJ_TORAD(56), 50, 0); - h = 27; - t = 33; - n = proj_trans_generic ( - P, PJ_FWD, - &(obs[0].lpz.lam), sz, 2, - &(obs[0].lpz.phi), sz, 2, - &h, 0, 1, - &t, 0, 1 - ); - if (2!=n) - return 21; - if (a.lpz.lam != obs[0].lpz.lam) return 22; - if (a.lpz.phi != obs[0].lpz.phi) return 23; - if (45 != obs[0].lpz.z) return 24; - if (b.lpz.lam != obs[1].lpz.lam) return 25; - if (b.lpz.phi != obs[1].lpz.phi) return 26; - if (50 != obs[1].lpz.z) return 27; /* NOTE: unchanged */ - if (50==h) return 28; - - /* test proj_trans_array () */ - - coord[0] = proj_coord (PJ_TORAD(12), PJ_TORAD(55), 45, 0); - coord[1] = proj_coord (PJ_TORAD(12), PJ_TORAD(56), 50, 0); - if (proj_trans_array (P, PJ_FWD, 2, coord)) - return 40; - - if (a.lpz.lam != coord[0].lpz.lam) return 41; - if (a.lpz.phi != coord[0].lpz.phi) return 42; - if (a.lpz.z != coord[0].lpz.z) return 43; - if (b.lpz.lam != coord[1].lpz.lam) return 44; - if (b.lpz.phi != coord[1].lpz.phi) return 45; - if (b.lpz.z != coord[1].lpz.z) return 46; - - /* Clean up after proj_trans_* tests */ - proj_destroy (P); - - /* test proj_create_crs_to_crs() */ - P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "epsg:25832", "epsg:25833", NULL); - if (P==0) - return 50; - - a.xy.x = 700000.0; - a.xy.y = 6000000.0; - b.xy.x = 307788.8761171057; - b.xy.y = 5999669.3036037628; - - a = proj_trans(P, PJ_FWD, a); - if (dist > 1e-7) - return 51; - proj_destroy(P); - - /* let's make sure that only entries in init-files results in a usable PJ */ - P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "proj=utm +zone=32 +datum=WGS84", "proj=utm +zone=33 +datum=WGS84", NULL); - if (P != 0) { - proj_destroy(P); - return 52; - } - proj_destroy(P); - - /* ********************************************************************** */ - /* Test info functions */ - /* ********************************************************************** */ - - /* proj_info() */ - /* this one is difficult to test, since the output changes with the setup */ - info = proj_info(); - - if (info.version[0] != '\0' ) { - char tmpstr[64]; - sprintf(tmpstr, "%d.%d.%d", info.major, info.minor, info.patch); - if (strcmp(info.version, tmpstr)) return 55; - } - if (info.release[0] == '\0') return 56; - if (getenv ("HOME") || getenv ("PROJ_LIB")) - if (info.searchpath[0] == '\0') return 57; - - /* proj_pj_info() */ - P = proj_create(PJ_DEFAULT_CTX, "+proj=august"); /* august has no inverse */ - if (proj_pj_info(P).has_inverse) { proj_destroy(P); return 60; } - proj_destroy(P); - - P = proj_create(PJ_DEFAULT_CTX, arg); - pj_info = proj_pj_info(P); - if ( !pj_info.has_inverse ) { proj_destroy(P); return 61; } - pj_shrink (arg); - if ( strcmp(pj_info.definition, arg) ) { proj_destroy(P); return 62; } - if ( strcmp(pj_info.id, "utm") ) { proj_destroy(P); return 63; } - - proj_destroy(P); - - /* proj_grid_info() */ - grid_info = proj_grid_info("null"); - if ( strlen(grid_info.filename) == 0 ) return 64; - if ( strcmp(grid_info.gridname, "null") ) return 65; - grid_info = proj_grid_info("nonexistinggrid"); - if ( strlen(grid_info.filename) > 0 ) return 66; - - /* proj_init_info() */ - init_info = proj_init_info("unknowninit"); - if ( strlen(init_info.filename) != 0 ) return 67; - - init_info = proj_init_info("epsg"); - /* Need to allow for "Unknown" until all commonly distributed EPSG-files comes with a metadata section */ - if ( strcmp(init_info.origin, "EPSG") && strcmp(init_info.origin, "Unknown") ) return 69; - if ( strcmp(init_info.name, "epsg") ) return 68; - - - /* test proj_rtodms() and proj_dmstor() */ - if (strcmp("180dN", proj_rtodms(buf, M_PI, 'N', 'S'))) - return 70; - - if (proj_dmstor(&buf[0], NULL) != M_PI) - return 71; - - if (strcmp("114d35'29.612\"S", proj_rtodms(buf, -2.0, 'N', 'S'))) - return 72; - - /* we can't expect perfect numerical accuracy so testing with a tolerance */ - if (fabs(-2.0 - proj_dmstor(&buf[0], NULL)) > 1e-7) - return 73; - - - /* test proj_derivatives_retrieve() and proj_factors_retrieve() */ - P = proj_create(PJ_DEFAULT_CTX, "+proj=merc"); - a = proj_coord (0,0,0,0); - a.lp.lam = PJ_TORAD(12); - a.lp.phi = PJ_TORAD(55); - - factors = proj_factors(P, a); - if (proj_errno(P)) - return 85; /* factors not created correctly */ - - /* check a few key characteristics of the Mercator projection */ - if (factors.angular_distortion != 0.0) return 86; /* angular distortion should be 0 */ - if (factors.meridian_parallel_angle != M_PI_2) return 87; /* Meridian/parallel angle should be 90 deg */ - if (factors.meridian_convergence != 0.0) return 88; /* meridian convergence should be 0 */ - - proj_destroy(P); - - /* Check that proj_list_* functions work by looping through them */ - n = 0; - for (oper_list = proj_list_operations(); oper_list->id; ++oper_list) n++; - if (n == 0) return 90; - - n = 0; - for (ellps_list = proj_list_ellps(); ellps_list->id; ++ellps_list) n++; - if (n == 0) return 91; - - n = 0; - for (unit_list = proj_list_units(); unit_list->id; ++unit_list) n++; - if (n == 0) return 92; - - n = 0; - for (pm_list = proj_list_prime_meridians(); pm_list->id; ++pm_list) n++; - if (n == 0) return 93; - - - /* check io-predicates */ - - /* angular in on fwd, linear out */ - P = proj_create (PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); - if (0==P) return 0; - if (!proj_angular_input (P, PJ_FWD)) return 100; - if ( proj_angular_input (P, PJ_INV)) return 101; - if ( proj_angular_output (P, PJ_FWD)) return 102; - if (!proj_angular_output (P, PJ_INV)) return 103; - P->inverted = 1; - if ( proj_angular_input (P, PJ_FWD)) return 104; - if (!proj_angular_input (P, PJ_INV)) return 105; - if (!proj_angular_output (P, PJ_FWD)) return 106; - if ( proj_angular_output (P, PJ_INV)) return 107; - proj_destroy(P); - - /* angular in and out */ - P = proj_create(PJ_DEFAULT_CTX, - "+proj=molodensky +a=6378160 +rf=298.25 " - "+da=-23 +df=-8.120449e-8 +dx=-134 +dy=-48 +dz=149 " - "+abridged " - ); - if (0==P) return 0; - if (!proj_angular_input (P, PJ_FWD)) return 108; - if (!proj_angular_input (P, PJ_INV)) return 109; - if (!proj_angular_output (P, PJ_FWD)) return 110; - if (!proj_angular_output (P, PJ_INV)) return 111; - P->inverted = 1; - if (!proj_angular_input (P, PJ_FWD)) return 112; - if (!proj_angular_input (P, PJ_INV)) return 113; - if (!proj_angular_output (P, PJ_FWD)) return 114; - if (!proj_angular_output (P, PJ_INV)) return 115; - proj_destroy(P); - - /* linear in and out */ - P = proj_create(PJ_DEFAULT_CTX, - " +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 +no_defs" - ); - if (0==P) return 0; - if (proj_angular_input (P, PJ_FWD)) return 116; - if (proj_angular_input (P, PJ_INV)) return 117; - if (proj_angular_output (P, PJ_FWD)) return 118; - if (proj_angular_output (P, PJ_INV)) return 119; - P->inverted = 1; - if (proj_angular_input (P, PJ_FWD)) return 120; - 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; - - /* We specified "no_defs" but didn't give any ellipsoid info */ - /* pj_init_ctx should default to WGS84 */ - if (P->a != 6378137.0) return 124; - if (P->f != 1.0/298.257223563) return 125; - proj_destroy(P); - - /* Test that pj_fwd* and pj_inv* returns NaNs when receiving NaN input */ - P = proj_create(PJ_DEFAULT_CTX, "+proj=merc"); - if (0==P) return 0; - a = proj_coord(NAN, NAN, NAN, NAN); - a = proj_trans(P, PJ_FWD, a); - if ( !( isnan(a.v[0]) && isnan(a.v[1]) && isnan(a.v[2]) && isnan(a.v[3]) ) ) - return 126; - a = proj_coord(NAN, NAN, NAN, NAN); - a = proj_trans(P, PJ_INV, a); - if ( !( isnan(a.v[0]) && isnan(a.v[1]) && isnan(a.v[2]) && isnan(a.v[3]) ) ) - return 127; - proj_destroy(P); - - return 0; -} - - - - -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); - int ret = 0; - - if (P == 0) - return 5; - - in = proj_coord(0.0, 0.0, 0.0, t_in); - - out = proj_trans(P, PJ_FWD, in); - if (fabs(out.xyzt.t - t_exp) > tol) { - proj_log_error(P, "out: %10.10g, expect: %10.10g", out.xyzt.t, t_exp); - ret = 1; - } - out = proj_trans(P, PJ_INV, out); - if (fabs(out.xyzt.t - t_in) > tol) { - proj_log_error(P, "out: %10.10g, expect: %10.10g", out.xyzt.t, t_in); - ret = 2; - } - pj_free(P); - - proj_log_level(NULL, 0); - return ret; -} - -static int unitconvert_selftest (void) { - int ret = 0; - char args1[] = "+proj=unitconvert +t_in=decimalyear +t_out=decimalyear"; - double in1 = 2004.25; - - char args2[] = "+proj=unitconvert +t_in=gps_week +t_out=gps_week"; - double in2 = 1782.0; - - char args3[] = "+proj=unitconvert +t_in=mjd +t_out=mjd"; - double in3 = 57390.0; - - char args4[] = "+proj=unitconvert +t_in=gps_week +t_out=decimalyear"; - double in4 = 1877.71428, exp4 = 2016.0; - - char args5[] = "+proj=unitconvert +t_in=yyyymmdd +t_out=yyyymmdd"; - double in5 = 20170131; - - ret = test_time(args1, 1e-6, in1, in1); if (ret) return ret + 10; - ret = test_time(args2, 1e-6, in2, in2); if (ret) return ret + 20; - ret = test_time(args3, 1e-6, in3, in3); if (ret) return ret + 30; - ret = test_time(args4, 1e-6, in4, exp4); if (ret) return ret + 40; - ret = test_time(args5, 1e-6, in5, in5); if (ret) return ret + 50; - - return 0; -} diff --git a/test/gie/more_builtins.gie b/test/gie/more_builtins.gie index 13b77b0a..272e503c 100644 --- a/test/gie/more_builtins.gie +++ b/test/gie/more_builtins.gie @@ -709,11 +709,4 @@ direction reverse accept 0 0 0 0 expect failure -------------------------------------------------------------------------------- -run the few gie-builtin tests, which are currently either awkward or impossible -to express in the gie command set -------------------------------------------------------------------------------- -builtins -------------------------------------------------------------------------------- - diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 5138dafc..8a25d7a3 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -103,3 +103,11 @@ target_link_libraries(proj_test_cpp_api ${PROJ_LIBRARIES} ${SQLITE3_LIBRARY}) add_test(NAME proj_test_cpp_api COMMAND proj_test_cpp_api) + +add_executable(gie_self_tests + main.cpp + gie_self_tests.cpp) +target_link_libraries(gie_self_tests + gtest + ${PROJ_LIBRARIES}) +add_test(NAME gie_self_tests COMMAND gie_self_tests) diff --git a/test/unit/Makefile.am b/test/unit/Makefile.am index 77525f9a..913a3f29 100644 --- a/test/unit/Makefile.am +++ b/test/unit/Makefile.am @@ -13,13 +13,11 @@ noinst_PROGRAMS = basic_test noinst_PROGRAMS += pj_phi2_test noinst_PROGRAMS += proj_errno_string_test noinst_PROGRAMS += test_cpp_api +noinst_PROGRAMS += gie_self_tests basic_test_SOURCES = basic_test.cpp main.cpp basic_test_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la -test_cpp_api_SOURCES = test_util.cpp test_common.cpp test_crs.cpp test_metadata.cpp test_io.cpp test_operation.cpp test_datum.cpp test_factory.cpp test_c_api.cpp main.cpp -test_cpp_api_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la @SQLITE3_LDFLAGS@ - basic_test-check: basic_test ./basic_test @@ -35,10 +33,16 @@ proj_errno_string_test_LDADD= ../../src/libproj.la ../../test/googletest/libgtes proj_errno_string_test-check: proj_errno_string_test ./proj_errno_string_test -check-local: basic_test-check -check-local: pj_phi2_test-check proj_errno_string_test-check +test_cpp_api_SOURCES = test_util.cpp test_common.cpp test_crs.cpp test_metadata.cpp test_io.cpp test_operation.cpp test_datum.cpp test_factory.cpp test_c_api.cpp main.cpp +test_cpp_api_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la @SQLITE3_LDFLAGS@ test_cpp_api-check: test_cpp_api PROJ_LIB=$(PROJ_LIB) ./test_cpp_api -check-local: basic_test-check test_cpp_api-check +gie_self_tests_SOURCES = gie_self_tests.cpp main.cpp +gie_self_tests_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la @SQLITE3_LDFLAGS@ + +gie_self_tests-check: gie_self_tests + PROJ_LIB=$(PROJ_LIB) ./gie_self_tests + +check-local: basic_test-check pj_phi2_test-check proj_errno_string_test-check test_cpp_api-check gie_self_tests-check diff --git a/test/unit/gie_self_tests.cpp b/test/unit/gie_self_tests.cpp new file mode 100644 index 00000000..67a44fe5 --- /dev/null +++ b/test/unit/gie_self_tests.cpp @@ -0,0 +1,562 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test + * Author: Even Rouault + * + ****************************************************************************** + * Copyright (c) 2017, Thomas Knudsen + * Copyright (c) 2017, SDFE + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************/ + +#include "gtest_include.h" + +// PROJ include order is sensitive +// clang-format off +#include "proj_internal.h" +#include "proj.h" +#include "projects.h" +// clang-format on + +#include +#include + +namespace { + +// --------------------------------------------------------------------------- + +TEST( gie, cart_selftest ) { + PJ_CONTEXT *ctx; + PJ *P; + PJ_COORD a, b, obs[2]; + PJ_COORD coord[2]; + + PJ_INFO info; + PJ_PROJ_INFO pj_info; + PJ_GRID_INFO grid_info; + PJ_INIT_INFO init_info; + + PJ_FACTORS factors; + + const PJ_OPERATIONS *oper_list; + const PJ_ELLPS *ellps_list; + const PJ_UNITS *unit_list; + const PJ_PRIME_MERIDIANS *pm_list; + + int err; + size_t n, sz; + double dist, h, t; + const char * const args[3] = {"proj=utm", "zone=32", "ellps=GRS80"}; + char arg[50] = {"+proj=utm; +zone=32; +ellps=GRS80"}; + char buf[40]; + + /* An utm projection on the GRS80 ellipsoid */ + P = proj_create (PJ_DEFAULT_CTX, arg); + ASSERT_TRUE( P != nullptr ); + + /* Clean up */ + proj_destroy (P); + + /* Same projection, now using argc/argv style initialization */ + P = proj_create_argv (PJ_DEFAULT_CTX, 3, const_cast(args)); + ASSERT_TRUE( P != nullptr ); + + /* zero initialize everything, then set (longitude, latitude) to (12, 55) */ + a = proj_coord (0,0,0,0); + /* a.lp: The coordinate part of a, interpreted as a classic LP pair */ + a.lp.lam = proj_torad(12); + a.lp.phi = proj_torad(55); + + /* Forward projection */ + b = proj_trans (P, PJ_FWD, a); + + /* Inverse projection */ + a = proj_trans (P, PJ_INV, b); + + /* Null projection */ + a = proj_trans (P, PJ_IDENT, a); + + /* Forward again, to get two linear items for comparison */ + a = proj_trans (P, PJ_FWD, a); + + dist = proj_xy_dist (a, b); + ASSERT_LE(dist, 2e-9); + + /* Clear any previous error */ + proj_errno_reset (P); + + /* Invalid projection */ + a = proj_trans (P, static_cast(42), a); + ASSERT_EQ(a.lpz.lam, HUGE_VAL); + + err = proj_errno (P); + ASSERT_NE(err, 0); + + /* Clear error again */ + proj_errno_reset (P); + + /* Clean up */ + proj_destroy (P); + + /* Now do some 3D transformations */ + P = proj_create (PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); + ASSERT_TRUE( P != nullptr ); + + /* zero initialize everything, then set (longitude, latitude, height) to (12, 55, 100) */ + a = b = proj_coord (0,0,0,0); + a.lpz.lam = proj_torad(12); + a.lpz.phi = proj_torad(55); + a.lpz.z = 100; + + /* Forward projection: 3D-Cartesian-to-Ellipsoidal */ + b = proj_trans (P, PJ_FWD, a); + + /* Check roundtrip precision for 10000 iterations each way */ + dist = proj_roundtrip (P, PJ_FWD, 10000, &a); + dist += proj_roundtrip (P, PJ_INV, 10000, &b); + ASSERT_LE(dist, 4e-9); + + + /* Test at the North Pole */ + a = b = proj_coord (0,0,0,0); + a.lpz.lam = proj_torad(0); + a.lpz.phi = proj_torad(90); + a.lpz.z = 100; + + /* Forward projection: Ellipsoidal-to-3D-Cartesian */ + dist = proj_roundtrip (P, PJ_FWD, 1, &a); + ASSERT_LE(dist, 1e-9); + + /* Test at the South Pole */ + a = b = proj_coord (0,0,0,0); + a.lpz.lam = proj_torad(0); + a.lpz.phi = proj_torad(-90); + a.lpz.z = 100; + b = a; + + /* Forward projection: Ellipsoidal-to-3D-Cartesian */ + dist = proj_roundtrip (P, PJ_FWD, 1, &a); + ASSERT_LE(dist, 4e-9); + + /* Inverse projection: 3D-Cartesian-to-Ellipsoidal */ + b = proj_trans (P, PJ_INV, b); + + /* Move p to another context */ + ctx = proj_context_create (); + ASSERT_NE (ctx, pj_get_default_ctx()); + + proj_context_set (P, ctx); + ASSERT_EQ (ctx, P->ctx); + + b = proj_trans (P, PJ_FWD, b); + + /* Move it back to the default context */ + proj_context_set (P, 0); + ASSERT_EQ (pj_get_default_ctx(), P->ctx); + + proj_context_destroy (ctx); + + /* We go on with the work - now back on the default context */ + b = proj_trans (P, PJ_INV, b); + proj_destroy (P); + + + /* Testing proj_trans_generic () */ + + /* An utm projection on the GRS80 ellipsoid */ + P = proj_create (PJ_DEFAULT_CTX, "+proj=utm +zone=32 +ellps=GRS80"); + ASSERT_TRUE( P != nullptr ); + + obs[0] = proj_coord (proj_torad(12), proj_torad(55), 45, 0); + obs[1] = proj_coord (proj_torad(12), proj_torad(56), 50, 0); + sz = sizeof (PJ_COORD); + + /* Forward projection */ + a = proj_trans (P, PJ_FWD, obs[0]); + b = proj_trans (P, PJ_FWD, obs[1]); + + n = proj_trans_generic ( + P, PJ_FWD, + &(obs[0].lpz.lam), sz, 2, + &(obs[0].lpz.phi), sz, 2, + &(obs[0].lpz.z), sz, 2, + 0, sz, 0 + ); + ASSERT_EQ(n, 2); + + ASSERT_EQ (a.lpz.lam , obs[0].lpz.lam); + ASSERT_EQ (a.lpz.phi , obs[0].lpz.phi); + ASSERT_EQ (a.lpz.z , obs[0].lpz.z); + ASSERT_EQ (b.lpz.lam , obs[1].lpz.lam); + ASSERT_EQ (b.lpz.phi , obs[1].lpz.phi); + ASSERT_EQ (b.lpz.z , obs[1].lpz.z); + + /* now test the case of constant z */ + obs[0] = proj_coord (proj_torad(12), proj_torad(55), 45, 0); + obs[1] = proj_coord (proj_torad(12), proj_torad(56), 50, 0); + h = 27; + t = 33; + n = proj_trans_generic ( + P, PJ_FWD, + &(obs[0].lpz.lam), sz, 2, + &(obs[0].lpz.phi), sz, 2, + &h, 0, 1, + &t, 0, 1 + ); + ASSERT_EQ(n, 2); + + ASSERT_EQ (a.lpz.lam , obs[0].lpz.lam); + ASSERT_EQ (a.lpz.phi , obs[0].lpz.phi); + ASSERT_EQ (45, obs[0].lpz.z); + ASSERT_EQ (b.lpz.lam, obs[1].lpz.lam); + ASSERT_EQ (b.lpz.phi, obs[1].lpz.phi); + ASSERT_EQ (50, obs[1].lpz.z); + ASSERT_NE (50, h); + + /* test proj_trans_array () */ + + coord[0] = proj_coord (proj_torad(12), proj_torad(55), 45, 0); + coord[1] = proj_coord (proj_torad(12), proj_torad(56), 50, 0); + ASSERT_FALSE (proj_trans_array (P, PJ_FWD, 2, coord)); + + ASSERT_EQ (a.lpz.lam , coord[0].lpz.lam); + ASSERT_EQ (a.lpz.phi , coord[0].lpz.phi); + ASSERT_EQ (a.lpz.z , coord[0].lpz.z); + ASSERT_EQ (b.lpz.lam , coord[1].lpz.lam); + ASSERT_EQ (b.lpz.phi , coord[1].lpz.phi); + ASSERT_EQ (b.lpz.z , coord[1].lpz.z); + + /* Clean up after proj_trans_* tests */ + proj_destroy (P); + + /* test proj_create_crs_to_crs() */ + P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "epsg:25832", "epsg:25833", NULL); + ASSERT_TRUE( P != nullptr ); + + a.xy.x = 700000.0; + a.xy.y = 6000000.0; + b.xy.x = 307788.8761171057; + b.xy.y = 5999669.3036037628; + + a = proj_trans(P, PJ_FWD, a); + ASSERT_LE(dist, 1e-7); + proj_destroy(P); + + /* let's make sure that only entries in init-files results in a usable PJ */ + P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "proj=utm +zone=32 +datum=WGS84", "proj=utm +zone=33 +datum=WGS84", NULL); + ASSERT_TRUE( P == nullptr ); + proj_destroy(P); + + /* ********************************************************************** */ + /* Test info functions */ + /* ********************************************************************** */ + + /* proj_info() */ + /* this one is difficult to test, since the output changes with the setup */ + info = proj_info(); + + if (info.version[0] != '\0' ) { + char tmpstr[64]; + sprintf(tmpstr, "%d.%d.%d", info.major, info.minor, info.patch); + ASSERT_EQ( std::string(info.version), std::string(tmpstr) ); + } + ASSERT_NE( std::string(info.release), "" ); + if (getenv ("HOME") || getenv ("PROJ_LIB")) { + ASSERT_NE( std::string(info.searchpath), std::string() ); + } + + /* proj_pj_info() */ + { + P = proj_create(PJ_DEFAULT_CTX, "+proj=august"); /* august has no inverse */ + auto has_inverse = proj_pj_info(P).has_inverse; + proj_destroy(P); + ASSERT_FALSE(has_inverse); + } + + P = proj_create(PJ_DEFAULT_CTX, arg); + pj_info = proj_pj_info(P); + ASSERT_TRUE( pj_info.has_inverse ); + pj_shrink (arg); + ASSERT_EQ( std::string(pj_info.definition), arg ); + ASSERT_EQ( std::string(pj_info.id), "utm" ); + + proj_destroy(P); + + /* proj_grid_info() */ + grid_info = proj_grid_info("null"); + ASSERT_NE( std::string(grid_info.filename), "" ); + ASSERT_EQ( std::string(grid_info.gridname), "null" ); + + grid_info = proj_grid_info("nonexistinggrid"); + ASSERT_EQ( std::string(grid_info.filename), "" ); + + /* proj_init_info() */ + init_info = proj_init_info("unknowninit"); + ASSERT_EQ( std::string(init_info.filename), "" ); + + init_info = proj_init_info("epsg"); + /* Need to allow for "Unknown" until all commonly distributed EPSG-files comes with a metadata section */ + ASSERT_TRUE( std::string(init_info.origin) == "EPSG" || std::string(init_info.origin) == "Unknown" ) << std::string(init_info.origin); + ASSERT_EQ( std::string(init_info.name), "epsg" ); + + + /* test proj_rtodms() and proj_dmstor() */ + ASSERT_EQ( std::string("180dN"), proj_rtodms(buf, M_PI, 'N', 'S')); + + ASSERT_EQ(proj_dmstor(&buf[0], NULL), M_PI); + + ASSERT_EQ( std::string("114d35'29.612\"S"), proj_rtodms(buf, -2.0, 'N', 'S')); + + /* we can't expect perfect numerical accuracy so testing with a tolerance */ + ASSERT_NEAR (-2.0 , proj_dmstor(&buf[0], NULL) , 1e-7); + + /* test proj_derivatives_retrieve() and proj_factors_retrieve() */ + P = proj_create(PJ_DEFAULT_CTX, "+proj=merc"); + a = proj_coord (0,0,0,0); + a.lp.lam = proj_torad(12); + a.lp.phi = proj_torad(55); + + factors = proj_factors(P, a); + ASSERT_FALSE (proj_errno(P)); /* factors not created correctly */ + + /* check a few key characteristics of the Mercator projection */ + ASSERT_EQ (factors.angular_distortion, 0.0); /* angular distortion should be 0 */ + ASSERT_EQ (factors.meridian_parallel_angle, M_PI_2); /* Meridian/parallel angle should be 90 deg */ + ASSERT_EQ (factors.meridian_convergence, 0.0); /* meridian convergence should be 0 */ + + proj_destroy(P); + + /* Check that proj_list_* functions work by looping through them */ + n = 0; + for (oper_list = proj_list_operations(); oper_list->id; ++oper_list) n++; + ASSERT_NE(n, 0U); + + n = 0; + for (ellps_list = proj_list_ellps(); ellps_list->id; ++ellps_list) n++; + ASSERT_NE(n, 0U); + + n = 0; + for (unit_list = proj_list_units(); unit_list->id; ++unit_list) n++; + ASSERT_NE(n, 0U); + + n = 0; + for (pm_list = proj_list_prime_meridians(); pm_list->id; ++pm_list) n++; + ASSERT_NE(n, 0U); + + + /* check io-predicates */ + + /* angular in on fwd, linear out */ + P = proj_create (PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); + ASSERT_TRUE( P != nullptr ); + ASSERT_TRUE(proj_angular_input (P, PJ_FWD)); + ASSERT_FALSE(proj_angular_input (P, PJ_INV)); + ASSERT_FALSE(proj_angular_output (P, PJ_FWD)); + ASSERT_TRUE(proj_angular_output (P, PJ_INV)); + P->inverted = 1; + ASSERT_FALSE(proj_angular_input (P, PJ_FWD)); + ASSERT_TRUE(proj_angular_input (P, PJ_INV)); + ASSERT_TRUE(proj_angular_output (P, PJ_FWD)); + ASSERT_FALSE(proj_angular_output (P, PJ_INV)); + proj_destroy(P); + + /* angular in and out */ + P = proj_create(PJ_DEFAULT_CTX, + "+proj=molodensky +a=6378160 +rf=298.25 " + "+da=-23 +df=-8.120449e-8 +dx=-134 +dy=-48 +dz=149 " + "+abridged " + ); + ASSERT_TRUE( P != nullptr ); + ASSERT_TRUE(proj_angular_input (P, PJ_FWD)); + ASSERT_TRUE(proj_angular_input (P, PJ_INV)); + ASSERT_TRUE(proj_angular_output (P, PJ_FWD)); + ASSERT_TRUE(proj_angular_output (P, PJ_INV)); + P->inverted = 1; + ASSERT_TRUE(proj_angular_input (P, PJ_FWD)); + ASSERT_TRUE(proj_angular_input (P, PJ_INV)); + ASSERT_TRUE(proj_angular_output (P, PJ_FWD)); + ASSERT_TRUE(proj_angular_output (P, PJ_INV)); + proj_destroy(P); + + /* linear in and out */ + P = proj_create(PJ_DEFAULT_CTX, + " +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 +convention=coordinate_frame +no_defs" + ); + ASSERT_TRUE( P != nullptr ); + ASSERT_FALSE(proj_angular_input (P, PJ_FWD)); + ASSERT_FALSE(proj_angular_input (P, PJ_INV)); + ASSERT_FALSE(proj_angular_output (P, PJ_FWD)); + ASSERT_FALSE(proj_angular_output (P, PJ_INV)); + P->inverted = 1; + ASSERT_FALSE(proj_angular_input (P, PJ_FWD)); + ASSERT_FALSE(proj_angular_input (P, PJ_INV)); + ASSERT_FALSE(proj_angular_output (P, PJ_FWD)); + ASSERT_FALSE(proj_angular_output (P, PJ_INV)); + + /* We specified "no_defs" but didn't give any ellipsoid info */ + /* pj_init_ctx should default to WGS84 */ + ASSERT_EQ (P->a, 6378137.0); + ASSERT_EQ (P->f, 1.0/298.257223563); + proj_destroy(P); + + /* Test that pj_fwd* and pj_inv* returns NaNs when receiving NaN input */ + P = proj_create(PJ_DEFAULT_CTX, "+proj=merc"); + ASSERT_TRUE( P != nullptr ); + a = proj_coord(NAN, NAN, NAN, NAN); + a = proj_trans(P, PJ_FWD, a); + ASSERT_TRUE ( ( std::isnan(a.v[0]) && std::isnan(a.v[1]) && std::isnan(a.v[2]) && std::isnan(a.v[3]) ) ); + + a = proj_coord(NAN, NAN, NAN, NAN); + a = proj_trans(P, PJ_INV, a); + ASSERT_TRUE ( ( std::isnan(a.v[0]) && std::isnan(a.v[1]) && std::isnan(a.v[2]) && std::isnan(a.v[3]) ) ); + proj_destroy(P); + +} + +// --------------------------------------------------------------------------- + +static void 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); + + ASSERT_TRUE(P != 0); + + in = proj_coord(0.0, 0.0, 0.0, t_in); + + out = proj_trans(P, PJ_FWD, in); + EXPECT_NEAR(out.xyzt.t, t_exp, tol); + + out = proj_trans(P, PJ_INV, out); + EXPECT_NEAR(out.xyzt.t, t_in, tol); + + pj_free(P); + + proj_log_level(NULL, PJ_LOG_NONE); +} + +// --------------------------------------------------------------------------- + +TEST( gie, unitconvert_selftest ) { + + char args1[] = "+proj=unitconvert +t_in=decimalyear +t_out=decimalyear"; + double in1 = 2004.25; + + char args2[] = "+proj=unitconvert +t_in=gps_week +t_out=gps_week"; + double in2 = 1782.0; + + char args3[] = "+proj=unitconvert +t_in=mjd +t_out=mjd"; + double in3 = 57390.0; + + char args4[] = "+proj=unitconvert +t_in=gps_week +t_out=decimalyear"; + double in4 = 1877.71428, exp4 = 2016.0; + + char args5[] = "+proj=unitconvert +t_in=yyyymmdd +t_out=yyyymmdd"; + double in5 = 20170131; + + test_time(args1, 1e-6, in1, in1); + test_time(args2, 1e-6, in2, in2); + test_time(args3, 1e-6, in3, in3); + test_time(args4, 1e-6, in4, exp4); + test_time(args5, 1e-6, in5, in5); +} + + +static const char tc32_utm32[] = { + " +proj=horner" + " +ellps=intl" + " +range=500000" + " +fwd_origin=877605.269066,6125810.306769" + " +inv_origin=877605.760036,6125811.281773" + " +deg=4" + " +fwd_v=6.1258112678e+06,9.9999971567e-01,1.5372750011e-10,5.9300860915e-15,2.2609497633e-19,4.3188227445e-05,2.8225130416e-10,7.8740007114e-16,-1.7453997279e-19,1.6877465415e-10,-1.1234649773e-14,-1.7042333358e-18,-7.9303467953e-15,-5.2906832535e-19,3.9984284847e-19" + " +fwd_u=8.7760574982e+05,9.9999752475e-01,2.8817299305e-10,5.5641310680e-15,-1.5544700949e-18,-4.1357045890e-05,4.2106213519e-11,2.8525551629e-14,-1.9107771273e-18,3.3615590093e-10,2.4380247154e-14,-2.0241230315e-18,1.2429019719e-15,5.3886155968e-19,-1.0167505000e-18" + " +inv_v=6.1258103208e+06,1.0000002826e+00,-1.5372762184e-10,-5.9304261011e-15,-2.2612705361e-19,-4.3188331419e-05,-2.8225549995e-10,-7.8529116371e-16,1.7476576773e-19,-1.6875687989e-10,1.1236475299e-14,1.7042518057e-18,7.9300735257e-15,5.2881862699e-19,-3.9990736798e-19" + " +inv_u=8.7760527928e+05,1.0000024735e+00,-2.8817540032e-10,-5.5627059451e-15,1.5543637570e-18,4.1357152105e-05,-4.2114813612e-11,-2.8523713454e-14,1.9109017837e-18,-3.3616407783e-10,-2.4382678126e-14,2.0245020199e-18,-1.2441377565e-15,-5.3885232238e-19,1.0167203661e-18" +}; + +static const char sb_utm32[] = { + " +proj=horner" + " +ellps=intl" + " +range=500000" + " +tolerance=0.0005" + " +fwd_origin=4.94690026817276e+05,6.13342113183056e+06" + " +inv_origin=6.19480258923588e+05,6.13258568148837e+06" + " +deg=3" + " +fwd_c=6.13258562111350e+06,6.19480105709997e+05,9.99378966275206e-01,-2.82153291753490e-02,-2.27089979140026e-10,-1.77019590701470e-09,1.08522286274070e-14,2.11430298751604e-15" + " +inv_c=6.13342118787027e+06,4.94690181709311e+05,9.99824464710368e-01,2.82279070814774e-02,7.66123542220864e-11,1.78425334628927e-09,-1.05584823306400e-14,-3.32554258683744e-15" +}; + +// --------------------------------------------------------------------------- + +TEST( gie, horner_selftest ) { + + PJ *P; + PJ_COORD a, b, c; + double dist; + + /* Real polynonia relating the technical coordinate system TC32 to "System 45 Bornholm" */ + P = proj_create (PJ_DEFAULT_CTX, tc32_utm32); + ASSERT_TRUE( P != nullptr ); + + a = b = proj_coord (0,0,0,0); + a.uv.v = 6125305.4245; + a.uv.u = 878354.8539; + c = a; + + /* Check roundtrip precision for 1 iteration each way, starting in forward direction */ + dist = proj_roundtrip (P, PJ_FWD, 1, &c); + EXPECT_LE( dist, 0.01 ); + proj_destroy(P); + + /* The complex polynomial transformation between the "System Storebaelt" and utm32/ed50 */ + P = proj_create (PJ_DEFAULT_CTX, sb_utm32); + ASSERT_TRUE( P != nullptr ); + + /* Test value: utm32_ed50(620000, 6130000) = sb_ed50(495136.8544, 6130821.2945) */ + a = b = c = proj_coord (0,0,0,0); + a.uv.v = 6130821.2945; + a.uv.u = 495136.8544; + c.uv.v = 6130000.0000; + c.uv.u = 620000.0000; + + /* Forward projection */ + b = proj_trans (P, PJ_FWD, a); + dist = proj_xy_dist (b, c); + EXPECT_LE( dist, 0.001 ); + + /* Inverse projection */ + b = proj_trans (P, PJ_INV, c); + dist = proj_xy_dist (b, a); + EXPECT_LE( dist, 0.001 ); + + /* Check roundtrip precision for 1 iteration each way */ + dist = proj_roundtrip (P, PJ_FWD, 1, &a); + EXPECT_LE( dist, 0.01 ); + + proj_destroy(P); +} + +} // namespace -- cgit v1.2.3 From b9d50247190e7b9ecd849ab260eb45edca3236cb Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 22 Nov 2018 21:32:51 +0100 Subject: Fix transformation between geographic CRS that differ by axis order and units --- src/coordinateoperation.cpp | 26 ++++++++++++++++++++++++++ src/io.cpp | 18 ++++++++++++++++++ test/unit/test_io.cpp | 14 ++++++++++++++ test/unit/test_operation.cpp | 30 ++++++++++++++++++++++++++++++ 4 files changed, 88 insertions(+) diff --git a/src/coordinateoperation.cpp b/src/coordinateoperation.cpp index 42cc806e..e0e02931 100644 --- a/src/coordinateoperation.cpp +++ b/src/coordinateoperation.cpp @@ -8220,6 +8220,32 @@ bool SingleOperation::exportToPROJStringGeneric( if (isAxisOrderReversal(methodEPSGCode)) { formatter->addStep("axisswap"); formatter->addParam("order", "2,1"); + auto sourceCRSGeog = + dynamic_cast(sourceCRS().get()); + auto targetCRSGeog = + dynamic_cast(targetCRS().get()); + if (sourceCRSGeog && targetCRSGeog) { + const auto &unitSrc = + sourceCRSGeog->coordinateSystem()->axisList()[0]->unit(); + const auto &unitDst = + targetCRSGeog->coordinateSystem()->axisList()[0]->unit(); + if (!unitSrc._isEquivalentTo( + unitDst, util::IComparable::Criterion::EQUIVALENT)) { + formatter->addStep("unitconvert"); + auto projUnit = unitSrc.exportToPROJString(); + if (projUnit.empty()) { + formatter->addParam("xy_in", unitSrc.conversionToSI()); + } else { + formatter->addParam("xy_in", projUnit); + } + projUnit = unitDst.exportToPROJString(); + if (projUnit.empty()) { + formatter->addParam("xy_out", unitDst.conversionToSI()); + } else { + formatter->addParam("xy_out", projUnit); + } + } + } return true; } diff --git a/src/io.cpp b/src/io.cpp index 8a58816f..c2ca484d 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -4708,6 +4708,24 @@ const std::string &PROJStringFormatter::toString() const { break; } + // axisswap order=2,1, unitconvert, axisswap order=2,1 -> can + // suppress axisswap + if (i + 1 < d->steps_.size() && prevStep.name == "axisswap" && + curStep.name == "unitconvert" && prevStepParamCount == 1 && + prevStep.paramValues[0].equals("order", "2,1")) { + auto iterNext = iterCur; + ++iterNext; + auto &nextStep = *iterNext; + if (nextStep.name == "axisswap" && + nextStep.paramValues.size() == 1 && + nextStep.paramValues[0].equals("order", "2,1")) { + d->steps_.erase(iterPrev); + d->steps_.erase(iterNext); + changeDone = true; + break; + } + } + // for practical purposes WGS84 and GRS80 ellipsoids are // equivalents (cartesian transform between both lead to differences // of the order of 1e-14 deg..). diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 00da162c..6ccd5578 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -5381,6 +5381,20 @@ TEST(io, projstringformatter_cart_grs80_wgs84) { // --------------------------------------------------------------------------- +TEST(io, projstringformatter_axisswap_unitconvert_axisswap) { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("axisswap"); + fmt->addParam("order", "2,1"); + fmt->addStep("unitconvert"); + fmt->addParam("xy_in", "rad"); + fmt->addParam("xy_out", "deg"); + fmt->addStep("axisswap"); + fmt->addParam("order", "2,1"); + EXPECT_EQ(fmt->toString(), "+proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + TEST(io, projparse_longlat) { auto expected = "GEODCRS[\"unknown\",\n" diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index e62eddf9..528aa6b8 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -1142,6 +1142,36 @@ TEST(operation, transformation_createTOWGS84) { // --------------------------------------------------------------------------- +TEST(operation, createAxisOrderReversal) { + + auto latLongDeg = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + auto longLatDeg = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLongitudeLatitude(UnitOfMeasure::DEGREE)); + { + auto op = CoordinateOperationFactory::create()->createOperation( + latLongDeg, longLatDeg); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=axisswap +order=2,1"); + } + { + auto longLatRad = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLongitudeLatitude(UnitOfMeasure::RADIAN)); + auto op = CoordinateOperationFactory::create()->createOperation( + longLatRad, latLongDeg); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); + } +} + +// --------------------------------------------------------------------------- + TEST(operation, utm_export) { auto conv = Conversion::createUTM(PropertyMap(), 1, false); EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), -- cgit v1.2.3 From 549268ff39d4ef614bc8a32d7bd735e87802d78b Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 22 Nov 2018 21:56:33 +0100 Subject: Make proj_create_crs_to_crs() use proj_obj_create_operations() and use area of use argument, and make createFromUserInput() recognize init=epsg: / init=IGNF: in legacy mode, that is when proj_context_get_use_proj4_init_rules() is used --- include/proj/io.hpp | 5 +- src/c_api.cpp | 126 +++++++++++++++++++------------- src/io.cpp | 128 ++++++++++++++++++++++++++++++++- src/pj_ctx.c | 2 + src/proj.h | 31 ++++---- src/proj_4D_api.c | 168 ++++++++++++++++++++++++++++++++++++------- src/proj_symbol_rename.h | 6 +- src/projects.h | 10 +-- test/unit/gie_self_tests.cpp | 78 ++++++++++++++------ test/unit/test_io.cpp | 35 ++++++++- 10 files changed, 471 insertions(+), 118 deletions(-) diff --git a/include/proj/io.hpp b/include/proj/io.hpp index c649fa9f..3b5019c1 100644 --- a/include/proj/io.hpp +++ b/include/proj/io.hpp @@ -597,7 +597,8 @@ class PROJ_GCC_DLL WKTNode { PROJ_DLL util::BaseObjectNNPtr createFromUserInput(const std::string &text, - const DatabaseContextPtr &dbContext); + const DatabaseContextPtr &dbContext, + bool usePROJ4InitRules = false); // --------------------------------------------------------------------------- @@ -654,6 +655,8 @@ class PROJ_GCC_DLL PROJStringParser { PROJ_DLL PROJStringParser & attachDatabaseContext(const DatabaseContextPtr &dbContext); + PROJ_DLL PROJStringParser &setUsePROJ4InitRules(bool enable); + PROJ_DLL std::vector warningList() const; PROJ_DLL util::BaseObjectNNPtr createFromPROJString( diff --git a/src/c_api.cpp b/src/c_api.cpp index fbba0f51..ba1b9534 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -276,6 +276,18 @@ PJ_GUESSED_WKT_DIALECT proj_context_guess_wkt_dialect(PJ_CONTEXT *ctx, // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +static const char *getOptionValue(const char *option, + const char *keyWithEqual) noexcept { + if (ci_starts_with(option, keyWithEqual)) { + return option + strlen(keyWithEqual); + } + return nullptr; +} +//! @endcond + +// --------------------------------------------------------------------------- + /** \brief Instanciate an object from a WKT string, PROJ string or object code * (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326", * "urn:ogc:def:coordinateOperation:EPSG::1671"). @@ -287,7 +299,17 @@ PJ_GUESSED_WKT_DIALECT proj_context_guess_wkt_dialect(PJ_CONTEXT *ctx, * * @param ctx PROJ context, or NULL for default context * @param text String (must not be NULL) - * @param options should be set to NULL for now + * @param options null-terminated list of options, or NULL. Currently + * supported options are: + *
    + *
  • USE_PROJ4_INIT_RULES=YES/NO. Defaults to NO. When set to YES, + * init=epsg:XXXX syntax will be allowed and will be interpreted according to + * PROJ.4 and PROJ.5 rules, that is geodeticCRS will have longitude, latitude + * order and will expect/output coordinates in radians. ProjectedCRS will have + * easting, northing axis order (except the ones with Transverse Mercator South + * Orientated projection). In that mode, the epsg:XXXX syntax will be also + * interprated the same way.
  • + *
* @return Object that must be unreferenced with proj_obj_unref(), or NULL in * case of error. */ @@ -298,8 +320,20 @@ PJ_OBJ *proj_obj_create_from_user_input(PJ_CONTEXT *ctx, const char *text, (void)options; auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); try { + bool usePROJ4InitRules = false; + for (auto iter = options; iter && iter[0]; ++iter) { + const char *value; + if ((value = getOptionValue(*iter, "USE_PROJ4_INIT_RULES="))) { + usePROJ4InitRules = ci_equal(value, "YES"); + } else { + std::string msg("Unknown option :"); + msg += *iter; + proj_log_error(ctx, __FUNCTION__, msg.c_str()); + return nullptr; + } + } auto identifiedObject = nn_dynamic_pointer_cast( - createFromUserInput(text, dbContext)); + createFromUserInput(text, dbContext, usePROJ4InitRules)); if (identifiedObject) { return PJ_OBJ::create(ctx, NN_NO_CHECK(identifiedObject)); } @@ -809,18 +843,6 @@ const char *proj_obj_get_id_code(PJ_OBJ *obj, int index) { // --------------------------------------------------------------------------- -//! @cond Doxygen_Suppress -static const char *getOptionValue(const char *option, - const char *keyWithEqual) noexcept { - if (ci_starts_with(option, keyWithEqual)) { - return option + strlen(keyWithEqual); - } - return nullptr; -} -//! @endcond - -// --------------------------------------------------------------------------- - /** \brief Get a WKT representation of an object. * * The returned string is valid while the input obj parameter is valid, @@ -986,26 +1008,28 @@ const char *proj_obj_as_proj_string(PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, /** \brief Return the area of use of an object. * * @param obj Object (must not be NULL) - * @param p_west_lon Pointer to a double to receive the west longitude (in - * degrees). Or NULL. If the returned value is -1000, the bounding box is + * @param p_west_lon_degree Pointer to a double to receive the west longitude + * (in degrees). Or NULL. If the returned value is -1000, the bounding box is * unknown. - * @param p_south_lat Pointer to a double to receive the south latitude (in - * degrees). Or NULL. If the returned value is -1000, the bounding box is + * @param p_south_lat_degree Pointer to a double to receive the south latitude + * (in degrees). Or NULL. If the returned value is -1000, the bounding box is * unknown. - * @param p_east_lon Pointer to a double to receive the east longitude (in - * degrees). Or NULL. If the returned value is -1000, the bounding box is + * @param p_east_lon_degree Pointer to a double to receive the east longitude + * (in degrees). Or NULL. If the returned value is -1000, the bounding box is * unknown. - * @param p_north_lat Pointer to a double to receive the north latitude (in - * degrees). Or NULL. If the returned value is -1000, the bounding box is + * @param p_north_lat_degree Pointer to a double to receive the north latitude + * (in degrees). Or NULL. If the returned value is -1000, the bounding box is * unknown. * @param p_area_name Pointer to a string to receive the name of the area of * use. Or NULL. *p_area_name is valid while obj is valid itself. * @return TRUE in case of success, FALSE in case of error or if the area * of use is unknown. */ -int proj_obj_get_area_of_use(PJ_OBJ *obj, double *p_west_lon, - double *p_south_lat, double *p_east_lon, - double *p_north_lat, const char **p_area_name) { +int proj_obj_get_area_of_use(PJ_OBJ *obj, double *p_west_lon_degree, + double *p_south_lat_degree, + double *p_east_lon_degree, + double *p_north_lat_degree, + const char **p_area_name) { if (p_area_name) { *p_area_name = nullptr; } @@ -1031,32 +1055,32 @@ int proj_obj_get_area_of_use(PJ_OBJ *obj, double *p_west_lon, auto bbox = dynamic_cast(geogElements[0].get()); if (bbox) { - if (p_west_lon) { - *p_west_lon = bbox->westBoundLongitude(); + if (p_west_lon_degree) { + *p_west_lon_degree = bbox->westBoundLongitude(); } - if (p_south_lat) { - *p_south_lat = bbox->southBoundLatitude(); + if (p_south_lat_degree) { + *p_south_lat_degree = bbox->southBoundLatitude(); } - if (p_east_lon) { - *p_east_lon = bbox->eastBoundLongitude(); + if (p_east_lon_degree) { + *p_east_lon_degree = bbox->eastBoundLongitude(); } - if (p_north_lat) { - *p_north_lat = bbox->northBoundLatitude(); + if (p_north_lat_degree) { + *p_north_lat_degree = bbox->northBoundLatitude(); } return true; } } - if (p_west_lon) { - *p_west_lon = -1000; + if (p_west_lon_degree) { + *p_west_lon_degree = -1000; } - if (p_south_lat) { - *p_south_lat = -1000; + if (p_south_lat_degree) { + *p_south_lat_degree = -1000; } - if (p_east_lon) { - *p_east_lon = -1000; + if (p_east_lon_degree) { + *p_east_lon_degree = -1000; } - if (p_north_lat) { - *p_north_lat = -1000; + if (p_north_lat_degree) { + *p_north_lat_degree = -1000; } return true; } @@ -3743,21 +3767,21 @@ void proj_operation_factory_context_set_desired_accuracy( /** \brief Set the desired area of interest for the resulting coordinate * transformations. * - * For an area of interest crossing the anti-meridian, west_lon will be - * greater than east_lon. + * For an area of interest crossing the anti-meridian, west_lon_degree will be + * greater than east_lon_degree. * * @param ctxt Operation factory context. must not be NULL - * @param west_lon West longitude (in degrees). - * @param south_lat South latitude (in degrees). - * @param east_lon East longitude (in degrees). - * @param north_lat North latitude (in degrees). + * @param west_lon_degree West longitude (in degrees). + * @param south_lat_degree South latitude (in degrees). + * @param east_lon_degree East longitude (in degrees). + * @param north_lat_degree North latitude (in degrees). */ void proj_operation_factory_context_set_area_of_interest( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, double west_lon, double south_lat, - double east_lon, double north_lat) { + PJ_OPERATION_FACTORY_CONTEXT *ctxt, double west_lon_degree, + double south_lat_degree, double east_lon_degree, double north_lat_degree) { assert(ctxt); - ctxt->operationContext->setAreaOfInterest( - Extent::createFromBBOX(west_lon, south_lat, east_lon, north_lat)); + ctxt->operationContext->setAreaOfInterest(Extent::createFromBBOX( + west_lon_degree, south_lat_degree, east_lon_degree, north_lat_degree)); } // --------------------------------------------------------------------------- diff --git a/src/io.cpp b/src/io.cpp index c2ca484d..0d220e13 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -4066,10 +4066,22 @@ BaseObjectNNPtr WKTParser::Private::build(const WKTNodeNNPtr &node) { * determine the appropriate best match. * * + * @param text One of the above mentionned text format + * @param dbContext Database context, or nullptr (in which case database + * lookups will not work) + * @param usePROJ4InitRules When set to true, + * init=epsg:XXXX syntax will be allowed and will be interpreted according to + * PROJ.4 and PROJ.5 rules, that is geodeticCRS will have longitude, latitude + * order and will expect/output coordinates in radians. ProjectedCRS will have + * easting, northing axis order (except the ones with Transverse Mercator South + * Orientated projection). In that mode, the epsg:XXXX syntax will be also + * interprated the same way. * @throw ParsingException */ BaseObjectNNPtr createFromUserInput(const std::string &text, - const DatabaseContextPtr &dbContext) { + const DatabaseContextPtr &dbContext, + bool usePROJ4InitRules) { + for (const auto &wktConstants : WKTConstants::constants()) { if (ci_starts_with(text, wktConstants)) { return WKTParser().attachDatabaseContext(dbContext).createFromWKT( @@ -4085,6 +4097,7 @@ BaseObjectNNPtr createFromUserInput(const std::string &text, strncmp(textWithoutPlusPrefix, "title=", strlen("title=")) == 0) { return PROJStringParser() .attachDatabaseContext(dbContext) + .setUsePROJ4InitRules(usePROJ4InitRules) .createFromPROJString(text); } @@ -5293,6 +5306,7 @@ const DatabaseContextPtr &PROJStringFormatter::databaseContext() const { struct PROJStringParser::Private { DatabaseContextPtr dbContext_{}; + bool usePROJ4InitRules_ = false; std::vector warningList_{}; std::string projString_{}; @@ -5400,6 +5414,22 @@ PROJStringParser::attachDatabaseContext(const DatabaseContextPtr &dbContext) { // --------------------------------------------------------------------------- +/** \brief Set how init=epsg:XXXX syntax should be interpreted. + * + * @param enable When set to true, + * init=epsg:XXXX syntax will be allowed and will be interpreted according to + * PROJ.4 and PROJ.5 rules, that is geodeticCRS will have longitude, latitude + * order and will expect/output coordinates in radians. ProjectedCRS will have + * easting, northing axis order (except the ones with Transverse Mercator South + * Orientated projection). + */ +PROJStringParser &PROJStringParser::setUsePROJ4InitRules(bool enable) { + d->usePROJ4InitRules_ = enable; + return *this; +} + +// --------------------------------------------------------------------------- + /** \brief Return the list of warnings found during parsing. */ std::vector PROJStringParser::warningList() const { @@ -6817,6 +6847,9 @@ PROJStringParser::createFromPROJString(const std::string &projString) { std::string vunits; std::string vto_meter; + d->steps_.clear(); + d->title_.clear(); + d->globalParamValues_.clear(); d->projString_ = projString; PROJStringSyntaxParser(projString, d->steps_, d->globalParamValues_, d->title_, vunits, vto_meter); @@ -6853,6 +6886,99 @@ PROJStringParser::createFromPROJString(const std::string &projString) { : -1)); } + // +init=xxxx:yyyy syntax + if (d->steps_.size() == 1 && d->steps_[0].isInit && + d->steps_[0].paramValues.size() == 0) { + + // Those used to come from a text init file + // We only support them in compatibility mode + if (ci_starts_with(d->steps_[0].name, "epsg:") || + ci_starts_with(d->steps_[0].name, "IGNF:")) { + bool usePROJ4InitRules = d->usePROJ4InitRules_; + if (!usePROJ4InitRules) { + PJ_CONTEXT *ctx = proj_context_create(); + if (ctx) { + usePROJ4InitRules = + proj_context_get_use_proj4_init_rules(ctx) == TRUE; + proj_context_destroy(ctx); + } + } + if (!usePROJ4InitRules) { + throw ParsingException("init=epsg:/init=IGNF: syntax not " + "supported in non-PROJ4 emulation mode"); + } + auto obj = + createFromUserInput(d->steps_[0].name, d->dbContext_, true); + auto geogCRS = dynamic_cast(obj.get()); + if (geogCRS) { + // Override with longitude latitude in radian + return GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + geogCRS->nameStr()), + geogCRS->datum(), geogCRS->datumEnsemble(), + EllipsoidalCS::createLongitudeLatitude( + UnitOfMeasure::RADIAN)); + } + auto projCRS = dynamic_cast(obj.get()); + if (projCRS) { + // Override with easting northing orer + auto conv = projCRS->derivingConversionRef(); + if (conv->method()->getEPSGCode() != + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED) { + return ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + projCRS->nameStr()), + projCRS->baseCRS(), conv, + CartesianCS::createEastingNorthing( + projCRS->coordinateSystem() + ->axisList()[0] + ->unit())); + } + } + return obj; + } + + paralist *init = pj_mkparam(("init=" + d->steps_[0].name).c_str()); + if (!init) { + throw ParsingException("out of memory"); + } + PJ_CONTEXT *ctx = proj_context_create(); + if (!ctx) { + pj_dealloc(init); + throw ParsingException("out of memory"); + } + paralist *list = pj_expand_init(ctx, init); + proj_context_destroy(ctx); + if (!list) { + pj_dealloc(init); + throw ParsingException("cannot expand " + projString); + } + std::string expanded; + bool first = true; + bool has_init_term = false; + for (auto t = list; t;) { + if (!expanded.empty()) { + expanded += ' '; + } + if (first) { + // first parameter is the init= itself + first = false; + } else if (starts_with(t->param, "init=")) { + has_init_term = true; + } else { + expanded += t->param; + } + + auto n = t->next; + pj_dealloc(t); + t = n; + } + + if (!has_init_term) { + return createFromPROJString(expanded); + } + } + int iFirstGeogStep = -1; int iSecondGeogStep = -1; int iProjStep = -1; diff --git a/src/pj_ctx.c b/src/pj_ctx.c index 6626d5ee..54e2cfb7 100644 --- a/src/pj_ctx.c +++ b/src/pj_ctx.c @@ -85,6 +85,7 @@ projCtx pj_get_default_ctx() default_context.app_data = NULL; default_context.fileapi = pj_get_default_fileapi(); default_context.cpp_context = NULL; + default_context.use_proj4_init_rules = FALSE; if( getenv("PROJ_DEBUG") != NULL ) { @@ -114,6 +115,7 @@ projCtx pj_ctx_alloc() memcpy( ctx, pj_get_default_ctx(), sizeof(projCtx_t) ); ctx->last_errno = 0; ctx->cpp_context = NULL; + ctx->use_proj4_init_rules = FALSE; return ctx; } diff --git a/src/proj.h b/src/proj.h index 39d16b30..4b599eba 100644 --- a/src/proj.h +++ b/src/proj.h @@ -335,6 +335,8 @@ typedef struct projCtx_t PJ_CONTEXT; PJ_CONTEXT PROJ_DLL *proj_context_create (void); PJ_CONTEXT PROJ_DLL *proj_context_destroy (PJ_CONTEXT *ctx); +void PROJ_DLL proj_context_use_proj4_init_rules(PJ_CONTEXT *ctx, int enable); +int PROJ_DLL proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx); /* Manage the transformation definition object PJ */ PJ PROJ_DLL *proj_create (PJ_CONTEXT *ctx, const char *definition); @@ -342,11 +344,14 @@ PJ PROJ_DLL *proj_create_argv (PJ_CONTEXT *ctx, int argc, char **argv); PJ PROJ_DLL *proj_create_crs_to_crs(PJ_CONTEXT *ctx, const char *srid_from, const char *srid_to, PJ_AREA *area); PJ PROJ_DLL *proj_destroy (PJ *P); -/* Setter-functions for the opaque PJ_AREA struct */ -/* Uncomment these when implementing support for area-based transformations. -void proj_area_bbox(PJ_AREA *area, LP ll, LP ur); -void proj_area_description(PJ_AREA *area, const char *descr); -*/ + +PJ_AREA PROJ_DLL *proj_area_create(void); +void PROJ_DLL proj_area_set_bbox(PJ_AREA *area, + double west_lon_degree, + double south_lat_degree, + double east_lon_degree, + double north_lat_degree); +void PROJ_DLL proj_area_destroy(PJ_AREA* area); /* Apply transformation to observation - in forward or inverse direction */ enum PJ_DIRECTION { @@ -1194,10 +1199,10 @@ const char PROJ_DLL* proj_obj_get_id_auth_name(PJ_OBJ *obj, int index); const char PROJ_DLL* proj_obj_get_id_code(PJ_OBJ *obj, int index); int PROJ_DLL proj_obj_get_area_of_use(PJ_OBJ *obj, - double* p_west_lon, - double* p_south_lat, - double* p_east_lon, - double* p_north_lat, + double* p_west_lon_degree, + double* p_south_lat_degree, + double* p_east_lon_degree, + double* p_north_lat_degree, const char **p_area_name); /** \brief WKT version. */ @@ -1278,10 +1283,10 @@ void PROJ_DLL proj_operation_factory_context_set_desired_accuracy( void PROJ_DLL proj_operation_factory_context_set_area_of_interest( PJ_OPERATION_FACTORY_CONTEXT *ctxt, - double west_lon, - double south_lat, - double east_lon, - double north_lat); + double west_lon_degree, + double south_lat_degree, + double east_lon_degree, + double north_lat_degree); /** Specify how source and target CRS extent should be used to restrict * candidate operations (only taken into account if no explicit area of diff --git a/src/proj_4D_api.c b/src/proj_4D_api.c index 56694aae..72e1a2d6 100644 --- a/src/proj_4D_api.c +++ b/src/proj_4D_api.c @@ -32,6 +32,9 @@ #include #include #include +#ifndef _MSC_VER +#include +#endif #include "proj.h" #include "proj_internal.h" @@ -634,6 +637,75 @@ indicator, as in {"+proj=utm", "+zone=32"}, or leave it out, as in {"proj=utm", return P; } +/** Create an area of use */ +PJ_AREA * proj_area_create(void) { + return pj_calloc(1, sizeof(PJ_AREA)); +} + +/** Assign a bounding box to an area of use. */ +void proj_area_set_bbox(PJ_AREA *area, + double west_lon_degree, + double south_lat_degree, + double east_lon_degree, + double north_lat_degree) { + area->bbox_set = TRUE; + area->west_lon_degree = west_lon_degree; + area->south_lat_degree = south_lat_degree; + area->east_lon_degree = east_lon_degree; + area->north_lat_degree = north_lat_degree; +} + +/** Free an area of use */ +void proj_area_destroy(PJ_AREA* area) { + pj_dealloc(area); +} + +/************************************************************************/ +/* proj_context_use_proj4_init_rules() */ +/************************************************************************/ + +void proj_context_use_proj4_init_rules(PJ_CONTEXT *ctx, int enable) { + if( ctx == NULL ) { + ctx = pj_get_default_ctx(); + } + ctx->use_proj4_init_rules = enable; +} + +/************************************************************************/ +/* EQUAL() */ +/************************************************************************/ + +static int EQUAL(const char* a, const char* b) { +#ifdef _MSC_VER + return _stricmp(a, b) == 0; +#else + return strcasecmp(a, b) == 0; +#endif +} + +/************************************************************************/ +/* proj_context_get_use_proj4_init_rules() */ +/************************************************************************/ + +int proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx) { + const char* val = getenv("PROJ_USE_PROJ4_INIT_RULES"); + + if( ctx == NULL ) { + ctx = pj_get_default_ctx(); + } + + if( val ) { + if( EQUAL(val, "yes") || EQUAL(val, "on") || EQUAL(val, "true") ) { + return TRUE; + } + if( EQUAL(val, "no") || EQUAL(val, "off") || EQUAL(val, "false") ) { + return FALSE; + } + pj_log(ctx, PJ_LOG_ERROR, "Invalid value for PROJ_USE_PROJ4_INIT_RULES"); + } + + return ctx->use_proj4_init_rules; +} /*****************************************************************************/ @@ -643,42 +715,88 @@ PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *srid_from, const char systems. srid_from and srid_to should be the value part of a +init=... parameter - set, i.e. "epsg:25833" or "IGNF:AMST63". Any projection definition that + set, i.e. "EPSG:25833" or "IGNF:AMST63". Any projection definition that can be found in a init-file in PROJ_LIB is a valid input to this function. - For now the function mimics the cs2cs app: An input and an output CRS is - given and coordinates are transformed via a hub datum (WGS84). This - transformation strategy is referred to as "early-binding" by the EPSG. The - function can be extended to support "late-binding" transformations in the - future without affecting users of the function. - - An "area of use" can be specified in area. In the current version of this - function is has no function, but is added in anticipation of a - "late-binding" implementation in the future. The idea being, that if a user - supplies an area of use, the more accurate transformation between two given - systems can be chosen. + An "area of use" can be specified in area. When it is supplied, the more + accurate transformation between two given systems can be chosen. Example call: - PJ *P = proj_create_crs_to_crs(0, "epsg:25832", "epsg:25833", NULL); + PJ *P = proj_create_crs_to_crs(0, "EPSG:25832", "EPSG:25833", NULL); ******************************************************************************/ PJ *P; - char buffer[512]; - size_t len; + PJ_OBJ* src; + PJ_OBJ* dst; + PJ_OPERATION_FACTORY_CONTEXT* operation_ctx; + PJ_OBJ_LIST* op_list; + PJ_OBJ* op; + const char* proj_string; + const char* const optionsProj4Mode[] = { "USE_PROJ4_INIT_RULES=YES", NULL }; + const char* const* optionsImportCRS = + proj_context_get_use_proj4_init_rules(ctx) ? optionsProj4Mode : NULL; + + src = proj_obj_create_from_user_input(ctx, srid_from, optionsImportCRS); + if( !src ) { + return NULL; + } + + dst = proj_obj_create_from_user_input(ctx, srid_to, optionsImportCRS); + if( !dst ) { + proj_obj_unref(src); + return NULL; + } + + operation_ctx = proj_create_operation_factory_context(ctx, NULL); + if( !operation_ctx ) { + proj_obj_unref(src); + proj_obj_unref(dst); + return NULL; + } + + if( area && area->bbox_set ) { + proj_operation_factory_context_set_area_of_interest( + operation_ctx, + area->west_lon_degree, + area->south_lat_degree, + area->east_lon_degree, + area->north_lat_degree); + } + + proj_operation_factory_context_set_grid_availability_use( + operation_ctx, PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID); + + op_list = proj_obj_create_operations(src, dst, operation_ctx); + + proj_operation_factory_context_unref(operation_ctx); + proj_obj_unref(src); + proj_obj_unref(dst); + + if( !op_list ) { + return NULL; + } - /* area not in use yet, suppressing warning */ - (void)area; + if( proj_obj_list_get_count(op_list) == 0 ) { + proj_obj_list_unref(op_list); + return NULL; + } + + op = proj_obj_list_get(op_list, 0); + proj_obj_list_unref(op_list); + if( !op ) { + return NULL; + } + + proj_string = proj_obj_as_proj_string(op, PJ_PROJ_5, NULL); + if( !proj_string) { + proj_obj_unref(op); + return NULL; + } - strcpy(buffer, "+proj=pipeline +step +init="); - len = strlen(buffer); - strncat(buffer + len, srid_from, sizeof(buffer)-1-len); - len += strlen(buffer + len); - strncat(buffer + len, " +inv +step +init=", sizeof(buffer)-1-len); - len += strlen(buffer + len); - strncat(buffer + len, srid_to, sizeof(buffer)-1-len); + P = proj_create(ctx, proj_string); - P = proj_create(ctx, buffer); + proj_obj_unref(op); return P; } diff --git a/src/proj_symbol_rename.h b/src/proj_symbol_rename.h index d0dd09eb..353473b5 100644 --- a/src/proj_symbol_rename.h +++ b/src/proj_symbol_rename.h @@ -101,14 +101,19 @@ #define pj_transform internal_pj_transform #define proj_angular_input internal_proj_angular_input #define proj_angular_output internal_proj_angular_output +#define proj_area_create internal_proj_area_create +#define proj_area_destroy internal_proj_area_destroy +#define proj_area_set_bbox internal_proj_area_set_bbox #define proj_context_create internal_proj_context_create #define proj_context_delete_cpp_context internal_proj_context_delete_cpp_context #define proj_context_destroy internal_proj_context_destroy #define proj_context_errno internal_proj_context_errno #define proj_context_get_database_path internal_proj_context_get_database_path +#define proj_context_get_use_proj4_init_rules internal_proj_context_get_use_proj4_init_rules #define proj_context_guess_wkt_dialect internal_proj_context_guess_wkt_dialect #define proj_context_set internal_proj_context_set #define proj_context_set_database_path internal_proj_context_set_database_path +#define proj_context_use_proj4_init_rules internal_proj_context_use_proj4_init_rules #define proj_coord internal_proj_coord #define proj_coord_error internal_proj_coord_error #define proj_coordoperation_get_accuracy internal_proj_coordoperation_get_accuracy @@ -132,7 +137,6 @@ #define proj_factors internal_proj_factors #define proj_free_int_list internal_proj_free_int_list #define proj_free_string_list internal_proj_free_string_list -#define proj_geocentric_latitude internal_proj_geocentric_latitude #define proj_geod internal_proj_geod #define proj_get_authorities_from_database internal_proj_get_authorities_from_database #define proj_get_codes_from_database internal_proj_get_codes_from_database diff --git a/src/projects.h b/src/projects.h index e34fc9e0..8ab6f478 100644 --- a/src/projects.h +++ b/src/projects.h @@ -224,10 +224,11 @@ struct PJ_REGION_S { }; struct PJ_AREA { - int id; /* Area ID in the EPSG database */ - LP ll; /* Lower left corner of bounding box */ - LP ur; /* Upper right corner of bounding box */ - char descr[64]; /* text representation of area */ + int bbox_set; + double west_lon_degree; + double south_lat_degree; + double east_lon_degree; + double north_lat_degree; }; struct projCtx_t; @@ -596,6 +597,7 @@ struct projCtx_t { void *app_data; struct projFileAPI_t *fileapi; struct projCppContext* cpp_context; /* internal context for C++ code */ + int use_proj4_init_rules; }; /* classic public API */ diff --git a/test/unit/gie_self_tests.cpp b/test/unit/gie_self_tests.cpp index 67a44fe5..8b90a22d 100644 --- a/test/unit/gie_self_tests.cpp +++ b/test/unit/gie_self_tests.cpp @@ -49,24 +49,11 @@ TEST( gie, cart_selftest ) { PJ_COORD a, b, obs[2]; PJ_COORD coord[2]; - PJ_INFO info; - PJ_PROJ_INFO pj_info; - PJ_GRID_INFO grid_info; - PJ_INIT_INFO init_info; - - PJ_FACTORS factors; - - const PJ_OPERATIONS *oper_list; - const PJ_ELLPS *ellps_list; - const PJ_UNITS *unit_list; - const PJ_PRIME_MERIDIANS *pm_list; - int err; size_t n, sz; double dist, h, t; const char * const args[3] = {"proj=utm", "zone=32", "ellps=GRS80"}; char arg[50] = {"+proj=utm; +zone=32; +ellps=GRS80"}; - char buf[40]; /* An utm projection on the GRS80 ellipsoid */ P = proj_create (PJ_DEFAULT_CTX, arg); @@ -246,10 +233,32 @@ TEST( gie, cart_selftest ) { /* Clean up after proj_trans_* tests */ proj_destroy (P); +} + +// --------------------------------------------------------------------------- + +class gieTest : public ::testing::Test { + + static void DummyLogFunction(void *, int, const char *) {} + + protected: + void SetUp() override { + m_ctxt = proj_context_create(); + proj_log_func(m_ctxt, nullptr, DummyLogFunction); + } + void TearDown() override { proj_context_destroy(m_ctxt); } + + PJ_CONTEXT *m_ctxt = nullptr; +}; + +// --------------------------------------------------------------------------- + +TEST_F( gieTest, proj_create_crs_to_crs ) { /* test proj_create_crs_to_crs() */ - P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "epsg:25832", "epsg:25833", NULL); + auto P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "epsg:25832", "epsg:25833", NULL); ASSERT_TRUE( P != nullptr ); + PJ_COORD a, b; a.xy.x = 700000.0; a.xy.y = 6000000.0; @@ -257,14 +266,39 @@ TEST( gie, cart_selftest ) { b.xy.y = 5999669.3036037628; a = proj_trans(P, PJ_FWD, a); - ASSERT_LE(dist, 1e-7); + EXPECT_NEAR( a.xy.x, b.xy.x, 1e-9); + EXPECT_NEAR( a.xy.y, b.xy.y, 1e-9); proj_destroy(P); - /* let's make sure that only entries in init-files results in a usable PJ */ + /* we can also allow PROJ strings as a usable PJ */ P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "proj=utm +zone=32 +datum=WGS84", "proj=utm +zone=33 +datum=WGS84", NULL); - ASSERT_TRUE( P == nullptr ); + ASSERT_TRUE( P != nullptr ); proj_destroy(P); + EXPECT_TRUE( proj_create_crs_to_crs(m_ctxt, "invalid", "EPSG:25833", NULL) == nullptr ); + EXPECT_TRUE( proj_create_crs_to_crs(m_ctxt, "EPSG:25832", "invalid", NULL) == nullptr ); +} + +// --------------------------------------------------------------------------- + +TEST( gie, info_functions ) { + PJ_INFO info; + PJ_PROJ_INFO pj_info; + PJ_GRID_INFO grid_info; + PJ_INIT_INFO init_info; + + PJ_FACTORS factors; + + const PJ_OPERATIONS *oper_list; + const PJ_ELLPS *ellps_list; + const PJ_UNITS *unit_list; + const PJ_PRIME_MERIDIANS *pm_list; + + char buf[40]; + PJ *P; + char arg[50] = {"+proj=utm; +zone=32; +ellps=GRS80"}; + PJ_COORD a; + /* ********************************************************************** */ /* Test info functions */ /* ********************************************************************** */ @@ -345,7 +379,7 @@ TEST( gie, cart_selftest ) { proj_destroy(P); /* Check that proj_list_* functions work by looping through them */ - n = 0; + size_t n = 0; for (oper_list = proj_list_operations(); oper_list->id; ++oper_list) n++; ASSERT_NE(n, 0U); @@ -361,11 +395,15 @@ TEST( gie, cart_selftest ) { for (pm_list = proj_list_prime_meridians(); pm_list->id; ++pm_list) n++; ASSERT_NE(n, 0U); +} + +// --------------------------------------------------------------------------- +TEST( gie, io_predicates ) { /* check io-predicates */ /* angular in on fwd, linear out */ - P = proj_create (PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); + auto P = proj_create (PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); ASSERT_TRUE( P != nullptr ); ASSERT_TRUE(proj_angular_input (P, PJ_FWD)); ASSERT_FALSE(proj_angular_input (P, PJ_INV)); @@ -425,7 +463,7 @@ TEST( gie, cart_selftest ) { /* Test that pj_fwd* and pj_inv* returns NaNs when receiving NaN input */ P = proj_create(PJ_DEFAULT_CTX, "+proj=merc"); ASSERT_TRUE( P != nullptr ); - a = proj_coord(NAN, NAN, NAN, NAN); + auto a = proj_coord(NAN, NAN, NAN, NAN); a = proj_trans(P, PJ_FWD, a); ASSERT_TRUE ( ( std::isnan(a.v[0]) && std::isnan(a.v[1]) && std::isnan(a.v[2]) && std::isnan(a.v[3]) ) ); diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 6ccd5578..99f58739 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -7448,12 +7448,43 @@ TEST(io, projparse_projected_title) { TEST(io, projparse_init) { + // Not allowed in non-compatibillity mode + EXPECT_THROW(PROJStringParser().createFromPROJString("init=epsg:4326"), + ParsingException); + + { + // EPSG:4326 is normally latitude-longitude order with degree, + // but in compatibillity mode it will be long-lat radian + auto dbContext = DatabaseContext::create(); + auto obj = createFromUserInput("init=epsg:4326", dbContext, true); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_TRUE(crs->coordinateSystem()->isEquivalentTo( + EllipsoidalCS::createLongitudeLatitude(UnitOfMeasure::RADIAN) + .get())); + } + + { + // EPSG:3040 is normally northing-easting order, but in compatibillity + // mode it will be easting-northing + auto dbContext = DatabaseContext::create(); + auto obj = createFromUserInput("init=epsg:3040", dbContext, true); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_TRUE(crs->coordinateSystem()->isEquivalentTo( + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE).get())); + } + { - auto obj = PROJStringParser().createFromPROJString("init=epsg:4326"); + auto obj = + PROJStringParser().createFromPROJString("init=ITRF2000:ITRF2005"); auto co = nn_dynamic_pointer_cast(obj); ASSERT_TRUE(co != nullptr); EXPECT_EQ(co->exportToPROJString(PROJStringFormatter::create().get()), - "+init=epsg:4326"); + "+proj=helmert +x=-0.0001 +y=0.0008 +z=0.0058 +rx=0 +ry=0 " + "+rz=0 +s=-0.0004 +dx=0.0002 +dy=-0.0001 +dz=0.0018 +drx=0 " + "+dry=0 +drz=0 +ds=-8e-06 +t_epoch=2000 " + "+convention=position_vector"); } { -- cgit v1.2.3 From a7f696c0772c558c41c7050496bc658706902af2 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 22 Nov 2018 23:12:54 +0100 Subject: Rename cs2cs.c to cs2cs.cpp with minimal changes to make it compile --- src/Makefile.am | 2 +- src/bin_cs2cs.cmake | 2 +- src/cs2cs.c | 463 --------------------------------------------------- src/cs2cs.cpp | 466 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/emess.h | 8 + 5 files changed, 476 insertions(+), 465 deletions(-) delete mode 100644 src/cs2cs.c create mode 100644 src/cs2cs.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 81524e82..c0802dff 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,7 +19,7 @@ EXTRA_DIST = bin_cct.cmake bin_gie.cmake bin_cs2cs.cmake \ proj_SOURCES = proj.c gen_cheb.c p_series.c projinfo_SOURCES = projinfo.cpp -cs2cs_SOURCES = cs2cs.c gen_cheb.c p_series.c +cs2cs_SOURCES = cs2cs.cpp gen_cheb.c p_series.c cct_SOURCES = cct.c proj_strtod.c proj_strtod.h optargpm.h nad2bin_SOURCES = nad2bin.c geod_SOURCES = geod.c geod_set.c geod_interface.c geod_interface.h diff --git a/src/bin_cs2cs.cmake b/src/bin_cs2cs.cmake index bdb16e1a..9c013dcc 100644 --- a/src/bin_cs2cs.cmake +++ b/src/bin_cs2cs.cmake @@ -1,4 +1,4 @@ -set(CS2CS_SRC cs2cs.c +set(CS2CS_SRC cs2cs.cpp gen_cheb.c p_series.c) diff --git a/src/cs2cs.c b/src/cs2cs.c deleted file mode 100644 index d9e37528..00000000 --- a/src/cs2cs.c +++ /dev/null @@ -1,463 +0,0 @@ -/****************************************************************************** - * Project: PROJ.4 - * Purpose: Mainline program sort of like ``proj'' for converting between - * two coordinate systems. - * Author: Frank Warmerdam, warmerda@home.com - * - ****************************************************************************** - * Copyright (c) 2000, Frank Warmerdam - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - *****************************************************************************/ - -#include -#include -#include -#include -#include -#include - -#include "proj.h" -#include "projects.h" -#include "emess.h" - -#define MAX_LINE 1000 -#define MAX_PARGS 100 - -static projPJ fromProj, toProj; - -static int -reversein = 0, /* != 0 reverse input arguments */ -reverseout = 0, /* != 0 reverse output arguments */ -echoin = 0, /* echo input data to output line */ -tag = '#'; /* beginning of line tag character */ - static char -*oform = (char *)0, /* output format for x-y or decimal degrees */ - oform_buffer[16], /* buffer for oform when using -d */ -*oterr = "*\t*", /* output line for unprojectable input */ -*usage = -"%s\nusage: %s [ -dDeEfIlrstvwW [args] ] [ +opts[=arg] ]\n" -" [+to [+opts[=arg] [ files ]\n"; - -static double (*informat)(const char *, - char **); /* input data deformatter function */ - - -/************************************************************************/ -/* process() */ -/* */ -/* File processing function. */ -/************************************************************************/ -static void process(FILE *fid) - -{ - char line[MAX_LINE+3], *s, pline[40]; - projUV data; - - for (;;) { - double z; - - ++emess_dat.File_line; - if (!(s = fgets(line, MAX_LINE, fid))) - break; - if (!strchr(s, '\n')) { /* overlong line */ - int c; - (void)strcat(s, "\n"); - /* gobble up to newline */ - while ((c = fgetc(fid)) != EOF && c != '\n') ; - } - if (*s == tag) { - fputs(line, stdout); - continue; - } - - if (reversein) { - data.v = (*informat)(s, &s); - data.u = (*informat)(s, &s); - } else { - data.u = (*informat)(s, &s); - data.v = (*informat)(s, &s); - } - - z = strtod( s, &s ); - - if (data.v == HUGE_VAL) - data.u = HUGE_VAL; - - if (!*s && (s > line)) --s; /* assumed we gobbled \n */ - - if ( echoin) { - char t; - t = *s; - *s = '\0'; - (void)fputs(line, stdout); - *s = t; - putchar('\t'); - } - - if (data.u != HUGE_VAL) { - if( pj_transform( fromProj, toProj, 1, 0, - &(data.u), &(data.v), &z ) != 0 ) - { - data.u = HUGE_VAL; - data.v = HUGE_VAL; - emess(-3,"pj_transform(): %s", pj_strerrno(pj_errno)); - } - } - - if (data.u == HUGE_VAL) /* error output */ - fputs(oterr, stdout); - - else if (pj_is_latlong(toProj) && !oform) { /*ascii DMS output */ - if (reverseout) { - fputs(rtodms(pline, data.v, 'N', 'S'), stdout); - putchar('\t'); - fputs(rtodms(pline, data.u, 'E', 'W'), stdout); - } else { - fputs(rtodms(pline, data.u, 'E', 'W'), stdout); - putchar('\t'); - fputs(rtodms(pline, data.v, 'N', 'S'), stdout); - } - - } else { /* x-y or decimal degree ascii output */ - if ( proj_angular_output(toProj, PJ_FWD) ) { - data.v *= RAD_TO_DEG; - data.u *= RAD_TO_DEG; - } - if (reverseout) { - printf(oform,data.v); putchar('\t'); - printf(oform,data.u); - } else { - printf(oform,data.u); putchar('\t'); - printf(oform,data.v); - } - } - - putchar(' '); - if( oform != NULL ) - printf( oform, z ); - else - printf( "%.3f", z ); - if( s ) - printf( "%s", s ); - else - printf( "\n" ); - } -} - -/************************************************************************/ -/* main() */ -/************************************************************************/ - -int main(int argc, char **argv) -{ - char *arg, **eargv = argv, *from_argv[MAX_PARGS], *to_argv[MAX_PARGS]; - FILE *fid; - int from_argc=0, to_argc=0, eargc = 0, mon = 0; - int have_to_flag = 0, inverse = 0, i; - int use_env_locale = 0; - - /* This is just to check that pj_init() is locale-safe */ - /* Used by nad/testvarious */ - if( getenv("PROJ_USE_ENV_LOCALE") != NULL ) - use_env_locale = 1; - - if ((emess_dat.Prog_name = strrchr(*argv,DIR_CHAR)) != NULL) - ++emess_dat.Prog_name; - else emess_dat.Prog_name = *argv; - inverse = ! strncmp(emess_dat.Prog_name, "inv", 3); - if (argc <= 1 ) { - (void)fprintf(stderr, usage, pj_get_release(), emess_dat.Prog_name); - exit (0); - } - /* process run line arguments */ - while (--argc > 0) { /* collect run line arguments */ - if(**++argv == '-') for(arg = *argv;;) { - switch(*++arg) { - case '\0': /* position of "stdin" */ - if (arg[-1] == '-') eargv[eargc++] = "-"; - break; - case 'v': /* monitor dump of initialization */ - mon = 1; - continue; - case 'I': /* alt. method to spec inverse */ - inverse = 1; - continue; - case 'E': /* echo ascii input to ascii output */ - echoin = 1; - continue; - case 't': /* set col. one char */ - if (arg[1]) tag = *++arg; - else emess(1,"missing -t col. 1 tag"); - continue; - case 'l': /* list projections, ellipses or units */ - if (!arg[1] || arg[1] == 'p' || arg[1] == 'P') { - /* list projections */ - const struct PJ_LIST *lp; - int do_long = arg[1] == 'P', c; - const char *str; - - for (lp = proj_list_operations() ; lp->id ; ++lp) { - (void)printf("%s : ", lp->id); - if (do_long) /* possibly multiline description */ - (void)puts(*lp->descr); - else { /* first line, only */ - str = *lp->descr; - while ((c = *str++) && c != '\n') - putchar(c); - putchar('\n'); - } - } - } else if (arg[1] == '=') { /* list projection 'descr' */ - const struct PJ_LIST *lp; - - arg += 2; - for (lp = proj_list_operations() ; lp->id ; ++lp) - if (!strcmp(lp->id, arg)) { - (void)printf("%9s : %s\n", lp->id, *lp->descr); - break; - } - } else if (arg[1] == 'e') { /* list ellipses */ - const struct PJ_ELLPS *le; - - for (le = proj_list_ellps(); le->id ; ++le) - (void)printf("%9s %-16s %-16s %s\n", - le->id, le->major, le->ell, le->name); - } else if (arg[1] == 'u') { /* list units */ - const struct PJ_UNITS *lu; - - for (lu = proj_list_units(); lu->id ; ++lu) - (void)printf("%12s %-20s %s\n", - lu->id, lu->to_meter, lu->name); - } else if (arg[1] == 'd') { /* list datums */ - const struct PJ_DATUMS *ld; - - printf("__datum_id__ __ellipse___ __definition/comments______________________________\n" ); - for (ld = pj_get_datums_ref(); ld->id ; ++ld) - { - printf("%12s %-12s %-30s\n", - ld->id, ld->ellipse_id, ld->defn); - if( ld->comments != NULL && strlen(ld->comments) > 0 ) - printf( "%25s %s\n", " ", ld->comments ); - } - } else if( arg[1] == 'm') { /* list prime meridians */ - const struct PJ_PRIME_MERIDIANS *lpm; - - for (lpm = proj_list_prime_meridians(); lpm->id ; ++lpm) - (void)printf("%12s %-30s\n", - lpm->id, lpm->defn); - } else - emess(1,"invalid list option: l%c",arg[1]); - exit(0); - /* cppcheck-suppress duplicateBreak */ - continue; /* artificial */ - case 'e': /* error line alternative */ - if (--argc <= 0) - noargument: - emess(1,"missing argument for -%c",*arg); - oterr = *++argv; - continue; - case 'W': /* specify seconds precision */ - case 'w': /* -W for constant field width */ - { - char c = arg[1]; - if (c != 0 && isdigit(c)) { - set_rtodms(c - '0', *arg == 'W'); - ++arg; - } else - emess(1,"-W argument missing or non-digit"); - continue; - } - case 'f': /* alternate output format degrees or xy */ - if (--argc <= 0) goto noargument; - oform = *++argv; - continue; - case 'r': /* reverse input */ - reversein = 1; - continue; - case 's': /* reverse output */ - reverseout = 1; - continue; - case 'D': /* set debug level */ - if (--argc <= 0) goto noargument; - pj_ctx_set_debug( pj_get_default_ctx(), atoi(*++argv)); - continue; - case 'd': - if (--argc <= 0) goto noargument; - sprintf(oform_buffer, "%%.%df", atoi(*++argv)); - oform = oform_buffer; - break; - default: - emess(1, "invalid option: -%c",*arg); - break; - } - break; - - } else if (strcmp(*argv,"+to") == 0 ) { - have_to_flag = 1; - - } else if (**argv == '+') { /* + argument */ - if( have_to_flag ) - { - if( to_argc < MAX_PARGS ) - to_argv[to_argc++] = *argv + 1; - else - emess(1,"overflowed + argument table"); - } - else - { - if (from_argc < MAX_PARGS) - from_argv[from_argc++] = *argv + 1; - else - emess(1,"overflowed + argument table"); - } - } else /* assumed to be input file name(s) */ - eargv[eargc++] = *argv; - } - if (eargc == 0 ) /* if no specific files force sysin */ - eargv[eargc++] = "-"; - - /* - * If the user has requested inverse, then just reverse the - * coordinate systems. - */ - if( inverse ) - { - int argcount; - - for( i = 0; i < MAX_PARGS; i++ ) - { - arg = from_argv[i]; - from_argv[i] = to_argv[i]; - to_argv[i] = arg; - } - - argcount = from_argc; - from_argc = to_argc; - to_argc = argcount; - } - - if( use_env_locale ) - { - /* Set locale from environment */ - setlocale(LC_ALL, ""); - } - - if( from_argc == 0 && to_argc != 0 ) - { - /* we will generate the from proj as the latlong of the +to in a bit */ - } - else if (!(fromProj = pj_init(from_argc, from_argv))) - { - printf( "Using from definition: " ); - for( i = 0; i < from_argc; i++ ) - printf( "%s ", from_argv[i] ); - printf( "\n" ); - - emess(3,"projection initialization failure\ncause: %s", - pj_strerrno(pj_errno)); - } - - if( to_argc == 0 ) - { - if (!(toProj = pj_latlong_from_proj( fromProj ))) - { - printf( "Using to definition: " ); - for( i = 0; i < to_argc; i++ ) - printf( "%s ", to_argv[i] ); - printf( "\n" ); - - emess(3,"projection initialization failure\ncause: %s", - pj_strerrno(pj_errno)); - } - } - else if (!(toProj = pj_init(to_argc, to_argv))) - { - printf( "Using to definition: " ); - for( i = 0; i < to_argc; i++ ) - printf( "%s ", to_argv[i] ); - printf( "\n" ); - - emess(3,"projection initialization failure\ncause: %s", - pj_strerrno(pj_errno)); - } - - if( from_argc == 0 && toProj != NULL) - { - if (!(fromProj = pj_latlong_from_proj( toProj ))) - { - printf( "Using to definition: " ); - for( i = 0; i < to_argc; i++ ) - printf( "%s ", to_argv[i] ); - printf( "\n" ); - - emess(3,"projection initialization failure\ncause: %s", - pj_strerrno(pj_errno)); - } - } - - if( use_env_locale ) - { - /* Restore C locale to avoid issues in parsing/outputting numbers*/ - setlocale(LC_ALL, "C"); - } - - if (mon) { - printf( "%c ---- From Coordinate System ----\n", tag ); - pj_pr_list(fromProj); - printf( "%c ---- To Coordinate System ----\n", tag ); - pj_pr_list(toProj); - } - - /* set input formatting control */ - if( !fromProj->is_latlong ) - informat = strtod; - else { - informat = dmstor; - } - - if( !toProj->is_latlong && !oform ) - oform = "%.2f"; - - /* process input file list */ - for ( ; eargc-- ; ++eargv) { - if (**eargv == '-') { - fid = stdin; - emess_dat.File_name = ""; - - } else { - if ((fid = fopen(*eargv, "rt")) == NULL) { - emess(-2, *eargv, "input file"); - continue; - } - emess_dat.File_name = *eargv; - } - emess_dat.File_line = 0; - process(fid); - fclose(fid); - emess_dat.File_name = 0; - } - - pj_free( fromProj ); - pj_free( toProj ); - - pj_deallocate_grids(); - - exit(0); /* normal completion */ -} diff --git a/src/cs2cs.cpp b/src/cs2cs.cpp new file mode 100644 index 00000000..439b172c --- /dev/null +++ b/src/cs2cs.cpp @@ -0,0 +1,466 @@ +/****************************************************************************** + * Project: PROJ.4 + * Purpose: Mainline program sort of like ``proj'' for converting between + * two coordinate systems. + * Author: Frank Warmerdam, warmerda@home.com + * + ****************************************************************************** + * Copyright (c) 2000, Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + *****************************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include "proj.h" +#include "projects.h" +#include "emess.h" + +#define MAX_LINE 1000 +#define MAX_PARGS 100 + +static projPJ fromProj, toProj; + +static int +reversein = 0, /* != 0 reverse input arguments */ +reverseout = 0, /* != 0 reverse output arguments */ +echoin = 0, /* echo input data to output line */ +tag = '#'; /* beginning of line tag character */ + +static const char *oform = nullptr; /* output format for x-y or decimal degrees */ +static char oform_buffer[16]; /* buffer for oform when using -d */ +static const char *oterr = "*\t*"; /* output line for unprojectable input */ +static const char *usage = +"%s\nusage: %s [ -dDeEfIlrstvwW [args] ] [ +opts[=arg] ]\n" +" [+to [+opts[=arg] [ files ]\n"; + +static double (*informat)(const char *, + char **); /* input data deformatter function */ + + +/************************************************************************/ +/* process() */ +/* */ +/* File processing function. */ +/************************************************************************/ +static void process(FILE *fid) + +{ + char line[MAX_LINE+3], *s, pline[40]; + projUV data; + + for (;;) { + double z; + + ++emess_dat.File_line; + if (!(s = fgets(line, MAX_LINE, fid))) + break; + if (!strchr(s, '\n')) { /* overlong line */ + int c; + (void)strcat(s, "\n"); + /* gobble up to newline */ + while ((c = fgetc(fid)) != EOF && c != '\n') ; + } + if (*s == tag) { + fputs(line, stdout); + continue; + } + + if (reversein) { + data.v = (*informat)(s, &s); + data.u = (*informat)(s, &s); + } else { + data.u = (*informat)(s, &s); + data.v = (*informat)(s, &s); + } + + z = strtod( s, &s ); + + if (data.v == HUGE_VAL) + data.u = HUGE_VAL; + + if (!*s && (s > line)) --s; /* assumed we gobbled \n */ + + if ( echoin) { + char t; + t = *s; + *s = '\0'; + (void)fputs(line, stdout); + *s = t; + putchar('\t'); + } + + if (data.u != HUGE_VAL) { + if( pj_transform( fromProj, toProj, 1, 0, + &(data.u), &(data.v), &z ) != 0 ) + { + data.u = HUGE_VAL; + data.v = HUGE_VAL; + emess(-3,"pj_transform(): %s", pj_strerrno(pj_errno)); + } + } + + if (data.u == HUGE_VAL) /* error output */ + fputs(oterr, stdout); + + else if (pj_is_latlong(toProj) && !oform) { /*ascii DMS output */ + if (reverseout) { + fputs(rtodms(pline, data.v, 'N', 'S'), stdout); + putchar('\t'); + fputs(rtodms(pline, data.u, 'E', 'W'), stdout); + } else { + fputs(rtodms(pline, data.u, 'E', 'W'), stdout); + putchar('\t'); + fputs(rtodms(pline, data.v, 'N', 'S'), stdout); + } + + } else { /* x-y or decimal degree ascii output */ + if ( proj_angular_output(toProj, PJ_FWD) ) { + data.v *= RAD_TO_DEG; + data.u *= RAD_TO_DEG; + } + if (reverseout) { + printf(oform,data.v); putchar('\t'); + printf(oform,data.u); + } else { + printf(oform,data.u); putchar('\t'); + printf(oform,data.v); + } + } + + putchar(' '); + if( oform != nullptr ) + printf( oform, z ); + else + printf( "%.3f", z ); + if( s ) + printf( "%s", s ); + else + printf( "\n" ); + } +} + +/************************************************************************/ +/* main() */ +/************************************************************************/ + +int main(int argc, char **argv) +{ + char *arg; + char **eargv = argv; + char *from_argv[MAX_PARGS]; + char *to_argv[MAX_PARGS]; + FILE *fid; + int from_argc=0, to_argc=0, eargc = 0, mon = 0; + int have_to_flag = 0, inverse = 0, i; + int use_env_locale = 0; + + /* This is just to check that pj_init() is locale-safe */ + /* Used by nad/testvarious */ + if( getenv("PROJ_USE_ENV_LOCALE") != nullptr ) + use_env_locale = 1; + + if ((emess_dat.Prog_name = strrchr(*argv,DIR_CHAR)) != nullptr) + ++emess_dat.Prog_name; + else emess_dat.Prog_name = *argv; + inverse = ! strncmp(emess_dat.Prog_name, "inv", 3); + if (argc <= 1 ) { + (void)fprintf(stderr, usage, pj_get_release(), emess_dat.Prog_name); + exit (0); + } + /* process run line arguments */ + while (--argc > 0) { /* collect run line arguments */ + if(**++argv == '-') for(arg = *argv;;) { + switch(*++arg) { + case '\0': /* position of "stdin" */ + if (arg[-1] == '-') eargv[eargc++] = const_cast("-"); + break; + case 'v': /* monitor dump of initialization */ + mon = 1; + continue; + case 'I': /* alt. method to spec inverse */ + inverse = 1; + continue; + case 'E': /* echo ascii input to ascii output */ + echoin = 1; + continue; + case 't': /* set col. one char */ + if (arg[1]) tag = *++arg; + else emess(1,"missing -t col. 1 tag"); + continue; + case 'l': /* list projections, ellipses or units */ + if (!arg[1] || arg[1] == 'p' || arg[1] == 'P') { + /* list projections */ + const struct PJ_LIST *lp; + int do_long = arg[1] == 'P', c; + const char *str; + + for (lp = proj_list_operations() ; lp->id ; ++lp) { + (void)printf("%s : ", lp->id); + if (do_long) /* possibly multiline description */ + (void)puts(*lp->descr); + else { /* first line, only */ + str = *lp->descr; + while ((c = *str++) && c != '\n') + putchar(c); + putchar('\n'); + } + } + } else if (arg[1] == '=') { /* list projection 'descr' */ + const struct PJ_LIST *lp; + + arg += 2; + for (lp = proj_list_operations() ; lp->id ; ++lp) + if (!strcmp(lp->id, arg)) { + (void)printf("%9s : %s\n", lp->id, *lp->descr); + break; + } + } else if (arg[1] == 'e') { /* list ellipses */ + const struct PJ_ELLPS *le; + + for (le = proj_list_ellps(); le->id ; ++le) + (void)printf("%9s %-16s %-16s %s\n", + le->id, le->major, le->ell, le->name); + } else if (arg[1] == 'u') { /* list units */ + const struct PJ_UNITS *lu; + + for (lu = proj_list_units(); lu->id ; ++lu) + (void)printf("%12s %-20s %s\n", + lu->id, lu->to_meter, lu->name); + } else if (arg[1] == 'd') { /* list datums */ + const struct PJ_DATUMS *ld; + + printf("__datum_id__ __ellipse___ __definition/comments______________________________\n" ); + for (ld = pj_get_datums_ref(); ld->id ; ++ld) + { + printf("%12s %-12s %-30s\n", + ld->id, ld->ellipse_id, ld->defn); + if( ld->comments != nullptr && strlen(ld->comments) > 0 ) + printf( "%25s %s\n", " ", ld->comments ); + } + } else if( arg[1] == 'm') { /* list prime meridians */ + const struct PJ_PRIME_MERIDIANS *lpm; + + for (lpm = proj_list_prime_meridians(); lpm->id ; ++lpm) + (void)printf("%12s %-30s\n", + lpm->id, lpm->defn); + } else + emess(1,"invalid list option: l%c",arg[1]); + exit(0); + /* cppcheck-suppress duplicateBreak */ + continue; /* artificial */ + case 'e': /* error line alternative */ + if (--argc <= 0) + noargument: + emess(1,"missing argument for -%c",*arg); + oterr = *++argv; + continue; + case 'W': /* specify seconds precision */ + case 'w': /* -W for constant field width */ + { + char c = arg[1]; + if (c != 0 && isdigit(c)) { + set_rtodms(c - '0', *arg == 'W'); + ++arg; + } else + emess(1,"-W argument missing or non-digit"); + continue; + } + case 'f': /* alternate output format degrees or xy */ + if (--argc <= 0) goto noargument; + oform = *++argv; + continue; + case 'r': /* reverse input */ + reversein = 1; + continue; + case 's': /* reverse output */ + reverseout = 1; + continue; + case 'D': /* set debug level */ + if (--argc <= 0) goto noargument; + pj_ctx_set_debug( pj_get_default_ctx(), atoi(*++argv)); + continue; + case 'd': + if (--argc <= 0) goto noargument; + sprintf(oform_buffer, "%%.%df", atoi(*++argv)); + oform = oform_buffer; + break; + default: + emess(1, "invalid option: -%c",*arg); + break; + } + break; + + } else if (strcmp(*argv,"+to") == 0 ) { + have_to_flag = 1; + + } else if (**argv == '+') { /* + argument */ + if( have_to_flag ) + { + if( to_argc < MAX_PARGS ) + to_argv[to_argc++] = *argv + 1; + else + emess(1,"overflowed + argument table"); + } + else + { + if (from_argc < MAX_PARGS) + from_argv[from_argc++] = *argv + 1; + else + emess(1,"overflowed + argument table"); + } + } else /* assumed to be input file name(s) */ + eargv[eargc++] = *argv; + } + if (eargc == 0 ) /* if no specific files force sysin */ + eargv[eargc++] = const_cast("-"); + + /* + * If the user has requested inverse, then just reverse the + * coordinate systems. + */ + if( inverse ) + { + int argcount; + + for( i = 0; i < MAX_PARGS; i++ ) + { + arg = from_argv[i]; + from_argv[i] = to_argv[i]; + to_argv[i] = arg; + } + + argcount = from_argc; + from_argc = to_argc; + to_argc = argcount; + } + + if( use_env_locale ) + { + /* Set locale from environment */ + setlocale(LC_ALL, ""); + } + + if( from_argc == 0 && to_argc != 0 ) + { + /* we will generate the from proj as the latlong of the +to in a bit */ + } + else if (!(fromProj = pj_init(from_argc, from_argv))) + { + printf( "Using from definition: " ); + for( i = 0; i < from_argc; i++ ) + printf( "%s ", from_argv[i] ); + printf( "\n" ); + + emess(3,"projection initialization failure\ncause: %s", + pj_strerrno(pj_errno)); + } + + if( to_argc == 0 ) + { + if (!(toProj = pj_latlong_from_proj( fromProj ))) + { + printf( "Using to definition: " ); + for( i = 0; i < to_argc; i++ ) + printf( "%s ", to_argv[i] ); + printf( "\n" ); + + emess(3,"projection initialization failure\ncause: %s", + pj_strerrno(pj_errno)); + } + } + else if (!(toProj = pj_init(to_argc, to_argv))) + { + printf( "Using to definition: " ); + for( i = 0; i < to_argc; i++ ) + printf( "%s ", to_argv[i] ); + printf( "\n" ); + + emess(3,"projection initialization failure\ncause: %s", + pj_strerrno(pj_errno)); + } + + if( from_argc == 0 && toProj != nullptr) + { + if (!(fromProj = pj_latlong_from_proj( toProj ))) + { + printf( "Using to definition: " ); + for( i = 0; i < to_argc; i++ ) + printf( "%s ", to_argv[i] ); + printf( "\n" ); + + emess(3,"projection initialization failure\ncause: %s", + pj_strerrno(pj_errno)); + } + } + + if( use_env_locale ) + { + /* Restore C locale to avoid issues in parsing/outputting numbers*/ + setlocale(LC_ALL, "C"); + } + + if (mon) { + printf( "%c ---- From Coordinate System ----\n", tag ); + pj_pr_list(fromProj); + printf( "%c ---- To Coordinate System ----\n", tag ); + pj_pr_list(toProj); + } + + /* set input formatting control */ + if( !fromProj->is_latlong ) + informat = strtod; + else { + informat = dmstor; + } + + if( !toProj->is_latlong && !oform ) + oform = "%.2f"; + + /* process input file list */ + for ( ; eargc-- ; ++eargv) { + if (**eargv == '-') { + fid = stdin; + emess_dat.File_name = const_cast(""); + + } else { + if ((fid = fopen(*eargv, "rt")) == nullptr) { + emess(-2, *eargv, "input file"); + continue; + } + emess_dat.File_name = *eargv; + } + emess_dat.File_line = 0; + process(fid); + fclose(fid); + emess_dat.File_name = nullptr; + } + + pj_free( fromProj ); + pj_free( toProj ); + + pj_deallocate_grids(); + + exit(0); /* normal completion */ +} diff --git a/src/emess.h b/src/emess.h index 82526776..cb6b38f4 100644 --- a/src/emess.h +++ b/src/emess.h @@ -2,6 +2,10 @@ #ifndef EMESS_H #define EMESS_H +#ifdef __cplusplus +extern "C" { +#endif + struct EMESS { char *File_name, /* input file name */ *Prog_name; /* name of program */ @@ -26,4 +30,8 @@ extern struct EMESS PROJ_DLL emess_dat; void PROJ_DLL emess(int, const char *, ...); +#ifdef __cplusplus +} +#endif + #endif /* end EMESS_H */ -- cgit v1.2.3 From d48f97180dacceb6d03c79d69044e19ba0af3fbc Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 22 Nov 2018 23:26:32 +0100 Subject: Run reformat_cpp.sh on cs2cs.cpp --- src/cs2cs.cpp | 461 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 229 insertions(+), 232 deletions(-) diff --git a/src/cs2cs.cpp b/src/cs2cs.cpp index 439b172c..6f302ae3 100644 --- a/src/cs2cs.cpp +++ b/src/cs2cs.cpp @@ -33,41 +33,43 @@ #include #include +// PROJ include order is sensitive +// clang-format off #include "proj.h" #include "projects.h" #include "emess.h" +// clang-format on #define MAX_LINE 1000 #define MAX_PARGS 100 -static projPJ fromProj, toProj; +static projPJ fromProj, toProj; -static int -reversein = 0, /* != 0 reverse input arguments */ -reverseout = 0, /* != 0 reverse output arguments */ -echoin = 0, /* echo input data to output line */ -tag = '#'; /* beginning of line tag character */ +static int reversein = 0, /* != 0 reverse input arguments */ + reverseout = 0, /* != 0 reverse output arguments */ + echoin = 0, /* echo input data to output line */ + tag = '#'; /* beginning of line tag character */ -static const char *oform = nullptr; /* output format for x-y or decimal degrees */ +static const char *oform = + nullptr; /* output format for x-y or decimal degrees */ static char oform_buffer[16]; /* buffer for oform when using -d */ static const char *oterr = "*\t*"; /* output line for unprojectable input */ static const char *usage = -"%s\nusage: %s [ -dDeEfIlrstvwW [args] ] [ +opts[=arg] ]\n" -" [+to [+opts[=arg] [ files ]\n"; + "%s\nusage: %s [ -dDeEfIlrstvwW [args] ] [ +opts[=arg] ]\n" + " [+to [+opts[=arg] [ files ]\n"; -static double (*informat)(const char *, +static double (*informat)(const char *, char **); /* input data deformatter function */ - /************************************************************************/ /* process() */ /* */ /* File processing function. */ /************************************************************************/ -static void process(FILE *fid) +static void process(FILE *fid) { - char line[MAX_LINE+3], *s, pline[40]; + char line[MAX_LINE + 3], *s, pline[40]; projUV data; for (;;) { @@ -79,8 +81,9 @@ static void process(FILE *fid) if (!strchr(s, '\n')) { /* overlong line */ int c; (void)strcat(s, "\n"); - /* gobble up to newline */ - while ((c = fgetc(fid)) != EOF && c != '\n') ; + /* gobble up to newline */ + while ((c = fgetc(fid)) != EOF && c != '\n') + ; } if (*s == tag) { fputs(line, stdout); @@ -95,14 +98,15 @@ static void process(FILE *fid) data.v = (*informat)(s, &s); } - z = strtod( s, &s ); + z = strtod(s, &s); if (data.v == HUGE_VAL) data.u = HUGE_VAL; - if (!*s && (s > line)) --s; /* assumed we gobbled \n */ + if (!*s && (s > line)) + --s; /* assumed we gobbled \n */ - if ( echoin) { + if (echoin) { char t; t = *s; *s = '\0'; @@ -112,19 +116,18 @@ static void process(FILE *fid) } if (data.u != HUGE_VAL) { - if( pj_transform( fromProj, toProj, 1, 0, - &(data.u), &(data.v), &z ) != 0 ) - { + if (pj_transform(fromProj, toProj, 1, 0, &(data.u), &(data.v), + &z) != 0) { data.u = HUGE_VAL; data.v = HUGE_VAL; - emess(-3,"pj_transform(): %s", pj_strerrno(pj_errno)); + emess(-3, "pj_transform(): %s", pj_strerrno(pj_errno)); } } if (data.u == HUGE_VAL) /* error output */ fputs(oterr, stdout); - else if (pj_is_latlong(toProj) && !oform) { /*ascii DMS output */ + else if (pj_is_latlong(toProj) && !oform) { /*ascii DMS output */ if (reverseout) { fputs(rtodms(pline, data.v, 'N', 'S'), stdout); putchar('\t'); @@ -136,28 +139,30 @@ static void process(FILE *fid) } } else { /* x-y or decimal degree ascii output */ - if ( proj_angular_output(toProj, PJ_FWD) ) { + if (proj_angular_output(toProj, PJ_FWD)) { data.v *= RAD_TO_DEG; data.u *= RAD_TO_DEG; } if (reverseout) { - printf(oform,data.v); putchar('\t'); - printf(oform,data.u); + printf(oform, data.v); + putchar('\t'); + printf(oform, data.u); } else { - printf(oform,data.u); putchar('\t'); - printf(oform,data.v); + printf(oform, data.u); + putchar('\t'); + printf(oform, data.v); } } putchar(' '); - if( oform != nullptr ) - printf( oform, z ); + if (oform != nullptr) + printf(oform, z); else - printf( "%.3f", z ); - if( s ) - printf( "%s", s ); + printf("%.3f", z); + if (s) + printf("%s", s); else - printf( "\n" ); + printf("\n"); } } @@ -165,187 +170,190 @@ static void process(FILE *fid) /* main() */ /************************************************************************/ -int main(int argc, char **argv) -{ +int main(int argc, char **argv) { char *arg; char **eargv = argv; char *from_argv[MAX_PARGS]; char *to_argv[MAX_PARGS]; FILE *fid; - int from_argc=0, to_argc=0, eargc = 0, mon = 0; + int from_argc = 0, to_argc = 0, eargc = 0, mon = 0; int have_to_flag = 0, inverse = 0, i; int use_env_locale = 0; /* This is just to check that pj_init() is locale-safe */ /* Used by nad/testvarious */ - if( getenv("PROJ_USE_ENV_LOCALE") != nullptr ) + if (getenv("PROJ_USE_ENV_LOCALE") != nullptr) use_env_locale = 1; - if ((emess_dat.Prog_name = strrchr(*argv,DIR_CHAR)) != nullptr) + if ((emess_dat.Prog_name = strrchr(*argv, DIR_CHAR)) != nullptr) ++emess_dat.Prog_name; - else emess_dat.Prog_name = *argv; - inverse = ! strncmp(emess_dat.Prog_name, "inv", 3); - if (argc <= 1 ) { + else + emess_dat.Prog_name = *argv; + inverse = !strncmp(emess_dat.Prog_name, "inv", 3); + if (argc <= 1) { (void)fprintf(stderr, usage, pj_get_release(), emess_dat.Prog_name); - exit (0); + exit(0); } /* process run line arguments */ while (--argc > 0) { /* collect run line arguments */ - if(**++argv == '-') for(arg = *argv;;) { - switch(*++arg) { - case '\0': /* position of "stdin" */ - if (arg[-1] == '-') eargv[eargc++] = const_cast("-"); - break; - case 'v': /* monitor dump of initialization */ - mon = 1; - continue; - case 'I': /* alt. method to spec inverse */ - inverse = 1; - continue; - case 'E': /* echo ascii input to ascii output */ - echoin = 1; - continue; - case 't': /* set col. one char */ - if (arg[1]) tag = *++arg; - else emess(1,"missing -t col. 1 tag"); - continue; - case 'l': /* list projections, ellipses or units */ - if (!arg[1] || arg[1] == 'p' || arg[1] == 'P') { - /* list projections */ - const struct PJ_LIST *lp; - int do_long = arg[1] == 'P', c; - const char *str; - - for (lp = proj_list_operations() ; lp->id ; ++lp) { - (void)printf("%s : ", lp->id); - if (do_long) /* possibly multiline description */ - (void)puts(*lp->descr); - else { /* first line, only */ - str = *lp->descr; - while ((c = *str++) && c != '\n') - putchar(c); - putchar('\n'); + if (**++argv == '-') + for (arg = *argv;;) { + switch (*++arg) { + case '\0': /* position of "stdin" */ + if (arg[-1] == '-') + eargv[eargc++] = const_cast("-"); + break; + case 'v': /* monitor dump of initialization */ + mon = 1; + continue; + case 'I': /* alt. method to spec inverse */ + inverse = 1; + continue; + case 'E': /* echo ascii input to ascii output */ + echoin = 1; + continue; + case 't': /* set col. one char */ + if (arg[1]) + tag = *++arg; + else + emess(1, "missing -t col. 1 tag"); + continue; + case 'l': /* list projections, ellipses or units */ + if (!arg[1] || arg[1] == 'p' || arg[1] == 'P') { + /* list projections */ + const struct PJ_LIST *lp; + int do_long = arg[1] == 'P', c; + const char *str; + + for (lp = proj_list_operations(); lp->id; ++lp) { + (void)printf("%s : ", lp->id); + if (do_long) /* possibly multiline description */ + (void)puts(*lp->descr); + else { /* first line, only */ + str = *lp->descr; + while ((c = *str++) && c != '\n') + putchar(c); + putchar('\n'); + } } - } - } else if (arg[1] == '=') { /* list projection 'descr' */ - const struct PJ_LIST *lp; - - arg += 2; - for (lp = proj_list_operations() ; lp->id ; ++lp) - if (!strcmp(lp->id, arg)) { - (void)printf("%9s : %s\n", lp->id, *lp->descr); - break; + } else if (arg[1] == '=') { /* list projection 'descr' */ + const struct PJ_LIST *lp; + + arg += 2; + for (lp = proj_list_operations(); lp->id; ++lp) + if (!strcmp(lp->id, arg)) { + (void)printf("%9s : %s\n", lp->id, *lp->descr); + break; + } + } else if (arg[1] == 'e') { /* list ellipses */ + const struct PJ_ELLPS *le; + + for (le = proj_list_ellps(); le->id; ++le) + (void)printf("%9s %-16s %-16s %s\n", le->id, + le->major, le->ell, le->name); + } else if (arg[1] == 'u') { /* list units */ + const struct PJ_UNITS *lu; + + for (lu = proj_list_units(); lu->id; ++lu) + (void)printf("%12s %-20s %s\n", lu->id, + lu->to_meter, lu->name); + } else if (arg[1] == 'd') { /* list datums */ + const struct PJ_DATUMS *ld; + + printf("__datum_id__ __ellipse___ " + "__definition/" + "comments______________________________\n"); + for (ld = pj_get_datums_ref(); ld->id; ++ld) { + printf("%12s %-12s %-30s\n", ld->id, ld->ellipse_id, + ld->defn); + if (ld->comments != nullptr && + strlen(ld->comments) > 0) + printf("%25s %s\n", " ", ld->comments); } - } else if (arg[1] == 'e') { /* list ellipses */ - const struct PJ_ELLPS *le; - - for (le = proj_list_ellps(); le->id ; ++le) - (void)printf("%9s %-16s %-16s %s\n", - le->id, le->major, le->ell, le->name); - } else if (arg[1] == 'u') { /* list units */ - const struct PJ_UNITS *lu; - - for (lu = proj_list_units(); lu->id ; ++lu) - (void)printf("%12s %-20s %s\n", - lu->id, lu->to_meter, lu->name); - } else if (arg[1] == 'd') { /* list datums */ - const struct PJ_DATUMS *ld; - - printf("__datum_id__ __ellipse___ __definition/comments______________________________\n" ); - for (ld = pj_get_datums_ref(); ld->id ; ++ld) - { - printf("%12s %-12s %-30s\n", - ld->id, ld->ellipse_id, ld->defn); - if( ld->comments != nullptr && strlen(ld->comments) > 0 ) - printf( "%25s %s\n", " ", ld->comments ); - } - } else if( arg[1] == 'm') { /* list prime meridians */ - const struct PJ_PRIME_MERIDIANS *lpm; - - for (lpm = proj_list_prime_meridians(); lpm->id ; ++lpm) - (void)printf("%12s %-30s\n", - lpm->id, lpm->defn); - } else - emess(1,"invalid list option: l%c",arg[1]); - exit(0); - /* cppcheck-suppress duplicateBreak */ - continue; /* artificial */ - case 'e': /* error line alternative */ - if (--argc <= 0) - noargument: - emess(1,"missing argument for -%c",*arg); - oterr = *++argv; - continue; - case 'W': /* specify seconds precision */ - case 'w': /* -W for constant field width */ - { - char c = arg[1]; - if (c != 0 && isdigit(c)) { - set_rtodms(c - '0', *arg == 'W'); - ++arg; - } else - emess(1,"-W argument missing or non-digit"); - continue; - } - case 'f': /* alternate output format degrees or xy */ - if (--argc <= 0) goto noargument; - oform = *++argv; - continue; - case 'r': /* reverse input */ - reversein = 1; - continue; - case 's': /* reverse output */ - reverseout = 1; - continue; - case 'D': /* set debug level */ - if (--argc <= 0) goto noargument; - pj_ctx_set_debug( pj_get_default_ctx(), atoi(*++argv)); - continue; - case 'd': - if (--argc <= 0) goto noargument; - sprintf(oform_buffer, "%%.%df", atoi(*++argv)); - oform = oform_buffer; - break; - default: - emess(1, "invalid option: -%c",*arg); + } else if (arg[1] == 'm') { /* list prime meridians */ + const struct PJ_PRIME_MERIDIANS *lpm; + + for (lpm = proj_list_prime_meridians(); lpm->id; ++lpm) + (void)printf("%12s %-30s\n", lpm->id, lpm->defn); + } else + emess(1, "invalid list option: l%c", arg[1]); + exit(0); + /* cppcheck-suppress duplicateBreak */ + continue; /* artificial */ + case 'e': /* error line alternative */ + if (--argc <= 0) + noargument: + emess(1, "missing argument for -%c", *arg); + oterr = *++argv; + continue; + case 'W': /* specify seconds precision */ + case 'w': /* -W for constant field width */ + { + char c = arg[1]; + if (c != 0 && isdigit(c)) { + set_rtodms(c - '0', *arg == 'W'); + ++arg; + } else + emess(1, "-W argument missing or non-digit"); + continue; + } + case 'f': /* alternate output format degrees or xy */ + if (--argc <= 0) + goto noargument; + oform = *++argv; + continue; + case 'r': /* reverse input */ + reversein = 1; + continue; + case 's': /* reverse output */ + reverseout = 1; + continue; + case 'D': /* set debug level */ + if (--argc <= 0) + goto noargument; + pj_ctx_set_debug(pj_get_default_ctx(), atoi(*++argv)); + continue; + case 'd': + if (--argc <= 0) + goto noargument; + sprintf(oform_buffer, "%%.%df", atoi(*++argv)); + oform = oform_buffer; + break; + default: + emess(1, "invalid option: -%c", *arg); + break; + } break; } - break; - - } else if (strcmp(*argv,"+to") == 0 ) { + else if (strcmp(*argv, "+to") == 0) { have_to_flag = 1; } else if (**argv == '+') { /* + argument */ - if( have_to_flag ) - { - if( to_argc < MAX_PARGS ) + if (have_to_flag) { + if (to_argc < MAX_PARGS) to_argv[to_argc++] = *argv + 1; else - emess(1,"overflowed + argument table"); - } - else - { + emess(1, "overflowed + argument table"); + } else { if (from_argc < MAX_PARGS) from_argv[from_argc++] = *argv + 1; else - emess(1,"overflowed + argument table"); + emess(1, "overflowed + argument table"); } } else /* assumed to be input file name(s) */ eargv[eargc++] = *argv; } - if (eargc == 0 ) /* if no specific files force sysin */ - eargv[eargc++] = const_cast("-"); + if (eargc == 0) /* if no specific files force sysin */ + eargv[eargc++] = const_cast("-"); - /* + /* * If the user has requested inverse, then just reverse the * coordinate systems. */ - if( inverse ) - { - int argcount; - - for( i = 0; i < MAX_PARGS; i++ ) - { + if (inverse) { + int argcount; + + for (i = 0; i < MAX_PARGS; i++) { arg = from_argv[i]; from_argv[i] = to_argv[i]; to_argv[i] = arg; @@ -356,93 +364,82 @@ int main(int argc, char **argv) to_argc = argcount; } - if( use_env_locale ) - { + if (use_env_locale) { /* Set locale from environment */ setlocale(LC_ALL, ""); } - if( from_argc == 0 && to_argc != 0 ) - { + if (from_argc == 0 && to_argc != 0) { /* we will generate the from proj as the latlong of the +to in a bit */ - } - else if (!(fromProj = pj_init(from_argc, from_argv))) - { - printf( "Using from definition: " ); - for( i = 0; i < from_argc; i++ ) - printf( "%s ", from_argv[i] ); - printf( "\n" ); - - emess(3,"projection initialization failure\ncause: %s", + } else if (!(fromProj = pj_init(from_argc, from_argv))) { + printf("Using from definition: "); + for (i = 0; i < from_argc; i++) + printf("%s ", from_argv[i]); + printf("\n"); + + emess(3, "projection initialization failure\ncause: %s", pj_strerrno(pj_errno)); } - if( to_argc == 0 ) - { - if (!(toProj = pj_latlong_from_proj( fromProj ))) - { - printf( "Using to definition: " ); - for( i = 0; i < to_argc; i++ ) - printf( "%s ", to_argv[i] ); - printf( "\n" ); - - emess(3,"projection initialization failure\ncause: %s", + if (to_argc == 0) { + if (!(toProj = pj_latlong_from_proj(fromProj))) { + printf("Using to definition: "); + for (i = 0; i < to_argc; i++) + printf("%s ", to_argv[i]); + printf("\n"); + + emess(3, "projection initialization failure\ncause: %s", pj_strerrno(pj_errno)); - } - } - else if (!(toProj = pj_init(to_argc, to_argv))) - { - printf( "Using to definition: " ); - for( i = 0; i < to_argc; i++ ) - printf( "%s ", to_argv[i] ); - printf( "\n" ); - - emess(3,"projection initialization failure\ncause: %s", + } + } else if (!(toProj = pj_init(to_argc, to_argv))) { + printf("Using to definition: "); + for (i = 0; i < to_argc; i++) + printf("%s ", to_argv[i]); + printf("\n"); + + emess(3, "projection initialization failure\ncause: %s", pj_strerrno(pj_errno)); } - if( from_argc == 0 && toProj != nullptr) - { - if (!(fromProj = pj_latlong_from_proj( toProj ))) - { - printf( "Using to definition: " ); - for( i = 0; i < to_argc; i++ ) - printf( "%s ", to_argv[i] ); - printf( "\n" ); - - emess(3,"projection initialization failure\ncause: %s", + if (from_argc == 0 && toProj != nullptr) { + if (!(fromProj = pj_latlong_from_proj(toProj))) { + printf("Using to definition: "); + for (i = 0; i < to_argc; i++) + printf("%s ", to_argv[i]); + printf("\n"); + + emess(3, "projection initialization failure\ncause: %s", pj_strerrno(pj_errno)); - } + } } - if( use_env_locale ) - { + if (use_env_locale) { /* Restore C locale to avoid issues in parsing/outputting numbers*/ setlocale(LC_ALL, "C"); } if (mon) { - printf( "%c ---- From Coordinate System ----\n", tag ); + printf("%c ---- From Coordinate System ----\n", tag); pj_pr_list(fromProj); - printf( "%c ---- To Coordinate System ----\n", tag ); + printf("%c ---- To Coordinate System ----\n", tag); pj_pr_list(toProj); } /* set input formatting control */ - if( !fromProj->is_latlong ) + if (!fromProj->is_latlong) informat = strtod; else { informat = dmstor; } - if( !toProj->is_latlong && !oform ) + if (!toProj->is_latlong && !oform) oform = "%.2f"; /* process input file list */ - for ( ; eargc-- ; ++eargv) { + for (; eargc--; ++eargv) { if (**eargv == '-') { fid = stdin; - emess_dat.File_name = const_cast(""); + emess_dat.File_name = const_cast(""); } else { if ((fid = fopen(*eargv, "rt")) == nullptr) { @@ -457,8 +454,8 @@ int main(int argc, char **argv) emess_dat.File_name = nullptr; } - pj_free( fromProj ); - pj_free( toProj ); + pj_free(fromProj); + pj_free(toProj); pj_deallocate_grids(); -- cgit v1.2.3 From a66c12277666489cac74535bad8d2cf565ad542d Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 23 Nov 2018 15:51:33 +0100 Subject: cs2cs: upgrade to use proj_create_crs_to_crs() --- include/proj/coordinateoperation.hpp | 11 +- include/proj/crs.hpp | 2 + include/proj/internal/internal.hpp | 2 +- include/proj/io.hpp | 1 + src/c_api.cpp | 147 +++++++++++- src/coordinateoperation.cpp | 264 +++++++++++++++++---- src/crs.cpp | 8 + src/cs2cs.cpp | 327 ++++++++++++++++++++------ src/io.cpp | 441 ++++++++++++++++++++++------------- src/pj_apply_gridshift.c | 2 +- src/pj_fwd.c | 9 +- src/proj.h | 13 ++ src/proj_4D_api.c | 7 +- test/gie/more_builtins.gie | 10 + test/old/proj_outIGNF.dist | 42 ++-- test/old/testIGNF | 12 +- test/old/testdatumfile | 4 +- test/old/testvarious | 24 +- test/old/tv_out.dist | 12 +- test/unit/test_c_api.cpp | 81 +++++++ test/unit/test_io.cpp | 103 ++++---- test/unit/test_operation.cpp | 128 ++++++++++ 22 files changed, 1278 insertions(+), 372 deletions(-) diff --git a/include/proj/coordinateoperation.hpp b/include/proj/coordinateoperation.hpp index 293ba480..4005176a 100644 --- a/include/proj/coordinateoperation.hpp +++ b/include/proj/coordinateoperation.hpp @@ -818,10 +818,6 @@ class PROJ_GCC_DLL Conversion : public SingleOperation { PROJ_DLL ~Conversion() override; //! @endcond - //! @cond Doxygen_Suppress - PROJ_INTERNAL ConversionNNPtr shallowClone() const; - //! @endcond - PROJ_DLL CoordinateOperationNNPtr inverse() const override; //! @cond Doxygen_Suppress @@ -1287,6 +1283,9 @@ class PROJ_GCC_DLL Conversion : public SingleOperation { PROJ_INTERNAL const char *getESRIMethodName() const; PROJ_INTERNAL const char *getWKT1GDALMethodName() const; + + PROJ_INTERNAL ConversionNNPtr shallowClone() const; + //! @endcond protected: @@ -1490,6 +1489,8 @@ class PROJ_GCC_DLL Transformation : public SingleOperation { PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) const override; // throw(io::FormattingException) + PROJ_INTERNAL TransformationNNPtr shallowClone() const; + //! @endcond protected: @@ -1499,6 +1500,7 @@ class PROJ_GCC_DLL Transformation : public SingleOperation { const OperationMethodNNPtr &methodIn, const std::vector &values, const std::vector &accuracies); + PROJ_INTERNAL Transformation(const Transformation &other); INLINED_MAKE_SHARED PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) @@ -1508,7 +1510,6 @@ class PROJ_GCC_DLL Transformation : public SingleOperation { private: PROJ_OPAQUE_PRIVATE_DATA - Transformation(const Transformation &) = delete; }; // --------------------------------------------------------------------------- diff --git a/include/proj/crs.hpp b/include/proj/crs.hpp index 82b2bd49..10e0a639 100644 --- a/include/proj/crs.hpp +++ b/include/proj/crs.hpp @@ -108,6 +108,8 @@ class PROJ_GCC_DLL CRS : public common::ObjectUsage { PROJ_FOR_TEST CRSNNPtr shallowClone() const; + PROJ_INTERNAL const std::string &getExtensionProj4() const noexcept; + //! @endcond protected: diff --git a/include/proj/internal/internal.hpp b/include/proj/internal/internal.hpp index 85dd5ac3..b16e12bc 100644 --- a/include/proj/internal/internal.hpp +++ b/include/proj/internal/internal.hpp @@ -104,7 +104,7 @@ PROJ_FOR_TEST std::string replaceAll(const std::string &str, const std::string &before, const std::string &after); -size_t ci_find(const std::string &osStr, const char *needle) noexcept; +PROJ_DLL size_t ci_find(const std::string &osStr, const char *needle) noexcept; size_t ci_find(const std::string &osStr, const std::string &needle, size_t startPos = 0) noexcept; diff --git a/include/proj/io.hpp b/include/proj/io.hpp index 3b5019c1..653edfbc 100644 --- a/include/proj/io.hpp +++ b/include/proj/io.hpp @@ -365,6 +365,7 @@ class PROJ_GCC_DLL PROJStringFormatter { PROJ_DLL void stopInversion(); PROJ_INTERNAL bool isInverted() const; PROJ_INTERNAL bool getUseETMercForTMerc(bool &settingSetOut) const; + PROJ_INTERNAL void setCoordinateOperationOptimizations(bool enable); PROJ_DLL void ingestPROJString(const std::string &str); // throw ParsingException diff --git a/src/c_api.cpp b/src/c_api.cpp index ba1b9534..3b51d905 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -39,6 +39,7 @@ #include "proj/common.hpp" #include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" #include "proj/crs.hpp" #include "proj/datum.hpp" #include "proj/io.hpp" @@ -56,6 +57,7 @@ using namespace NS_PROJ::common; using namespace NS_PROJ::crs; +using namespace NS_PROJ::cs; using namespace NS_PROJ::datum; using namespace NS_PROJ::io; using namespace NS_PROJ::internal; @@ -1354,8 +1356,8 @@ int proj_obj_prime_meridian_get_parameters(PJ_OBJ *prime_meridian, // --------------------------------------------------------------------------- -/** \brief Return the base CRS of a BoundCRS or the source CRS of a - * CoordinateOperation. +/** \brief Return the base CRS of a BoundCRS or a DerivedCRS/ProjectedCRS, or + * the source CRS of a CoordinateOperation. * * The returned object must be unreferenced with proj_obj_unref() after * use. @@ -1372,6 +1374,10 @@ PJ_OBJ *proj_obj_get_source_crs(PJ_OBJ *obj) { if (boundCRS) { return PJ_OBJ::create(obj->ctx, boundCRS->baseCRS()); } + auto derivedCRS = dynamic_cast(ptr); + if (derivedCRS) { + return PJ_OBJ::create(obj->ctx, derivedCRS->baseCRS()); + } auto co = dynamic_cast(ptr); if (co) { auto sourceCRS = co->sourceCRS(); @@ -4071,3 +4077,140 @@ double proj_coordoperation_get_accuracy(PJ_OBJ *coordoperation) { } return -1; } + +// --------------------------------------------------------------------------- + +/** \brief Returns the coordinate system of a SingleCRS. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param crs Objet of type SingleCRS (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error. + */ +PJ_OBJ *proj_obj_crs_get_coordinate_system(PJ_OBJ *crs) { + assert(crs); + auto l_crs = dynamic_cast(crs->obj.get()); + if (!l_crs) { + proj_log_error(crs->ctx, __FUNCTION__, "Object is not a SingleCRS"); + return nullptr; + } + return PJ_OBJ::create(crs->ctx, l_crs->coordinateSystem()); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the type of the coordinate system. + * + * @param cs Objet of type CoordinateSystem (must not be NULL) + * @return type, or NULL in case of error. + */ +const char *proj_obj_cs_get_type(PJ_OBJ *cs) { + assert(cs); + auto l_cs = dynamic_cast(cs->obj.get()); + if (!l_cs) { + proj_log_error(cs->ctx, __FUNCTION__, + "Object is not a CoordinateSystem"); + return nullptr; + } + if (dynamic_cast(l_cs)) { + return "Cartesian"; + } + if (dynamic_cast(l_cs)) { + return "Ellipsoidal"; + } + if (dynamic_cast(l_cs)) { + return "Vertical"; + } + if (dynamic_cast(l_cs)) { + return "Spherical"; + } + if (dynamic_cast(l_cs)) { + return "Ordinal"; + } + if (dynamic_cast(l_cs)) { + return "Parametric"; + } + if (dynamic_cast(l_cs)) { + return "DateTimeTemporal"; + } + if (dynamic_cast(l_cs)) { + return "TemporalCount"; + } + if (dynamic_cast(l_cs)) { + return "TemporalMeasure"; + } + return "unknown"; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the number of axis of the coordinate system. + * + * @param cs Objet of type CoordinateSystem (must not be NULL) + * @return number of axis, or -1 in case of error. + */ +int proj_obj_cs_get_axis_count(PJ_OBJ *cs) { + assert(cs); + auto l_cs = dynamic_cast(cs->obj.get()); + if (!l_cs) { + proj_log_error(cs->ctx, __FUNCTION__, + "Object is not a CoordinateSystem"); + return -1; + } + return static_cast(l_cs->axisList().size()); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns information on an axis + * + * @param cs Objet of type CoordinateSystem (must not be NULL) + * @param index Index of the coordinate system (between 0 and + * proj_obj_cs_get_axis_count() - 1) + * @param pName Pointer to a string value to store the axis name. or NULL + * @param pAbbrev Pointer to a string value to store the axis abbreviation. or + * NULL + * @param pDirection Pointer to a string value to store the axis direction. or + * NULL + * @param pUnitConvFactor Pointer to a double value to store the axis + * unit conversion factor. or NULL + * @param pUnitName Pointer to a string value to store the axis + * unit name. or NULL + * @return TRUE in case of success + */ +int proj_obj_cs_get_axis_info(PJ_OBJ *cs, int index, const char **pName, + const char **pAbbrev, const char **pDirection, + double *pUnitConvFactor, const char **pUnitName) { + assert(cs); + auto l_cs = dynamic_cast(cs->obj.get()); + if (!l_cs) { + proj_log_error(cs->ctx, __FUNCTION__, + "Object is not a CoordinateSystem"); + return false; + } + const auto &axisList = l_cs->axisList(); + if (index < 0 || static_cast(index) >= axisList.size()) { + proj_log_error(cs->ctx, __FUNCTION__, "Invalid index"); + return false; + } + const auto &axis = axisList[index]; + if (pName) { + *pName = axis->nameStr().c_str(); + } + if (pAbbrev) { + *pAbbrev = axis->abbreviation().c_str(); + } + if (pDirection) { + *pDirection = axis->direction().toString().c_str(); + } + if (pUnitConvFactor) { + *pUnitConvFactor = axis->unit().conversionToSI(); + } + if (pUnitName) { + *pUnitName = axis->unit().name().c_str(); + } + return true; +} diff --git a/src/coordinateoperation.cpp b/src/coordinateoperation.cpp index e0e02931..893b52d3 100644 --- a/src/coordinateoperation.cpp +++ b/src/coordinateoperation.cpp @@ -5471,6 +5471,12 @@ Transformation::~Transformation() = default; // --------------------------------------------------------------------------- +Transformation::Transformation(const Transformation &other) + : CoordinateOperation(other), SingleOperation(other), + d(internal::make_unique(*other.d)) {} + +// --------------------------------------------------------------------------- + /** \brief Return the source crs::CRS of the transformation. * * @return the source CRS. @@ -5491,6 +5497,17 @@ const crs::CRSNNPtr &Transformation::targetCRS() PROJ_CONST_DEFN { // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +TransformationNNPtr Transformation::shallowClone() const { + auto conv = Transformation::nn_make_shared(*this); + conv->assignSelf(conv); + conv->setCRSs(this, false); + return conv; +} +//! @endcond + +// --------------------------------------------------------------------------- + //! @cond Doxygen_Suppress /** \brief Return the TOWGS84 parameters of the transformation. * @@ -7595,6 +7612,8 @@ void Transformation::_exportToPROJString( "Transformation cannot be exported as a PROJ.4 string"); } + formatter->setCoordinateOperationOptimizations(true); + bool positionVectorConvention = true; bool sevenParamsTransform = false; bool threeParamsTransform = false; @@ -10156,6 +10175,72 @@ void CoordinateOperationFactory::Private::createOperationsWithDatumPivot( const auto candidatesDstGeod( findCandidateGeodCRSForDatum(authFactory, geodDst->datum())); + auto createTransformations = [&](const crs::CRSNNPtr &candidateSrcGeod, + const crs::CRSNNPtr &candidateDstGeod, + const CoordinateOperationNNPtr &opFirst, + bool isNullFirst) { + const auto opsSecond = + createOperations(candidateSrcGeod, candidateDstGeod, context); + const auto opsThird = + createOperations(candidateDstGeod, targetCRS, context); + assert(!opsThird.empty()); + + for (auto &opSecond : opsSecond) { + // Check that it is not a transformation synthetized by + // ourselves + if (!hasIdentifiers(opSecond)) { + continue; + } + // And even if it is a referenced transformation, check that + // it is not a trivial one + auto so = dynamic_cast(opSecond.get()); + if (so && isAxisOrderReversal(so->method()->getEPSGCode())) { + continue; + } + + std::vector subOps; + if (isNullFirst) { + opSecond->setCRSs( + sourceCRS, NN_CHECK_ASSERT(opSecond->targetCRS()), nullptr); + } else { + subOps.emplace_back(opFirst); + } + if (isNullTransformation(opsThird[0]->nameStr())) { + opSecond->setCRSs(NN_CHECK_ASSERT(opSecond->sourceCRS()), + targetCRS, nullptr); + subOps.emplace_back(opSecond); + } else { + subOps.emplace_back(opSecond); + subOps.emplace_back(opsThird[0]); + } + res.emplace_back(ConcatenatedOperation::createComputeMetadata( + subOps, !allowEmptyIntersection)); + } + }; + + // Start in priority with candidates that have exactly the same name as + // the sourcCRS and targetCRS. Typically for the case of init=IGNF:XXXX + for (const auto &candidateSrcGeod : candidatesSrcGeod) { + if (candidateSrcGeod->nameStr() == sourceCRS->nameStr()) { + for (const auto &candidateDstGeod : candidatesDstGeod) { + if (candidateDstGeod->nameStr() == targetCRS->nameStr()) { + const auto opsFirst = + createOperations(sourceCRS, candidateSrcGeod, context); + assert(!opsFirst.empty()); + const bool isNullFirst = + isNullTransformation(opsFirst[0]->nameStr()); + createTransformations(candidateSrcGeod, candidateDstGeod, + opsFirst[0], isNullFirst); + if (!res.empty()) { + return; + } + break; + } + } + break; + } + } + for (const auto &candidateSrcGeod : candidatesSrcGeod) { const auto opsFirst = createOperations(sourceCRS, candidateSrcGeod, context); @@ -10163,44 +10248,8 @@ void CoordinateOperationFactory::Private::createOperationsWithDatumPivot( const bool isNullFirst = isNullTransformation(opsFirst[0]->nameStr()); for (const auto &candidateDstGeod : candidatesDstGeod) { - const auto opsSecond = - createOperations(candidateSrcGeod, candidateDstGeod, context); - const auto opsThird = - createOperations(candidateDstGeod, targetCRS, context); - assert(!opsThird.empty()); - - for (auto &opSecond : opsSecond) { - // Check that it is not a transformation synthetized by - // ourselves - if (!hasIdentifiers(opSecond)) { - continue; - } - // And even if it is a referenced transformation, check that - // it is not a trivial one - auto so = dynamic_cast(opSecond.get()); - if (so && isAxisOrderReversal(so->method()->getEPSGCode())) { - continue; - } - - std::vector subOps; - if (isNullFirst) { - opSecond->setCRSs(sourceCRS, - NN_CHECK_ASSERT(opSecond->targetCRS()), - nullptr); - } else { - subOps.emplace_back(opsFirst[0]); - } - if (isNullTransformation(opsThird[0]->nameStr())) { - opSecond->setCRSs(NN_CHECK_ASSERT(opSecond->sourceCRS()), - targetCRS, nullptr); - subOps.emplace_back(opSecond); - } else { - subOps.emplace_back(opSecond); - subOps.emplace_back(opsThird[0]); - } - res.emplace_back(ConcatenatedOperation::createComputeMetadata( - subOps, !allowEmptyIntersection)); - } + createTransformations(candidateSrcGeod, candidateDstGeod, + opsFirst[0], isNullFirst); } if (!res.empty()) { return; @@ -10261,6 +10310,56 @@ CoordinateOperationFactory::Private::createOperations( std::vector res; const bool allowEmptyIntersection = true; + const auto &sourceProj4Ext = sourceCRS->getExtensionProj4(); + const auto &targetProj4Ext = targetCRS->getExtensionProj4(); + if (!sourceProj4Ext.empty() || !targetProj4Ext.empty()) { + + auto sourceProjExportable = + dynamic_cast(sourceCRS.get()); + auto targetProjExportable = + dynamic_cast(targetCRS.get()); + if (!sourceProjExportable) { + throw InvalidOperation("Source CRS is not PROJ exportable"); + } + if (!targetProjExportable) { + throw InvalidOperation("Target CRS is not PROJ exportable"); + } + auto projFormatter = io::PROJStringFormatter::create( + io::PROJStringFormatter::Convention::PROJ_4); + projFormatter->startInversion(); + sourceProjExportable->_exportToPROJString(projFormatter.get()); + + auto geogSrc = + dynamic_cast(sourceCRS.get()); + if (geogSrc) { + auto proj5Formatter = io::PROJStringFormatter::create( + io::PROJStringFormatter::Convention::PROJ_5); + geogSrc->addAngularUnitConvertAndAxisSwap(proj5Formatter.get()); + projFormatter->ingestPROJString(proj5Formatter->toString()); + } + + projFormatter->stopInversion(); + + targetProjExportable->_exportToPROJString(projFormatter.get()); + + auto geogDst = + dynamic_cast(targetCRS.get()); + if (geogDst) { + auto proj5Formatter = io::PROJStringFormatter::create( + io::PROJStringFormatter::Convention::PROJ_5); + geogDst->addAngularUnitConvertAndAxisSwap(proj5Formatter.get()); + projFormatter->ingestPROJString(proj5Formatter->toString()); + } + + const auto PROJString = projFormatter->toString(); + auto properties = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + buildTransfName(sourceCRS->nameStr(), targetCRS->nameStr())); + res.emplace_back(SingleOperation::createPROJBased( + properties, PROJString, sourceCRS, targetCRS, {})); + return res; + } + auto geodSrc = dynamic_cast(sourceCRS.get()); auto geodDst = dynamic_cast(targetCRS.get()); @@ -10317,7 +10416,9 @@ CoordinateOperationFactory::Private::createOperations( const auto &dstDatum = geodDst->datum(); const bool dstHasDatumWithId = dstDatum && !dstDatum->identifiers().empty(); - if (srcHasDatumWithId && dstHasDatumWithId) { + if (srcHasDatumWithId && dstHasDatumWithId && + !srcDatum->_isEquivalentTo( + dstDatum.get(), util::IComparable::Criterion::EQUIVALENT)) { createOperationsWithDatumPivot(res, sourceCRS, targetCRS, geodSrc, geodDst, context); doFilterAndCheckPerfectOp = !res.empty(); @@ -10443,11 +10544,10 @@ CoordinateOperationFactory::Private::createOperations( dynamic_cast(hubSrc.get()); auto geogCRSOfBaseOfBoundSrc = boundSrc->baseCRS()->extractGeographicCRS(); - if (hubSrcGeog && + if (hubSrcGeog && geogCRSOfBaseOfBoundSrc && (hubSrcGeog->_isEquivalentTo( geogDst, util::IComparable::Criterion::EQUIVALENT) || - hubSrcGeog->is2DPartOf3D(NN_NO_CHECK(geogDst))) && - geogCRSOfBaseOfBoundSrc) { + hubSrcGeog->is2DPartOf3D(NN_NO_CHECK(geogDst)))) { if (boundSrc->baseCRS() == geogCRSOfBaseOfBoundSrc) { // Optimization to avoid creating a useless concatenated // operation @@ -10471,6 +10571,86 @@ CoordinateOperationFactory::Private::createOperations( return res; } } + // If the datum are equivalent, this is also fine + } else if (geogCRSOfBaseOfBoundSrc && hubSrcGeog->datum() && + geogDst->datum() && + hubSrcGeog->datum()->_isEquivalentTo( + geogDst->datum().get(), + util::IComparable::Criterion::EQUIVALENT)) { + auto opsFirst = + createOperations(boundSrc->baseCRS(), + NN_NO_CHECK(geogCRSOfBaseOfBoundSrc), context); + auto opsLast = createOperations(hubSrc, targetCRS, context); + if (!opsFirst.empty() && !opsLast.empty()) { + for (const auto &opFirst : opsFirst) { + for (const auto &opLast : opsLast) { + try { + res.emplace_back( + ConcatenatedOperation::createComputeMetadata( + {opFirst, boundSrc->transformation(), + opLast}, + !allowEmptyIntersection)); + } catch (const InvalidOperationEmptyIntersection &) { + } + } + } + if (!res.empty()) { + return res; + } + } + // Consider WGS 84 and NAD83 as equivalent in that context if the + // geogCRSOfBaseOfBoundSrc ellipsoid is Clarke66 (for NAD27) + // Case of "+proj=latlong +ellps=clrk66 + // +nadgrids=ntv1_can.dat,conus" + // to "+proj=latlong +datum=NAD83" + } else if (geogCRSOfBaseOfBoundSrc && hubSrcGeog->datum() && + geogDst->datum() && + geogCRSOfBaseOfBoundSrc->ellipsoid()->_isEquivalentTo( + datum::Ellipsoid::CLARKE_1866.get(), + util::IComparable::Criterion::EQUIVALENT) && + hubSrcGeog->datum()->_isEquivalentTo( + datum::GeodeticReferenceFrame::EPSG_6326.get(), + util::IComparable::Criterion::EQUIVALENT) && + geogDst->datum()->_isEquivalentTo( + datum::GeodeticReferenceFrame::EPSG_6269.get(), + util::IComparable::Criterion::EQUIVALENT)) { + auto nnGeogCRSOfBaseOfBoundSrc = + NN_NO_CHECK(geogCRSOfBaseOfBoundSrc); + if (boundSrc->baseCRS()->_isEquivalentTo( + nnGeogCRSOfBaseOfBoundSrc.get(), + util::IComparable::Criterion::EQUIVALENT)) { + auto transf = boundSrc->transformation()->shallowClone(); + transf->setProperties(util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + buildTransfName(boundSrc->baseCRS()->nameStr(), + targetCRS->nameStr()))); + transf->setCRSs(boundSrc->baseCRS(), targetCRS, nullptr); + res.emplace_back(transf); + return res; + } else { + auto opsFirst = createOperations( + boundSrc->baseCRS(), nnGeogCRSOfBaseOfBoundSrc, context); + auto transf = boundSrc->transformation()->shallowClone(); + transf->setProperties(util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + buildTransfName(nnGeogCRSOfBaseOfBoundSrc->nameStr(), + targetCRS->nameStr()))); + transf->setCRSs(nnGeogCRSOfBaseOfBoundSrc, targetCRS, nullptr); + if (!opsFirst.empty()) { + for (const auto &opFirst : opsFirst) { + try { + res.emplace_back( + ConcatenatedOperation::createComputeMetadata( + {opFirst, transf}, + !allowEmptyIntersection)); + } catch (const InvalidOperationEmptyIntersection &) { + } + } + if (!res.empty()) { + return res; + } + } + } } if (hubSrcGeog && diff --git a/src/crs.cpp b/src/crs.cpp index a204a037..eec7a926 100644 --- a/src/crs.cpp +++ b/src/crs.cpp @@ -170,6 +170,14 @@ const GeodeticCRS *CRS::extractGeodeticCRSRaw() const { // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +const std::string &CRS::getExtensionProj4() const noexcept { + return d->extensionProj4_; +} +//! @endcond + +// --------------------------------------------------------------------------- + /** \brief Return the GeographicCRS of the CRS. * * Returns the GeographicCRS contained in a CRS. This works currently with diff --git a/src/cs2cs.cpp b/src/cs2cs.cpp index 6f302ae3..6f4c4a55 100644 --- a/src/cs2cs.cpp +++ b/src/cs2cs.cpp @@ -26,6 +26,8 @@ * DEALINGS IN THE SOFTWARE. *****************************************************************************/ +#define FROM_PROJ_CPP + #include #include #include @@ -33,6 +35,11 @@ #include #include +#include +#include + +#include + // PROJ include order is sensitive // clang-format off #include "proj.h" @@ -41,9 +48,15 @@ // clang-format on #define MAX_LINE 1000 -#define MAX_PARGS 100 -static projPJ fromProj, toProj; +static PJ *transformation = nullptr; + +static bool srcIsGeog = false; +static double srcToRadians = 0.0; + +static bool destIsGeog = false; +static double destToRadians = 0.0; +static bool destIsLatLong = false; static int reversein = 0, /* != 0 reverse input arguments */ reverseout = 0, /* != 0 reverse output arguments */ @@ -116,19 +129,45 @@ static void process(FILE *fid) } if (data.u != HUGE_VAL) { - if (pj_transform(fromProj, toProj, 1, 0, &(data.u), &(data.v), - &z) != 0) { - data.u = HUGE_VAL; - data.v = HUGE_VAL; - emess(-3, "pj_transform(): %s", pj_strerrno(pj_errno)); + + if (srcIsGeog) { + /* dmstor gives values to radians. Convert now to the SRS unit + */ + data.u /= srcToRadians; + data.v /= srcToRadians; } + + PJ_COORD coord; + coord.xyzt.x = data.u; + coord.xyzt.y = data.v; + coord.xyzt.z = z; + coord.xyzt.t = HUGE_VAL; + coord = proj_trans(transformation, PJ_FWD, coord); + data.u = coord.xyz.x; + data.v = coord.xyz.y; + z = coord.xyz.z; } if (data.u == HUGE_VAL) /* error output */ fputs(oterr, stdout); - else if (pj_is_latlong(toProj) && !oform) { /*ascii DMS output */ - if (reverseout) { + else if (destIsGeog && !oform) { /*ascii DMS output */ + + // rtodms() expect radians: convert from the output SRS unit + data.u *= destToRadians; + data.v *= destToRadians; + + if (destIsLatLong) { + if (reverseout) { + fputs(rtodms(pline, data.v, 'E', 'W'), stdout); + putchar('\t'); + fputs(rtodms(pline, data.u, 'N', 'S'), stdout); + } else { + fputs(rtodms(pline, data.u, 'N', 'S'), stdout); + putchar('\t'); + fputs(rtodms(pline, data.v, 'E', 'W'), stdout); + } + } else if (reverseout) { fputs(rtodms(pline, data.v, 'N', 'S'), stdout); putchar('\t'); fputs(rtodms(pline, data.u, 'E', 'W'), stdout); @@ -139,9 +178,9 @@ static void process(FILE *fid) } } else { /* x-y or decimal degree ascii output */ - if (proj_angular_output(toProj, PJ_FWD)) { - data.v *= RAD_TO_DEG; - data.u *= RAD_TO_DEG; + if (destIsGeog) { + data.v *= destToRadians * RAD_TO_DEG; + data.u *= destToRadians * RAD_TO_DEG; } if (reverseout) { printf(oform, data.v); @@ -166,6 +205,105 @@ static void process(FILE *fid) } } +/************************************************************************/ +/* instanciate_crs() */ +/************************************************************************/ + +static PJ_OBJ *instanciate_crs(const std::string &definition, + const char *const *optionsImportCRS, + bool &isGeog, double &toRadians, + bool &isLatFirst) { + PJ_OBJ *crs = proj_obj_create_from_user_input(nullptr, definition.c_str(), + optionsImportCRS); + if (!crs) { + return nullptr; + } + + isGeog = false; + toRadians = 0.0; + isLatFirst = false; + + auto type = proj_obj_get_type(crs); + if (type == PJ_OBJ_TYPE_BOUND_CRS) { + auto base = proj_obj_get_source_crs(crs); + proj_obj_unref(crs); + crs = base; + type = proj_obj_get_type(crs); + } + if (type == PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS || + type == PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS) { + auto cs = proj_obj_crs_get_coordinate_system(crs); + assert(cs); + + isGeog = true; + const char *axisName = ""; + proj_obj_cs_get_axis_info(cs, 0, + &axisName, // name, + nullptr, // abbrev + nullptr, // direction + &toRadians, + nullptr // unit name + ); + isLatFirst = + NS_PROJ::internal::ci_find(std::string(axisName), "latitude") != + std::string::npos; + + proj_obj_unref(cs); + } + + return crs; +} + +/************************************************************************/ +/* get_geog_crs_proj_string_from_proj_crs() */ +/************************************************************************/ + +static std::string get_geog_crs_proj_string_from_proj_crs(PJ_OBJ *src, + double &toRadians, + bool &isLatFirst) { + auto srcType = proj_obj_get_type(src); + if (srcType == PJ_OBJ_TYPE_BOUND_CRS) { + auto base = proj_obj_get_source_crs(src); + assert(base); + proj_obj_unref(src); + src = base; + srcType = proj_obj_get_type(src); + } + if (srcType != PJ_OBJ_TYPE_PROJECTED_CRS) { + return std::string(); + } + + auto base = proj_obj_get_source_crs(src); + assert(base); + auto baseType = proj_obj_get_type(base); + if (baseType != PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS && + baseType != PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS) { + proj_obj_unref(base); + return std::string(); + } + + auto cs = proj_obj_crs_get_coordinate_system(base); + assert(cs); + + const char *axisName = ""; + proj_obj_cs_get_axis_info(cs, 0, + &axisName, // name, + nullptr, // abbrev + nullptr, // direction + &toRadians, + nullptr // unit name + ); + isLatFirst = NS_PROJ::internal::ci_find(std::string(axisName), + "latitude") != std::string::npos; + + proj_obj_unref(cs); + + auto retCStr = proj_obj_as_proj_string(base, PJ_PROJ_5, nullptr); + std::string ret(retCStr ? retCStr : ""); + proj_obj_unref(base); + return ret; +} + /************************************************************************/ /* main() */ /************************************************************************/ @@ -173,11 +311,11 @@ static void process(FILE *fid) int main(int argc, char **argv) { char *arg; char **eargv = argv; - char *from_argv[MAX_PARGS]; - char *to_argv[MAX_PARGS]; + std::string fromStr; + std::string toStr; FILE *fid; - int from_argc = 0, to_argc = 0, eargc = 0, mon = 0; - int have_to_flag = 0, inverse = 0, i; + int eargc = 0, mon = 0; + int have_to_flag = 0, inverse = 0; int use_env_locale = 0; /* This is just to check that pj_init() is locale-safe */ @@ -185,6 +323,11 @@ int main(int argc, char **argv) { if (getenv("PROJ_USE_ENV_LOCALE") != nullptr) use_env_locale = 1; + /* Enable compatibility mode for init=epsg:XXXX by default */ + if (getenv("PROJ_USE_PROJ4_INIT_RULES") == nullptr) { + proj_context_use_proj4_init_rules(nullptr, true); + } + if ((emess_dat.Prog_name = strrchr(*argv, DIR_CHAR)) != nullptr) ++emess_dat.Prog_name; else @@ -194,9 +337,27 @@ int main(int argc, char **argv) { (void)fprintf(stderr, usage, pj_get_release(), emess_dat.Prog_name); exit(0); } + + // First pass to check if we have "cs2cs [-bla]* " syntax + int countNonOptionArg = 0; + for (int i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + if (argv[i][1] == '\0') { + countNonOptionArg++; + } + } else { + if (strcmp(argv[i], "+to") == 0) { + countNonOptionArg = -1; + break; + } + countNonOptionArg++; + } + } + const bool isSrcDestSyntax = (countNonOptionArg == 2); + /* process run line arguments */ while (--argc > 0) { /* collect run line arguments */ - if (**++argv == '-') + if (**++argv == '-') { for (arg = *argv;;) { switch (*++arg) { case '\0': /* position of "stdin" */ @@ -325,21 +486,28 @@ int main(int argc, char **argv) { } break; } - else if (strcmp(*argv, "+to") == 0) { + } else if (isSrcDestSyntax) { + if (fromStr.empty()) + fromStr = *argv; + else + toStr = *argv; + } else if (strcmp(*argv, "+to") == 0) { have_to_flag = 1; } else if (**argv == '+') { /* + argument */ if (have_to_flag) { - if (to_argc < MAX_PARGS) - to_argv[to_argc++] = *argv + 1; - else - emess(1, "overflowed + argument table"); + if (!toStr.empty()) + toStr += ' '; + toStr += *argv; } else { - if (from_argc < MAX_PARGS) - from_argv[from_argc++] = *argv + 1; - else - emess(1, "overflowed + argument table"); + if (!fromStr.empty()) + fromStr += ' '; + fromStr += *argv; } + } else if (!have_to_flag) { + fromStr = *argv; + } else if (toStr.empty()) { + toStr = *argv; } else /* assumed to be input file name(s) */ eargv[eargc++] = *argv; } @@ -351,17 +519,7 @@ int main(int argc, char **argv) { * coordinate systems. */ if (inverse) { - int argcount; - - for (i = 0; i < MAX_PARGS; i++) { - arg = from_argv[i]; - from_argv[i] = to_argv[i]; - to_argv[i] = arg; - } - - argcount = from_argc; - from_argc = to_argc; - to_argc = argcount; + std::swap(fromStr, toStr); } if (use_env_locale) { @@ -369,48 +527,64 @@ int main(int argc, char **argv) { setlocale(LC_ALL, ""); } - if (from_argc == 0 && to_argc != 0) { - /* we will generate the from proj as the latlong of the +to in a bit */ - } else if (!(fromProj = pj_init(from_argc, from_argv))) { - printf("Using from definition: "); - for (i = 0; i < from_argc; i++) - printf("%s ", from_argv[i]); - printf("\n"); - - emess(3, "projection initialization failure\ncause: %s", - pj_strerrno(pj_errno)); + if (fromStr.empty() && toStr.empty()) { + emess(3, "missing source and target coordinate systems"); } - if (to_argc == 0) { - if (!(toProj = pj_latlong_from_proj(fromProj))) { - printf("Using to definition: "); - for (i = 0; i < to_argc; i++) - printf("%s ", to_argv[i]); - printf("\n"); + const char *const optionsProj4Mode[] = {"USE_PROJ4_INIT_RULES=YES", + nullptr}; + const char *const *optionsImportCRS = + proj_context_get_use_proj4_init_rules(nullptr) ? optionsProj4Mode + : nullptr; + + PJ_OBJ *src = nullptr; + if (!fromStr.empty()) { + bool ignored; + src = instanciate_crs(fromStr, optionsImportCRS, srcIsGeog, + srcToRadians, ignored); + if (!src) { + emess(3, "cannot instanciate source coordinate system"); + } + } - emess(3, "projection initialization failure\ncause: %s", - pj_strerrno(pj_errno)); + PJ_OBJ *dst = nullptr; + if (!toStr.empty()) { + dst = instanciate_crs(toStr, optionsImportCRS, destIsGeog, + destToRadians, destIsLatLong); + if (!dst) { + emess(3, "cannot instanciate target coordinate system"); } - } else if (!(toProj = pj_init(to_argc, to_argv))) { - printf("Using to definition: "); - for (i = 0; i < to_argc; i++) - printf("%s ", to_argv[i]); - printf("\n"); + } - emess(3, "projection initialization failure\ncause: %s", - pj_strerrno(pj_errno)); + if (toStr.empty()) { + assert(src); + toStr = get_geog_crs_proj_string_from_proj_crs(src, destToRadians, + destIsLatLong); + if (toStr.empty()) { + emess(3, + "missing target CRS and source CRS is not a projected CRS"); + } + destIsGeog = true; + } else if (fromStr.empty()) { + assert(dst); + bool ignored; + fromStr = + get_geog_crs_proj_string_from_proj_crs(dst, srcToRadians, ignored); + if (fromStr.empty()) { + emess(3, + "missing source CRS and target CRS is not a projected CRS"); + } + srcIsGeog = true; } - if (from_argc == 0 && toProj != nullptr) { - if (!(fromProj = pj_latlong_from_proj(toProj))) { - printf("Using to definition: "); - for (i = 0; i < to_argc; i++) - printf("%s ", to_argv[i]); - printf("\n"); + proj_obj_unref(src); + proj_obj_unref(dst); - emess(3, "projection initialization failure\ncause: %s", - pj_strerrno(pj_errno)); - } + transformation = proj_create_crs_to_crs(nullptr, fromStr.c_str(), + toStr.c_str(), nullptr); + if (!transformation) { + emess(3, "cannot initialize transformation\ncause: %s", + pj_strerrno(pj_errno)); } if (use_env_locale) { @@ -420,19 +594,19 @@ int main(int argc, char **argv) { if (mon) { printf("%c ---- From Coordinate System ----\n", tag); - pj_pr_list(fromProj); + printf("%s\n", fromStr.c_str()); printf("%c ---- To Coordinate System ----\n", tag); - pj_pr_list(toProj); + printf("%s\n", toStr.c_str()); } /* set input formatting control */ - if (!fromProj->is_latlong) + if (!srcIsGeog) informat = strtod; else { informat = dmstor; } - if (!toProj->is_latlong && !oform) + if (!destIsGeog && !oform) oform = "%.2f"; /* process input file list */ @@ -454,8 +628,7 @@ int main(int argc, char **argv) { emess_dat.File_name = nullptr; } - pj_free(fromProj); - pj_free(toProj); + proj_destroy(transformation); pj_deallocate_grids(); diff --git a/src/io.cpp b/src/io.cpp index 0d220e13..15df312b 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -4422,6 +4422,7 @@ struct PROJStringFormatter::Private { bool useETMercForTMerc_ = false; bool useETMercForTMercSet_ = false; bool addNoDefs_ = true; + bool coordOperationOptimizations_ = false; std::string result_{}; @@ -4504,6 +4505,12 @@ const std::string &PROJStringFormatter::toString() const { step.paramValues[6].equals("s", "0") && step.paramValues[7].keyEquals("convention")))) { iter = d->steps_.erase(iter); + } else if (d->coordOperationOptimizations_ && + step.name == "unitconvert" && paramCount == 2 && + step.paramValues[0].keyEquals("xy_in") && + step.paramValues[1].keyEquals("xy_out") && + step.paramValues[0].value == step.paramValues[1].value) { + iter = d->steps_.erase(iter); } else { ++iter; } @@ -4925,6 +4932,12 @@ bool PROJStringFormatter::getUseETMercForTMerc(bool &settingSetOut) const { // --------------------------------------------------------------------------- +void PROJStringFormatter::setCoordinateOperationOptimizations(bool enable) { + d->coordOperationOptimizations_ = enable; +} + +// --------------------------------------------------------------------------- + void PROJStringFormatter::Private::appendToResult(const char *str) { if (!result_.empty()) { result_ += " "; @@ -4984,11 +4997,13 @@ PROJStringSyntaxParser(const std::string &projString, std::vector &steps, } prevWasStep = false; } else if (starts_with(word, "proj=")) { + auto stepName = word.substr(strlen("proj=")); if (prevWasInit) { - throw ParsingException("+init= found at unexpected place"); + steps.back() = Step(); + prevWasInit = false; + } else { + steps.push_back(Step()); } - auto stepName = word.substr(strlen("proj=")); - steps.push_back(Step()); steps.back().name = stepName; steps.back().inverted = inverted; prevWasStep = false; @@ -5041,7 +5056,7 @@ void PROJStringFormatter::ingestPROJString( std::string vto_meter; PROJStringSyntaxParser(str, steps, d->globalParamValues_, title, vunits, vto_meter); - d->steps_.insert(d->steps_.begin(), steps.begin(), steps.end()); + d->steps_.insert(d->steps_.end(), steps.begin(), steps.end()); } // --------------------------------------------------------------------------- @@ -5633,11 +5648,12 @@ PROJStringParser::Private::buildPrimeMeridian(const Step &step) { PrimeMeridianNNPtr pm = PrimeMeridian::GREENWICH; const auto &pmStr = getParamValue(step, "pm"); if (!pmStr.empty()) { - try { - double pmValue = c_locale_stod(pmStr); + char *end; + double pmValue = dmstor(pmStr.c_str(), &end) * RAD_TO_DEG; + if (pmValue != HUGE_VAL && *end == '\0') { pm = PrimeMeridian::create(createMapWithUnknownName(), Angle(pmValue)); - } catch (const std::invalid_argument &) { + } else { bool found = false; if (pmStr == "paris") { found = true; @@ -5650,9 +5666,8 @@ PROJStringParser::Private::buildPrimeMeridian(const Step &step) { found = true; std::string name = static_cast(::toupper(pmStr[0])) + pmStr.substr(1); - double pmValue = - dmstor(proj_prime_meridians[i].defn, nullptr) * - RAD_TO_DEG; + pmValue = dmstor(proj_prime_meridians[i].defn, nullptr) * + RAD_TO_DEG; pm = PrimeMeridian::create( PropertyMap().set(IdentifiedObject::NAME_KEY, name), Angle(pmValue)); @@ -5681,12 +5696,20 @@ PROJStringParser::Private::buildDatum(const Step &step, const auto &ellpsStr = getParamValue(step, "ellps"); const auto &datumStr = getParamValue(step, "datum"); + const auto &RStr = getParamValue(step, "R"); const auto &aStr = getParamValue(step, "a"); const auto &bStr = getParamValue(step, "b"); const auto &rfStr = getParamValue(step, "rf"); const auto &fStr = getParamValue(step, "f"); - const auto &RStr = getParamValue(step, "R"); + const auto &esStr = getParamValue(step, "es"); + const auto &eStr = getParamValue(step, "e"); + double a = -1.0; + double b = -1.0; + double rf = -1.0; const util::optional optionalEmptyString{}; + const bool numericParamPresent = + !RStr.empty() || !aStr.empty() || !bStr.empty() || !rfStr.empty() || + !fStr.empty() || !esStr.empty() || !eStr.empty(); PrimeMeridianNNPtr pm(buildPrimeMeridian(step)); PropertyMap grfMap; @@ -5709,104 +5732,151 @@ PROJStringParser::Private::buildDatum(const Step &step, } }; + // R take precedence + if (!RStr.empty()) { + double R; + try { + R = c_locale_stod(RStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid R value"); + } + auto ellipsoid = Ellipsoid::createSphere(createMapWithUnknownName(), + Length(R), guessBodyName(R)); + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title.c_str()), + ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); + } + if (!datumStr.empty()) { - if (datumStr == "WGS84") { - return overridePmIfNeeded(GeodeticReferenceFrame::EPSG_6326); - } else if (datumStr == "NAD83") { - return overridePmIfNeeded(GeodeticReferenceFrame::EPSG_6269); - } else if (datumStr == "NAD27") { - return overridePmIfNeeded(GeodeticReferenceFrame::EPSG_6267); - } else { + auto l_datum = [&datumStr, &overridePmIfNeeded, &grfMap, + &optionalEmptyString, &pm]() { + if (datumStr == "WGS84") { + return overridePmIfNeeded(GeodeticReferenceFrame::EPSG_6326); + } else if (datumStr == "NAD83") { + return overridePmIfNeeded(GeodeticReferenceFrame::EPSG_6269); + } else if (datumStr == "NAD27") { + return overridePmIfNeeded(GeodeticReferenceFrame::EPSG_6267); + } else { - for (const auto &datumDesc : datumDescs) { - if (datumStr == datumDesc.projName) { - (void)datumDesc.gcsName; // to please cppcheck - (void)datumDesc.gcsCode; // to please cppcheck - auto ellipsoid = Ellipsoid::createFlattenedSphere( - grfMap - .set(IdentifiedObject::NAME_KEY, - datumDesc.ellipsoidName) - .set(Identifier::CODESPACE_KEY, Identifier::EPSG) - .set(Identifier::CODE_KEY, datumDesc.ellipsoidCode), - Length(datumDesc.a), Scale(datumDesc.rf)); - return GeodeticReferenceFrame::create( - grfMap - .set(IdentifiedObject::NAME_KEY, - datumDesc.datumName) - .set(Identifier::CODESPACE_KEY, Identifier::EPSG) - .set(Identifier::CODE_KEY, datumDesc.datumCode), - ellipsoid, optionalEmptyString, pm); + for (const auto &datumDesc : datumDescs) { + if (datumStr == datumDesc.projName) { + (void)datumDesc.gcsName; // to please cppcheck + (void)datumDesc.gcsCode; // to please cppcheck + auto ellipsoid = Ellipsoid::createFlattenedSphere( + grfMap + .set(IdentifiedObject::NAME_KEY, + datumDesc.ellipsoidName) + .set(Identifier::CODESPACE_KEY, + Identifier::EPSG) + .set(Identifier::CODE_KEY, + datumDesc.ellipsoidCode), + Length(datumDesc.a), Scale(datumDesc.rf)); + return GeodeticReferenceFrame::create( + grfMap + .set(IdentifiedObject::NAME_KEY, + datumDesc.datumName) + .set(Identifier::CODESPACE_KEY, + Identifier::EPSG) + .set(Identifier::CODE_KEY, datumDesc.datumCode), + ellipsoid, optionalEmptyString, pm); + } } } + throw ParsingException("unknown datum " + datumStr); + }(); + if (!numericParamPresent) { + return l_datum; } - throw ParsingException("unknown datum " + datumStr); + a = l_datum->ellipsoid()->semiMajorAxis().getSIValue(); + rf = l_datum->ellipsoid()->computedInverseFlattening(); } else if (!ellpsStr.empty()) { - if (ellpsStr == "WGS84") { - return GeodeticReferenceFrame::create( - grfMap.set(IdentifiedObject::NAME_KEY, - title.empty() ? "Unknown based on WGS84 ellipsoid" - : title.c_str()), - Ellipsoid::WGS84, optionalEmptyString, pm); - } else if (ellpsStr == "GRS80") { - return GeodeticReferenceFrame::create( - grfMap.set(IdentifiedObject::NAME_KEY, - title.empty() ? "Unknown based on GRS80 ellipsoid" - : title.c_str()), - Ellipsoid::GRS1980, optionalEmptyString, pm); - } else { - auto proj_ellps = proj_list_ellps(); - for (int i = 0; proj_ellps[i].id != nullptr; i++) { - if (ellpsStr == proj_ellps[i].id) { - assert(strncmp(proj_ellps[i].major, "a=", 2) == 0); - const double a_iter = - c_locale_stod(proj_ellps[i].major + 2); - EllipsoidPtr ellipsoid; - PropertyMap ellpsMap; - if (strncmp(proj_ellps[i].ell, "b=", 2) == 0) { - const double b_iter = - c_locale_stod(proj_ellps[i].ell + 2); - ellipsoid = Ellipsoid::createTwoAxis( - ellpsMap.set(IdentifiedObject::NAME_KEY, - proj_ellps[i].name), - Length(a_iter), Length(b_iter)) - .as_nullable(); - } else { - assert(strncmp(proj_ellps[i].ell, "rf=", 3) == 0); - const double rf_iter = - c_locale_stod(proj_ellps[i].ell + 3); - ellipsoid = Ellipsoid::createFlattenedSphere( - ellpsMap.set(IdentifiedObject::NAME_KEY, - proj_ellps[i].name), - Length(a_iter), Scale(rf_iter)) - .as_nullable(); + auto l_datum = [&ellpsStr, &title, &grfMap, &optionalEmptyString, + &pm]() { + if (ellpsStr == "WGS84") { + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() + ? "Unknown based on WGS84 ellipsoid" + : title.c_str()), + Ellipsoid::WGS84, optionalEmptyString, pm); + } else if (ellpsStr == "GRS80") { + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() + ? "Unknown based on GRS80 ellipsoid" + : title.c_str()), + Ellipsoid::GRS1980, optionalEmptyString, pm); + } else { + auto proj_ellps = proj_list_ellps(); + for (int i = 0; proj_ellps[i].id != nullptr; i++) { + if (ellpsStr == proj_ellps[i].id) { + assert(strncmp(proj_ellps[i].major, "a=", 2) == 0); + const double a_iter = + c_locale_stod(proj_ellps[i].major + 2); + EllipsoidPtr ellipsoid; + PropertyMap ellpsMap; + if (strncmp(proj_ellps[i].ell, "b=", 2) == 0) { + const double b_iter = + c_locale_stod(proj_ellps[i].ell + 2); + ellipsoid = + Ellipsoid::createTwoAxis( + ellpsMap.set(IdentifiedObject::NAME_KEY, + proj_ellps[i].name), + Length(a_iter), Length(b_iter)) + .as_nullable(); + } else { + assert(strncmp(proj_ellps[i].ell, "rf=", 3) == 0); + const double rf_iter = + c_locale_stod(proj_ellps[i].ell + 3); + ellipsoid = + Ellipsoid::createFlattenedSphere( + ellpsMap.set(IdentifiedObject::NAME_KEY, + proj_ellps[i].name), + Length(a_iter), Scale(rf_iter)) + .as_nullable(); + } + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() + ? std::string("Unknown based on ") + + proj_ellps[i].name + + " ellipsoid" + : title), + NN_NO_CHECK(ellipsoid), optionalEmptyString, pm); } - return GeodeticReferenceFrame::create( - grfMap.set(IdentifiedObject::NAME_KEY, - title.empty() - ? std::string("Unknown based on ") + - proj_ellps[i].name + " ellipsoid" - : title), - NN_NO_CHECK(ellipsoid), optionalEmptyString, pm); } + throw ParsingException("unknown ellipsoid " + ellpsStr); } - throw ParsingException("unknown ellipsoid " + ellpsStr); + }(); + if (!numericParamPresent) { + return l_datum; + } + a = l_datum->ellipsoid()->semiMajorAxis().getSIValue(); + if (l_datum->ellipsoid()->semiMinorAxis().has_value()) { + b = l_datum->ellipsoid()->semiMinorAxis()->getSIValue(); + } else { + rf = l_datum->ellipsoid()->computedInverseFlattening(); } } - else if (!aStr.empty() && !bStr.empty()) { - double a; + if (!aStr.empty()) { try { a = c_locale_stod(aStr); } catch (const std::invalid_argument &) { throw ParsingException("Invalid a value"); } - double b; - try { - b = c_locale_stod(bStr); - } catch (const std::invalid_argument &) { - throw ParsingException("Invalid b value"); + } + + if (a > 0 && (b > 0 || !bStr.empty())) { + if (!bStr.empty()) { + try { + b = c_locale_stod(bStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid b value"); + } } auto ellipsoid = Ellipsoid::createTwoAxis(createMapWithUnknownName(), Length(a), @@ -5818,18 +5888,13 @@ PROJStringParser::Private::buildDatum(const Step &step, ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); } - else if (!aStr.empty() && !rfStr.empty()) { - double a; - try { - a = c_locale_stod(aStr); - } catch (const std::invalid_argument &) { - throw ParsingException("Invalid a value"); - } - double rf; - try { - rf = c_locale_stod(rfStr); - } catch (const std::invalid_argument &) { - throw ParsingException("Invalid rf value"); + else if (a > 0 && (rf >= 0 || !rfStr.empty())) { + if (!rfStr.empty()) { + try { + rf = c_locale_stod(rfStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid rf value"); + } } auto ellipsoid = Ellipsoid::createFlattenedSphere( createMapWithUnknownName(), Length(a), Scale(rf), @@ -5841,13 +5906,7 @@ PROJStringParser::Private::buildDatum(const Step &step, ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); } - else if (!aStr.empty() && !fStr.empty()) { - double a; - try { - a = c_locale_stod(aStr); - } catch (const std::invalid_argument &) { - throw ParsingException("Invalid a value"); - } + else if (a > 0 && !fStr.empty()) { double f; try { f = c_locale_stod(fStr); @@ -5864,23 +5923,52 @@ PROJStringParser::Private::buildDatum(const Step &step, ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); } - else if (!RStr.empty()) { - double R; + else if (a > 0 && !eStr.empty()) { + double e; try { - R = c_locale_stod(RStr); + e = c_locale_stod(eStr); } catch (const std::invalid_argument &) { - throw ParsingException("Invalid R value"); + throw ParsingException("Invalid e value"); } - auto ellipsoid = Ellipsoid::createSphere(createMapWithUnknownName(), - Length(R), guessBodyName(R)); + double alpha = asin(e); /* angular eccentricity */ + double f = 1 - cos(alpha); /* = 1 - sqrt (1 - es); */ + auto ellipsoid = Ellipsoid::createFlattenedSphere( + createMapWithUnknownName(), Length(a), + Scale(f != 0.0 ? 1.0 / f : 0.0), guessBodyName(a)) + ->identify(); return GeodeticReferenceFrame::create( grfMap.set(IdentifiedObject::NAME_KEY, title.empty() ? "unknown" : title.c_str()), ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); } - if (!aStr.empty() && bStr.empty() && rfStr.empty()) { - throw ParsingException("a found, but b, f or rf missing"); + else if (a > 0 && !esStr.empty()) { + double es; + try { + es = c_locale_stod(esStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid es value"); + } + double f = 1 - sqrt(1 - es); + auto ellipsoid = Ellipsoid::createFlattenedSphere( + createMapWithUnknownName(), Length(a), + Scale(f != 0.0 ? 1.0 / f : 0.0), guessBodyName(a)) + ->identify(); + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title.c_str()), + ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); + } + + // If only a is specified, create a sphere + if (a > 0 && bStr.empty() && rfStr.empty() && eStr.empty() && + esStr.empty()) { + auto ellipsoid = Ellipsoid::createSphere(createMapWithUnknownName(), + Length(a), guessBodyName(a)); + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title.c_str()), + ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); } if (!bStr.empty() && aStr.empty()) { @@ -5895,6 +5983,14 @@ PROJStringParser::Private::buildDatum(const Step &step, throw ParsingException("f found, but a missing"); } + if (!eStr.empty() && aStr.empty()) { + throw ParsingException("e found, but a missing"); + } + + if (!esStr.empty() && aStr.empty()) { + throw ParsingException("es found, but a missing"); + } + return overridePmIfNeeded(GeodeticReferenceFrame::EPSG_6326); } @@ -6064,6 +6160,22 @@ PROJStringParser::Private::buildEllipsoidalCS(int iStep, int iUnitConvert, // --------------------------------------------------------------------------- +static double getNumericValue(const std::string ¶mValue, + bool *pHasError = nullptr) { + try { + double value = c_locale_stod(paramValue); + if (pHasError) + *pHasError = false; + return value; + } catch (const std::invalid_argument &) { + if (pHasError) + *pHasError = true; + return 0.0; + } +} + +// --------------------------------------------------------------------------- + GeographicCRSNNPtr PROJStringParser::Private::buildGeographicCRS(int iStep, int iUnitConvert, int iAxisSwap, bool ignoreVUnits, @@ -6077,7 +6189,10 @@ PROJStringParser::Private::buildGeographicCRS(int iStep, int iUnitConvert, auto props = PropertyMap().set(IdentifiedObject::NAME_KEY, title.empty() ? "unknown" : title); - if (l_isGeographicStep && hasParamValue(step, "wktext")) { + if (l_isGeographicStep && + (hasParamValue(step, "wktext") || + hasParamValue(step, "lon_wrap") | hasParamValue(step, "geoc") || + getNumericValue(getParamValue(step, "lon_0")) != 0.0)) { props.set("EXTENSION_PROJ4", projString_); } @@ -6214,22 +6329,6 @@ static double getAngularValue(const std::string ¶mValue, // --------------------------------------------------------------------------- -static double getNumericValue(const std::string ¶mValue, - bool *pHasError = nullptr) { - try { - double value = c_locale_stod(paramValue); - if (pHasError) - *pHasError = false; - return value; - } catch (const std::invalid_argument &) { - if (pHasError) - *pHasError = true; - return 0.0; - } -} - -// --------------------------------------------------------------------------- - CRSNNPtr PROJStringParser::Private::buildProjectedCRS( int iStep, GeographicCRSNNPtr geogCRS, int iUnitConvert, int iAxisSwap) { auto &step = steps_[iStep]; @@ -6285,7 +6384,10 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS( mapping = getMapping(PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_Y); } else if (step.name == "omerc") { - if (hasParamValue(step, "no_uoff") || hasParamValue(step, "no_off")) { + if (hasParamValue(step, "no_rot")) { + mapping = nullptr; + } else if (hasParamValue(step, "no_uoff") || + hasParamValue(step, "no_off")) { mapping = getMapping(EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A); } else if (hasParamValue(step, "lat_1") && @@ -6839,6 +6941,21 @@ PROJStringParser::Private::buildMolodenskyTransformation( // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +static const metadata::ExtentPtr nullExtent{}; + +static const metadata::ExtentPtr &getExtent(const crs::CRS *crs) { + const auto &domains = crs->domains(); + if (!domains.empty()) { + return domains[0]->domainOfValidity(); + } + return nullExtent; +} + +//! @endcond + +// --------------------------------------------------------------------------- + /** \brief Instanciate a sub-class of BaseObject from a PROJ string. * @throw ParsingException */ @@ -6909,30 +7026,36 @@ PROJStringParser::createFromPROJString(const std::string &projString) { } auto obj = createFromUserInput(d->steps_[0].name, d->dbContext_, true); - auto geogCRS = dynamic_cast(obj.get()); - if (geogCRS) { - // Override with longitude latitude in radian - return GeographicCRS::create( - PropertyMap().set(IdentifiedObject::NAME_KEY, - geogCRS->nameStr()), - geogCRS->datum(), geogCRS->datumEnsemble(), - EllipsoidalCS::createLongitudeLatitude( - UnitOfMeasure::RADIAN)); - } - auto projCRS = dynamic_cast(obj.get()); - if (projCRS) { - // Override with easting northing orer - auto conv = projCRS->derivingConversionRef(); - if (conv->method()->getEPSGCode() != - EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED) { - return ProjectedCRS::create( - PropertyMap().set(IdentifiedObject::NAME_KEY, - projCRS->nameStr()), - projCRS->baseCRS(), conv, - CartesianCS::createEastingNorthing( - projCRS->coordinateSystem() - ->axisList()[0] - ->unit())); + auto crs = dynamic_cast(obj.get()); + if (crs) { + PropertyMap properties; + properties.set(IdentifiedObject::NAME_KEY, crs->nameStr()); + const auto &extent = getExtent(crs); + if (extent) { + properties.set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + NN_NO_CHECK(extent)); + } + auto geogCRS = dynamic_cast(crs); + if (geogCRS) { + // Override with longitude latitude in radian + return GeographicCRS::create( + properties, geogCRS->datum(), geogCRS->datumEnsemble(), + EllipsoidalCS::createLongitudeLatitude( + UnitOfMeasure::RADIAN)); + } + auto projCRS = dynamic_cast(crs); + if (projCRS) { + // Override with easting northing order + const auto &conv = projCRS->derivingConversionRef(); + if (conv->method()->getEPSGCode() != + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED) { + return ProjectedCRS::create( + properties, projCRS->baseCRS(), conv, + CartesianCS::createEastingNorthing( + projCRS->coordinateSystem() + ->axisList()[0] + ->unit())); + } } } return obj; diff --git a/src/pj_apply_gridshift.c b/src/pj_apply_gridshift.c index 31e0124e..45ce5c8e 100644 --- a/src/pj_apply_gridshift.c +++ b/src/pj_apply_gridshift.c @@ -349,7 +349,7 @@ LP proj_hgrid_apply(PJ *P, LP lp, PJ_DIRECTION direction) { out = nad_cvt(lp, inverse, ct); if (out.lam == HUGE_VAL || out.phi == HUGE_VAL) - pj_ctx_set_errno(P->ctx, PJD_ERR_FAILED_TO_LOAD_GRID); + pj_ctx_set_errno(P->ctx, PJD_ERR_GRID_AREA); return out; diff --git a/src/pj_fwd.c b/src/pj_fwd.c index 1a970374..38443f07 100644 --- a/src/pj_fwd.c +++ b/src/pj_fwd.c @@ -103,7 +103,6 @@ static PJ_COORD fwd_prepare (PJ *P, PJ_COORD coo) { } - static PJ_COORD fwd_finalize (PJ *P, PJ_COORD coo) { switch (OUTPUT_UNITS) { @@ -138,6 +137,14 @@ static PJ_COORD fwd_finalize (PJ *P, PJ_COORD coo) { case PJ_IO_UNITS_ANGULAR: coo.lpz.z = P->vfr_meter * (coo.lpz.z + P->z0); + + if( P->is_long_wrap_set ) { + if( coo.lpz.lam != HUGE_VAL ) { + coo.lpz.lam = P->long_wrap_center + + adjlon(coo.lpz.lam - P->long_wrap_center); + } + } + break; } diff --git a/src/proj.h b/src/proj.h index 4b599eba..31cd730c 100644 --- a/src/proj.h +++ b/src/proj.h @@ -1381,6 +1381,19 @@ PJ_OBJ PROJ_DLL *proj_obj_crs_get_sub_crs(PJ_OBJ *crs, int index); PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_OBJ *crs); +PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordinate_system(PJ_OBJ *crs); + +const char PROJ_DLL *proj_obj_cs_get_type(PJ_OBJ* cs); + +int PROJ_DLL proj_obj_cs_get_axis_count(PJ_OBJ *cs); + +int PROJ_DLL proj_obj_cs_get_axis_info(PJ_OBJ *cs, int index, + const char **pName, + const char **pAbbrev, + const char **pDirection, + double *pUnitConvFactor, + const char **pUnitName); + PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(PJ_OBJ *obj); int PROJ_DLL proj_obj_ellipsoid_get_parameters(PJ_OBJ *ellipsoid, diff --git a/src/proj_4D_api.c b/src/proj_4D_api.c index 72e1a2d6..b7b500a7 100644 --- a/src/proj_4D_api.c +++ b/src/proj_4D_api.c @@ -794,7 +794,12 @@ PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *srid_from, const char return NULL; } - P = proj_create(ctx, proj_string); + if( proj_string[0] == '\0' ) { + /* Null transform ? */ + P = proj_create(ctx, "proj=affine"); + } else { + P = proj_create(ctx, proj_string); + } proj_obj_unref(op); diff --git a/test/gie/more_builtins.gie b/test/gie/more_builtins.gie index 272e503c..00c9d4a0 100644 --- a/test/gie/more_builtins.gie +++ b/test/gie/more_builtins.gie @@ -709,4 +709,14 @@ direction reverse accept 0 0 0 0 expect failure +------------------------------------------------------------------------------- +# Test lon_wrap +operation +proj=longlat +ellps=WGS84 +lon_wrap=180 +------------------------------------------------------------------------------- +direction forward +accept -1 10 0 +expect 359 10 0 + +------------------------------------------------------------------------------- + diff --git a/test/old/proj_outIGNF.dist b/test/old/proj_outIGNF.dist index 45112f60..611144b8 100644 --- a/test/old/proj_outIGNF.dist +++ b/test/old/proj_outIGNF.dist @@ -1,24 +1,24 @@ -+init=./IGNF:NTFG +to +init=./IGNF:RGF93G ++init=IGNF:NTFG +to +init=IGNF:RGF93G 3.300866856 43.4477976569 0.0000 3d18'0.915"E 43d26'52.077"N 0.000 -+init=./IGNF:LAMBE +to +init=./IGNF:LAMB93 - 600000.0000 2600545.4523 0.0000 652760.737 7033791.243 0.000 - 135638.3592 2418760.4094 0.0000 187194.062 6855928.882 0.000 - 998137.3947 2413822.2844 0.0000 1049052.258 6843776.562 0.000 ++init=IGNF:LAMBE +to +init=IGNF:LAMB93 + 600000.0000 2600545.4523 0.0000 652759.036 7033588.609 0.000 + 135638.3592 2418760.4094 0.0000 187444.148 6856142.911 0.000 + 998137.3947 2413822.2844 0.0000 1048843.997 6843923.913 0.000 600000.0000 2200000.0000 0.0000 649398.872 6633524.191 0.000 - 311552.5340 1906457.4840 0.0000 358799.172 6342652.486 0.000 - 960488.4138 1910172.8812 0.0000 1007068.686 6340907.237 0.000 - 600000.0000 1699510.8340 0.0000 645204.279 6133556.746 0.000 -1203792.5981 626873.17210 0.0000 1238875.764 5057405.016 0.000 -+init=./IGNF:LAMBE +to +init=./IGNF:GEOPORTALFXX - 600000.0000 2600545.4523 0.0000 179040.148 5610495.275 0.000 - 135638.3592 2418760.4094 0.0000 -303729.363 5410118.356 0.000 - 998137.3947 2413822.2844 0.0000 592842.792 5410120.554 0.000 + 311552.5340 1906457.4840 0.0000 358593.374 6342647.465 0.000 + 960488.4138 1910172.8812 0.0000 1007324.119 6340956.093 0.000 + 600000.0000 1699510.8340 0.0000 645201.753 6133255.515 0.000 +1203792.5981 626873.17210 0.0000 * * inf ++init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX + 600000.0000 2600545.4523 0.0000 179040.150 5610292.766 0.000 + 135638.3592 2418760.4094 0.0000 -303490.059 5410353.890 0.000 + 998137.3947 2413822.2844 0.0000 592635.926 5410280.335 0.000 600000.0000 2200000.0000 0.0000 179041.670 5209746.080 0.000 - 311552.5340 1906457.4840 0.0000 -96825.465 4909184.136 0.000 - 960488.4138 1910172.8812 0.0000 523880.019 4909191.141 0.000 - 600000.0000 1699510.8340 0.0000 179047.633 4708817.007 0.000 -1203792.5981 626873.17210 0.0000 658287.395 3623739.237 0.000 -+init=./IGNF:RGF93G +to +init=./IGNF:GEOPORTALFXX + 311552.5340 1906457.4840 0.0000 -97021.878 4909167.981 0.000 + 960488.4138 1910172.8812 0.0000 524126.466 4909227.598 0.000 + 600000.0000 1699510.8340 0.0000 179047.637 4708515.623 0.000 +1203792.5981 626873.17210 0.0000 * * inf ++init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX 2d20'11.4239243" 50d23'59.7718445" 0.0 179040.151 5610495.281 0.000 -3d57'49.4051448" 48d35'59.7121716" 0.0 -303729.365 5410118.352 0.000 7d44'12.1439796" 48d35'59.7832558" 0.0 592842.794 5410120.550 0.000 @@ -27,7 +27,7 @@ 6d50'12.2276489" 44d06'00.0517019" 0.0 523880.022 4909191.143 0.000 2d20'11.7754730" 42d18'00.0824436" 0.0 179047.634 4708817.010 0.000 9d32'12.6680218" 41d24'00.3542556" 0.0 730783.054 4608637.873 0.000 -+init=./IGNF:RGF93G +to +init=./IGNF:MILLER ++init=IGNF:RGF93G +to +init=IGNF:MILLER 2d20'11.4239243" 50d23'59.7718445" 0.0 260098.730 6140682.441 0.000 -3d57'49.4051448" 48d35'59.7121716" 0.0 -441239.699 5880610.004 0.000 7d44'12.1439796" 48d35'59.7832558" 0.0 861246.246 5880612.827 0.000 @@ -36,5 +36,5 @@ 6d50'12.2276489" 44d06'00.0517019" 0.0 761061.291 5252498.745 0.000 2d20'11.7754730" 42d18'00.0824436" 0.0 260109.601 5009175.714 0.000 9d32'12.6680218" 41d24'00.3542556" 0.0 1061637.534 4889066.592 0.000 -+init=./IGNF:RGR92 +to +init=./IGNF:REUN47 -3356123.5400 1303218.3090 5247430.6050 3353421.833 1304074.314 5248935.607 ++init=IGNF:RGR92 +to +init=IGNF:REUN47 +3356123.5400 1303218.3090 5247430.6050 3353420.949 1304075.021 5248935.144 diff --git a/test/old/testIGNF b/test/old/testIGNF index f785641e..abbaed94 100755 --- a/test/old/testIGNF +++ b/test/old/testIGNF @@ -41,13 +41,7 @@ echo "============================================" OUT=proj_outIGNF -REMOVE_IGNF=NO -if test ! -f IGNF; then - cp ${PROJ_LIB}/IGNF . - REMOVE_IGNF=YES -fi - -INIT_FILE=./IGNF +INIT_FILE=IGNF RES="-f %.3f" # echo "doing tests into file ${OUT}, please wait" @@ -162,10 +156,6 @@ $EXE +init=${INIT_FILE}:RGR92 +to +init=${INIT_FILE}:REUN47 -E $RES >>${OUT} <> ${OUT} # Our test points are (1) right on mesh corner, (2) outside but within # epsilon (3) inside a bit (4) outside by more than epsilon # -$EXE +proj=latlong +ellps=WGS84 +nadgrids=ntf_r93.gsb \ +$EXE +proj=latlong +ellps=WGS84 +nadgrids=ntf_r93.gsb,null \ +to +proj=latlong +datum=WGS84 \ -E -f "%.12f" >>${OUT} <>${OUT} <> ${OUT} echo "Test the Natural Earth Projection" >> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 \ +$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ +to +proj=natearth +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ -E >>${OUT} <> ${OUT} echo "Test the Natural Earth II Projection" >> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 \ +$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ +to +proj=natearth2 +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ -E >>${OUT} <> ${OUT} echo "Test the Compact Miller projection" >> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 \ +$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ +to +proj=comill +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ -E >>${OUT} <> ${OUT} echo "Check inverse error handling with ob_tran (#225)" >> ${OUT} $EXE +proj=ob_tran \ - +o_proj=moll +a=6378137 +es=0 +o_lon_p=LON_POLE +o_lat_p=LAT_POLE +lon_0=180 \ + +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 \ -E >>${OUT} <> ${OUT} $EXE -I +proj=ob_tran \ - +o_proj=moll +a=6378137 +es=0 +o_lon_p=LON_POLE +o_lat_p=LAT_POLE +lon_0=180 \ + +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 \ -E >>${OUT} <> ${OUT} +echo "Test EPSG:4326 to EPSG:32631" >> ${OUT} +# Input is latitude, longitude order +$EXE EPSG:4326 +to EPSG:32631 -E >> ${OUT} <> ${OUT} +echo "Test EPSG:32631 to EPSG:4326" >> ${OUT} +# Input is latitude, longitude order +$EXE EPSG:32631 EPSG:4326 -E >> ${OUT} <exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + + auto sourceCRS = proj_obj_get_source_crs(crs); + ASSERT_NE(sourceCRS, nullptr); + ObjectKeeper keeper_sourceCRS(sourceCRS); + EXPECT_EQ(std::string(proj_obj_get_name(sourceCRS)), "WGS 84"); +} + +// --------------------------------------------------------------------------- + TEST_F(CApi, proj_obj_get_source_target_crs_conversion_without_crs) { auto obj = proj_obj_create_from_database( m_ctxt, "EPSG", "16031", PJ_OBJ_CATEGORY_COORDINATE_OPERATION, false, @@ -1955,4 +1971,69 @@ TEST_F(CApi, proj_obj_create_projections) { /* END: Generated by scripts/create_c_api_projections.py*/ } +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_cs_get_axis_info) { + { + auto crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "4326", PJ_OBJ_CATEGORY_CRS, false, nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + + auto cs = proj_obj_crs_get_coordinate_system(crs); + ASSERT_NE(cs, nullptr); + ObjectKeeper keeperCs(cs); + + const char *type = proj_obj_cs_get_type(cs); + ASSERT_NE(type, nullptr); + EXPECT_EQ(std::string(type), "Ellipsoidal"); + + EXPECT_EQ(proj_obj_cs_get_axis_count(cs), 2); + + EXPECT_FALSE(proj_obj_cs_get_axis_info(cs, -1, nullptr, nullptr, + nullptr, nullptr, nullptr)); + + EXPECT_FALSE(proj_obj_cs_get_axis_info(cs, 2, nullptr, nullptr, nullptr, + nullptr, nullptr)); + + EXPECT_TRUE(proj_obj_cs_get_axis_info(cs, 0, nullptr, nullptr, nullptr, + nullptr, nullptr)); + + const char *name = nullptr; + const char *abbrev = nullptr; + const char *direction = nullptr; + double unitConvFactor = 0.0; + const char *unitName = nullptr; + + EXPECT_TRUE(proj_obj_cs_get_axis_info(cs, 0, &name, &abbrev, &direction, + &unitConvFactor, &unitName)); + ASSERT_NE(name, nullptr); + ASSERT_NE(abbrev, nullptr); + ASSERT_NE(direction, nullptr); + ASSERT_NE(unitName, nullptr); + EXPECT_EQ(std::string(name), "Geodetic latitude"); + EXPECT_EQ(std::string(abbrev), "Lat"); + EXPECT_EQ(std::string(direction), "north"); + EXPECT_EQ(unitConvFactor, 0.017453292519943295) << unitConvFactor; + EXPECT_EQ(std::string(unitName), "degree"); + } + + // Non CRS object + { + auto obj = proj_obj_create_from_database( + m_ctxt, "EPSG", "1170", PJ_OBJ_CATEGORY_COORDINATE_OPERATION, false, + nullptr); + ASSERT_NE(obj, nullptr); + ObjectKeeper keeper(obj); + EXPECT_EQ(proj_obj_crs_get_coordinate_system(obj), nullptr); + + EXPECT_EQ(proj_obj_cs_get_type(obj), nullptr); + + EXPECT_EQ(proj_obj_cs_get_axis_count(obj), -1); + + EXPECT_FALSE(proj_obj_cs_get_axis_info(obj, 0, nullptr, nullptr, + nullptr, nullptr, nullptr)); + } +} + } // namespace diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 99f58739..a4974234 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -5686,23 +5686,33 @@ TEST(io, projparse_longlat_a_f_non_zero) { PROJStringParser().createFromPROJString("+proj=longlat +a=2 +f=0.5"); auto crs = nn_dynamic_pointer_cast(obj); ASSERT_TRUE(crs != nullptr); - WKTFormatterNNPtr f(WKTFormatter::create()); - f->simulCurNodeHasId(); - crs->exportToWKT(f.get()); - auto expected = "GEODCRS[\"unknown\",\n" - " DATUM[\"unknown\",\n" - " ELLIPSOID[\"unknown\",2,2,\n" - " LENGTHUNIT[\"metre\",1]]],\n" - " PRIMEM[\"Reference meridian\",0,\n" - " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" - " CS[ellipsoidal,2],\n" - " AXIS[\"longitude\",east,\n" - " ORDER[1],\n" - " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" - " AXIS[\"latitude\",north,\n" - " ORDER[2],\n" - " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; - EXPECT_EQ(f->toString(), expected); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis().getSIValue(), 2); + auto rf = crs->ellipsoid()->computedInverseFlattening(); + EXPECT_EQ(rf, 2) << rf; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_a_e) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +a=2 +e=0.5"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis().getSIValue(), 2); + auto rf = crs->ellipsoid()->computedInverseFlattening(); + EXPECT_NEAR(rf, 7.46410161513775, 1e-14) << rf; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_a_es) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +a=2 +es=0.5"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis().getSIValue(), 2); + auto rf = crs->ellipsoid()->computedInverseFlattening(); + EXPECT_EQ(rf, 3.4142135623730958) << rf; } // --------------------------------------------------------------------------- @@ -5711,23 +5721,31 @@ TEST(io, projparse_longlat_R) { auto obj = PROJStringParser().createFromPROJString("+proj=longlat +R=2"); auto crs = nn_dynamic_pointer_cast(obj); ASSERT_TRUE(crs != nullptr); - WKTFormatterNNPtr f(WKTFormatter::create()); - f->simulCurNodeHasId(); - crs->exportToWKT(f.get()); - auto expected = "GEODCRS[\"unknown\",\n" - " DATUM[\"unknown\",\n" - " ELLIPSOID[\"unknown\",2,0,\n" - " LENGTHUNIT[\"metre\",1]]],\n" - " PRIMEM[\"Reference meridian\",0,\n" - " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" - " CS[ellipsoidal,2],\n" - " AXIS[\"longitude\",east,\n" - " ORDER[1],\n" - " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" - " AXIS[\"latitude\",north,\n" - " ORDER[2],\n" - " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; - EXPECT_EQ(f->toString(), expected); + EXPECT_TRUE(crs->ellipsoid()->isSphere()); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis().getSIValue(), 2); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_a) { + auto obj = PROJStringParser().createFromPROJString("+proj=longlat +a=2"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_TRUE(crs->ellipsoid()->isSphere()); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis().getSIValue(), 2); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_a_override_ellps) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +a=2 +ellps=WGS84"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_TRUE(!crs->ellipsoid()->isSphere()); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis().getSIValue(), 2); + EXPECT_EQ(crs->ellipsoid()->computedInverseFlattening(), 298.25722356300003) + << crs->ellipsoid()->computedInverseFlattening(); } // --------------------------------------------------------------------------- @@ -7505,6 +7523,16 @@ TEST(io, projparse_init) { EXPECT_EQ(co->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +init=epsg:4326 +step +proj=longlat"); } + + { + auto obj = PROJStringParser().createFromPROJString( + "init=epsg:4326 proj=longlat ellps=GRS80"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=GRS80 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); + } } // --------------------------------------------------------------------------- @@ -7536,10 +7564,6 @@ TEST(io, projparse_errors) { EXPECT_THROW(PROJStringParser().createFromPROJString( "proj=pipeline step init=epsg:4326 init=epsg:4326"), ParsingException); - - EXPECT_THROW(PROJStringParser().createFromPROJString( - "proj=pipeline step init=epsg:4326 proj=longlat"), - ParsingException); } // --------------------------------------------------------------------------- @@ -7577,9 +7601,6 @@ TEST(io, projparse_longlat_errors) { PROJStringParser().createFromPROJString("+proj=longlat +R=invalid"), ParsingException); - EXPECT_THROW(PROJStringParser().createFromPROJString("+proj=longlat +a=1"), - ParsingException); - EXPECT_THROW(PROJStringParser().createFromPROJString("+proj=longlat +b=1"), ParsingException); diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index 528aa6b8..818c10ec 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -4477,6 +4477,38 @@ TEST(operation, geogCRS_to_geogCRS_CH1903_to_CH1903plus_context) { // --------------------------------------------------------------------------- +TEST(operation, geogCRS_to_geogCRS_init_IGNF_to_init_IGNF_context) { + + auto dbContext = DatabaseContext::create(); + + auto sourceCRS_obj = PROJStringParser() + .attachDatabaseContext(dbContext) + .setUsePROJ4InitRules(true) + .createFromPROJString("+init=IGNF:NTFG"); + auto sourceCRS = nn_dynamic_pointer_cast(sourceCRS_obj); + ASSERT_TRUE(sourceCRS != nullptr); + + auto targetCRS_obj = PROJStringParser() + .attachDatabaseContext(dbContext) + .setUsePROJ4InitRules(true) + .createFromPROJString("+init=IGNF:RGF93G"); + auto targetCRS = nn_dynamic_pointer_cast(targetCRS_obj); + ASSERT_TRUE(targetCRS != nullptr); + + auto authFactory = AuthorityFactory::create(dbContext, std::string()); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + NN_CHECK_ASSERT(sourceCRS), NN_CHECK_ASSERT(targetCRS), ctxt); + ASSERT_EQ(list.size(), 1); + + EXPECT_EQ(list[0]->nameStr(), + "NOUVELLE TRIANGULATION DE LA FRANCE (NTF) vers RGF93 (ETRS89)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=hgridshift +grids=ntf_r93.gsb"); +} + +// --------------------------------------------------------------------------- + TEST(operation, geogCRS_to_geogCRS_3D) { auto geogcrs_m_obj = @@ -5110,6 +5142,83 @@ TEST(operation, boundCRS_of_geogCRS_to_unrelated_geogCRS) { // --------------------------------------------------------------------------- +TEST(operation, createOperation_boundCRS_identified_by_datum) { + auto objSrc = + PROJStringParser().createFromPROJString("+proj=longlat +datum=WGS84"); + auto src = nn_dynamic_pointer_cast(objSrc); + ASSERT_TRUE(src != nullptr); + + auto objDest = PROJStringParser().createFromPROJString( + "+proj=utm +zone=32 +a=6378249.2 +b=6356515 " + "+towgs84=-263.0,6.0,431.0 +no_defs"); + auto dest = nn_dynamic_pointer_cast(objDest); + ASSERT_TRUE(dest != nullptr); + + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(src), NN_CHECK_ASSERT(dest)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=cart +ellps=WGS84 " + "+step +proj=helmert +x=263 +y=-6 +z=-431 " + "+step +inv +proj=cart +ellps=clrk80ign " + "+step +proj=utm +zone=32 +ellps=clrk80ign"); + + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), std::string()); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + NN_CHECK_ASSERT(src), NN_CHECK_ASSERT(dest), ctxt); + ASSERT_EQ(list.size(), 1U); + EXPECT_TRUE(list[0]->isEquivalentTo(op.get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_of_clrk_66_geogCRS_to_nad83_geogCRS) { + auto objSrc = PROJStringParser().createFromPROJString( + "+proj=latlong +ellps=clrk66 +nadgrids=ntv1_can.dat,conus"); + auto src = nn_dynamic_pointer_cast(objSrc); + ASSERT_TRUE(src != nullptr); + + auto objDest = + PROJStringParser().createFromPROJString("+proj=latlong +datum=NAD83"); + auto dest = nn_dynamic_pointer_cast(objDest); + ASSERT_TRUE(dest != nullptr); + + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(src), NN_CHECK_ASSERT(dest)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=hgridshift +grids=ntv1_can.dat,conus " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_of_clrk_66_projCRS_to_nad83_geogCRS) { + auto objSrc = PROJStringParser().createFromPROJString( + "+proj=utm +zone=17 +ellps=clrk66 +nadgrids=ntv1_can.dat,conus"); + auto src = nn_dynamic_pointer_cast(objSrc); + ASSERT_TRUE(src != nullptr); + + auto objDest = + PROJStringParser().createFromPROJString("+proj=latlong +datum=NAD83"); + auto dest = nn_dynamic_pointer_cast(objDest); + ASSERT_TRUE(dest != nullptr); + + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(src), NN_CHECK_ASSERT(dest)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=utm +zone=17 +ellps=clrk66 " + "+step +proj=hgridshift +grids=ntv1_can.dat,conus " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + TEST(operation, boundCRS_of_projCRS_to_geogCRS) { auto utm31 = ProjectedCRS::create( PropertyMap(), GeographicCRS::EPSG_4807, @@ -5864,6 +5973,25 @@ TEST(operation, createOperation_on_crs_with_canonical_bound_crs) { // --------------------------------------------------------------------------- +TEST(operation, createOperation_fallback_to_proj4_strings) { + auto objDest = PROJStringParser().createFromPROJString( + "+proj=longlat +geoc +ellps=WGS84"); + auto dest = nn_dynamic_pointer_cast(objDest); + ASSERT_TRUE(dest != nullptr); + + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4326, NN_CHECK_ASSERT(dest)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +inv +proj=longlat +datum=WGS84 " + "+step +proj=longlat +geoc +ellps=WGS84 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + TEST(operation, mercator_variant_A_to_variant_B) { auto projCRS = ProjectedCRS::create( PropertyMap(), GeographicCRS::EPSG_4326, -- cgit v1.2.3 From c57e293fbf2b79a24519c70d558e1268515a9ee6 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 24 Nov 2018 11:01:11 +0100 Subject: Reformat test .cpp files --- scripts/reformat_cpp.sh | 2 +- test/unit/gie_self_tests.cpp | 452 ++++++++++++++++++----------------- test/unit/main.cpp | 8 +- test/unit/pj_phi2_test.cpp | 3 +- test/unit/proj_errno_string_test.cpp | 18 +- 5 files changed, 252 insertions(+), 231 deletions(-) diff --git a/scripts/reformat_cpp.sh b/scripts/reformat_cpp.sh index 51127529..b50fa1e1 100755 --- a/scripts/reformat_cpp.sh +++ b/scripts/reformat_cpp.sh @@ -15,7 +15,7 @@ esac TOPDIR="$SCRIPT_DIR/.." -for i in "$TOPDIR"/include/proj/*.hpp "$TOPDIR"/include/proj/internal/*.hpp "$TOPDIR"/src/*.cpp "$TOPDIR"/test/unit/test*.cpp; do +for i in "$TOPDIR"/include/proj/*.hpp "$TOPDIR"/include/proj/internal/*.hpp "$TOPDIR"/src/*.cpp "$TOPDIR"/test/unit/*.cpp; do if ! echo "$i" | grep -q "lru_cache.hpp"; then "$SCRIPT_DIR"/reformat.sh "$i"; fi diff --git a/test/unit/gie_self_tests.cpp b/test/unit/gie_self_tests.cpp index 8b90a22d..7aca3001 100644 --- a/test/unit/gie_self_tests.cpp +++ b/test/unit/gie_self_tests.cpp @@ -43,7 +43,7 @@ namespace { // --------------------------------------------------------------------------- -TEST( gie, cart_selftest ) { +TEST(gie, cart_selftest) { PJ_CONTEXT *ctx; PJ *P; PJ_COORD a, b, obs[2]; @@ -52,187 +52,177 @@ TEST( gie, cart_selftest ) { int err; size_t n, sz; double dist, h, t; - const char * const args[3] = {"proj=utm", "zone=32", "ellps=GRS80"}; + const char *const args[3] = {"proj=utm", "zone=32", "ellps=GRS80"}; char arg[50] = {"+proj=utm; +zone=32; +ellps=GRS80"}; /* An utm projection on the GRS80 ellipsoid */ - P = proj_create (PJ_DEFAULT_CTX, arg); - ASSERT_TRUE( P != nullptr ); + P = proj_create(PJ_DEFAULT_CTX, arg); + ASSERT_TRUE(P != nullptr); /* Clean up */ - proj_destroy (P); + proj_destroy(P); /* Same projection, now using argc/argv style initialization */ - P = proj_create_argv (PJ_DEFAULT_CTX, 3, const_cast(args)); - ASSERT_TRUE( P != nullptr ); + P = proj_create_argv(PJ_DEFAULT_CTX, 3, const_cast(args)); + ASSERT_TRUE(P != nullptr); /* zero initialize everything, then set (longitude, latitude) to (12, 55) */ - a = proj_coord (0,0,0,0); + a = proj_coord(0, 0, 0, 0); /* a.lp: The coordinate part of a, interpreted as a classic LP pair */ a.lp.lam = proj_torad(12); a.lp.phi = proj_torad(55); /* Forward projection */ - b = proj_trans (P, PJ_FWD, a); + b = proj_trans(P, PJ_FWD, a); /* Inverse projection */ - a = proj_trans (P, PJ_INV, b); + a = proj_trans(P, PJ_INV, b); /* Null projection */ - a = proj_trans (P, PJ_IDENT, a); + a = proj_trans(P, PJ_IDENT, a); /* Forward again, to get two linear items for comparison */ - a = proj_trans (P, PJ_FWD, a); + a = proj_trans(P, PJ_FWD, a); - dist = proj_xy_dist (a, b); + dist = proj_xy_dist(a, b); ASSERT_LE(dist, 2e-9); /* Clear any previous error */ - proj_errno_reset (P); + proj_errno_reset(P); /* Invalid projection */ - a = proj_trans (P, static_cast(42), a); + a = proj_trans(P, static_cast(42), a); ASSERT_EQ(a.lpz.lam, HUGE_VAL); - err = proj_errno (P); + err = proj_errno(P); ASSERT_NE(err, 0); /* Clear error again */ - proj_errno_reset (P); + proj_errno_reset(P); /* Clean up */ - proj_destroy (P); + proj_destroy(P); /* Now do some 3D transformations */ - P = proj_create (PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); - ASSERT_TRUE( P != nullptr ); + P = proj_create(PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); + ASSERT_TRUE(P != nullptr); - /* zero initialize everything, then set (longitude, latitude, height) to (12, 55, 100) */ - a = b = proj_coord (0,0,0,0); + /* zero initialize everything, then set (longitude, latitude, height) to + * (12, 55, 100) */ + a = b = proj_coord(0, 0, 0, 0); a.lpz.lam = proj_torad(12); a.lpz.phi = proj_torad(55); - a.lpz.z = 100; + a.lpz.z = 100; /* Forward projection: 3D-Cartesian-to-Ellipsoidal */ - b = proj_trans (P, PJ_FWD, a); + b = proj_trans(P, PJ_FWD, a); /* Check roundtrip precision for 10000 iterations each way */ - dist = proj_roundtrip (P, PJ_FWD, 10000, &a); - dist += proj_roundtrip (P, PJ_INV, 10000, &b); + dist = proj_roundtrip(P, PJ_FWD, 10000, &a); + dist += proj_roundtrip(P, PJ_INV, 10000, &b); ASSERT_LE(dist, 4e-9); - /* Test at the North Pole */ - a = b = proj_coord (0,0,0,0); + a = b = proj_coord(0, 0, 0, 0); a.lpz.lam = proj_torad(0); a.lpz.phi = proj_torad(90); - a.lpz.z = 100; + a.lpz.z = 100; /* Forward projection: Ellipsoidal-to-3D-Cartesian */ - dist = proj_roundtrip (P, PJ_FWD, 1, &a); + dist = proj_roundtrip(P, PJ_FWD, 1, &a); ASSERT_LE(dist, 1e-9); /* Test at the South Pole */ - a = b = proj_coord (0,0,0,0); + a = b = proj_coord(0, 0, 0, 0); a.lpz.lam = proj_torad(0); a.lpz.phi = proj_torad(-90); - a.lpz.z = 100; + a.lpz.z = 100; b = a; /* Forward projection: Ellipsoidal-to-3D-Cartesian */ - dist = proj_roundtrip (P, PJ_FWD, 1, &a); + dist = proj_roundtrip(P, PJ_FWD, 1, &a); ASSERT_LE(dist, 4e-9); /* Inverse projection: 3D-Cartesian-to-Ellipsoidal */ - b = proj_trans (P, PJ_INV, b); + b = proj_trans(P, PJ_INV, b); /* Move p to another context */ - ctx = proj_context_create (); - ASSERT_NE (ctx, pj_get_default_ctx()); + ctx = proj_context_create(); + ASSERT_NE(ctx, pj_get_default_ctx()); - proj_context_set (P, ctx); - ASSERT_EQ (ctx, P->ctx); + proj_context_set(P, ctx); + ASSERT_EQ(ctx, P->ctx); - b = proj_trans (P, PJ_FWD, b); + b = proj_trans(P, PJ_FWD, b); /* Move it back to the default context */ - proj_context_set (P, 0); - ASSERT_EQ (pj_get_default_ctx(), P->ctx); + proj_context_set(P, 0); + ASSERT_EQ(pj_get_default_ctx(), P->ctx); - proj_context_destroy (ctx); + proj_context_destroy(ctx); /* We go on with the work - now back on the default context */ - b = proj_trans (P, PJ_INV, b); - proj_destroy (P); - + b = proj_trans(P, PJ_INV, b); + proj_destroy(P); /* Testing proj_trans_generic () */ /* An utm projection on the GRS80 ellipsoid */ - P = proj_create (PJ_DEFAULT_CTX, "+proj=utm +zone=32 +ellps=GRS80"); - ASSERT_TRUE( P != nullptr ); + P = proj_create(PJ_DEFAULT_CTX, "+proj=utm +zone=32 +ellps=GRS80"); + ASSERT_TRUE(P != nullptr); - obs[0] = proj_coord (proj_torad(12), proj_torad(55), 45, 0); - obs[1] = proj_coord (proj_torad(12), proj_torad(56), 50, 0); - sz = sizeof (PJ_COORD); + obs[0] = proj_coord(proj_torad(12), proj_torad(55), 45, 0); + obs[1] = proj_coord(proj_torad(12), proj_torad(56), 50, 0); + sz = sizeof(PJ_COORD); /* Forward projection */ - a = proj_trans (P, PJ_FWD, obs[0]); - b = proj_trans (P, PJ_FWD, obs[1]); - - n = proj_trans_generic ( - P, PJ_FWD, - &(obs[0].lpz.lam), sz, 2, - &(obs[0].lpz.phi), sz, 2, - &(obs[0].lpz.z), sz, 2, - 0, sz, 0 - ); + a = proj_trans(P, PJ_FWD, obs[0]); + b = proj_trans(P, PJ_FWD, obs[1]); + + n = proj_trans_generic(P, PJ_FWD, &(obs[0].lpz.lam), sz, 2, + &(obs[0].lpz.phi), sz, 2, &(obs[0].lpz.z), sz, 2, 0, + sz, 0); ASSERT_EQ(n, 2); - ASSERT_EQ (a.lpz.lam , obs[0].lpz.lam); - ASSERT_EQ (a.lpz.phi , obs[0].lpz.phi); - ASSERT_EQ (a.lpz.z , obs[0].lpz.z); - ASSERT_EQ (b.lpz.lam , obs[1].lpz.lam); - ASSERT_EQ (b.lpz.phi , obs[1].lpz.phi); - ASSERT_EQ (b.lpz.z , obs[1].lpz.z); + ASSERT_EQ(a.lpz.lam, obs[0].lpz.lam); + ASSERT_EQ(a.lpz.phi, obs[0].lpz.phi); + ASSERT_EQ(a.lpz.z, obs[0].lpz.z); + ASSERT_EQ(b.lpz.lam, obs[1].lpz.lam); + ASSERT_EQ(b.lpz.phi, obs[1].lpz.phi); + ASSERT_EQ(b.lpz.z, obs[1].lpz.z); /* now test the case of constant z */ - obs[0] = proj_coord (proj_torad(12), proj_torad(55), 45, 0); - obs[1] = proj_coord (proj_torad(12), proj_torad(56), 50, 0); + obs[0] = proj_coord(proj_torad(12), proj_torad(55), 45, 0); + obs[1] = proj_coord(proj_torad(12), proj_torad(56), 50, 0); h = 27; t = 33; - n = proj_trans_generic ( - P, PJ_FWD, - &(obs[0].lpz.lam), sz, 2, - &(obs[0].lpz.phi), sz, 2, - &h, 0, 1, - &t, 0, 1 - ); + n = proj_trans_generic(P, PJ_FWD, &(obs[0].lpz.lam), sz, 2, + &(obs[0].lpz.phi), sz, 2, &h, 0, 1, &t, 0, 1); ASSERT_EQ(n, 2); - ASSERT_EQ (a.lpz.lam , obs[0].lpz.lam); - ASSERT_EQ (a.lpz.phi , obs[0].lpz.phi); - ASSERT_EQ (45, obs[0].lpz.z); - ASSERT_EQ (b.lpz.lam, obs[1].lpz.lam); - ASSERT_EQ (b.lpz.phi, obs[1].lpz.phi); - ASSERT_EQ (50, obs[1].lpz.z); - ASSERT_NE (50, h); + ASSERT_EQ(a.lpz.lam, obs[0].lpz.lam); + ASSERT_EQ(a.lpz.phi, obs[0].lpz.phi); + ASSERT_EQ(45, obs[0].lpz.z); + ASSERT_EQ(b.lpz.lam, obs[1].lpz.lam); + ASSERT_EQ(b.lpz.phi, obs[1].lpz.phi); + ASSERT_EQ(50, obs[1].lpz.z); + ASSERT_NE(50, h); /* test proj_trans_array () */ - coord[0] = proj_coord (proj_torad(12), proj_torad(55), 45, 0); - coord[1] = proj_coord (proj_torad(12), proj_torad(56), 50, 0); - ASSERT_FALSE (proj_trans_array (P, PJ_FWD, 2, coord)); + coord[0] = proj_coord(proj_torad(12), proj_torad(55), 45, 0); + coord[1] = proj_coord(proj_torad(12), proj_torad(56), 50, 0); + ASSERT_FALSE(proj_trans_array(P, PJ_FWD, 2, coord)); - ASSERT_EQ (a.lpz.lam , coord[0].lpz.lam); - ASSERT_EQ (a.lpz.phi , coord[0].lpz.phi); - ASSERT_EQ (a.lpz.z , coord[0].lpz.z); - ASSERT_EQ (b.lpz.lam , coord[1].lpz.lam); - ASSERT_EQ (b.lpz.phi , coord[1].lpz.phi); - ASSERT_EQ (b.lpz.z , coord[1].lpz.z); + ASSERT_EQ(a.lpz.lam, coord[0].lpz.lam); + ASSERT_EQ(a.lpz.phi, coord[0].lpz.phi); + ASSERT_EQ(a.lpz.z, coord[0].lpz.z); + ASSERT_EQ(b.lpz.lam, coord[1].lpz.lam); + ASSERT_EQ(b.lpz.phi, coord[1].lpz.phi); + ASSERT_EQ(b.lpz.z, coord[1].lpz.z); /* Clean up after proj_trans_* tests */ - proj_destroy (P); + proj_destroy(P); } // --------------------------------------------------------------------------- @@ -254,34 +244,38 @@ class gieTest : public ::testing::Test { // --------------------------------------------------------------------------- -TEST_F( gieTest, proj_create_crs_to_crs ) { +TEST_F(gieTest, proj_create_crs_to_crs) { /* test proj_create_crs_to_crs() */ - auto P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "epsg:25832", "epsg:25833", NULL); - ASSERT_TRUE( P != nullptr ); + auto P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "epsg:25832", "epsg:25833", + NULL); + ASSERT_TRUE(P != nullptr); PJ_COORD a, b; - a.xy.x = 700000.0; + a.xy.x = 700000.0; a.xy.y = 6000000.0; - b.xy.x = 307788.8761171057; + b.xy.x = 307788.8761171057; b.xy.y = 5999669.3036037628; a = proj_trans(P, PJ_FWD, a); - EXPECT_NEAR( a.xy.x, b.xy.x, 1e-9); - EXPECT_NEAR( a.xy.y, b.xy.y, 1e-9); + EXPECT_NEAR(a.xy.x, b.xy.x, 1e-9); + EXPECT_NEAR(a.xy.y, b.xy.y, 1e-9); proj_destroy(P); /* we can also allow PROJ strings as a usable PJ */ - P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "proj=utm +zone=32 +datum=WGS84", "proj=utm +zone=33 +datum=WGS84", NULL); - ASSERT_TRUE( P != nullptr ); + P = proj_create_crs_to_crs(PJ_DEFAULT_CTX, "proj=utm +zone=32 +datum=WGS84", + "proj=utm +zone=33 +datum=WGS84", NULL); + ASSERT_TRUE(P != nullptr); proj_destroy(P); - EXPECT_TRUE( proj_create_crs_to_crs(m_ctxt, "invalid", "EPSG:25833", NULL) == nullptr ); - EXPECT_TRUE( proj_create_crs_to_crs(m_ctxt, "EPSG:25832", "invalid", NULL) == nullptr ); + EXPECT_TRUE(proj_create_crs_to_crs(m_ctxt, "invalid", "EPSG:25833", NULL) == + nullptr); + EXPECT_TRUE(proj_create_crs_to_crs(m_ctxt, "EPSG:25832", "invalid", NULL) == + nullptr); } // --------------------------------------------------------------------------- -TEST( gie, info_functions ) { +TEST(gie, info_functions) { PJ_INFO info; PJ_PROJ_INFO pj_info; PJ_GRID_INFO grid_info; @@ -307,19 +301,20 @@ TEST( gie, info_functions ) { /* this one is difficult to test, since the output changes with the setup */ info = proj_info(); - if (info.version[0] != '\0' ) { + if (info.version[0] != '\0') { char tmpstr[64]; sprintf(tmpstr, "%d.%d.%d", info.major, info.minor, info.patch); - ASSERT_EQ( std::string(info.version), std::string(tmpstr) ); + ASSERT_EQ(std::string(info.version), std::string(tmpstr)); } - ASSERT_NE( std::string(info.release), "" ); - if (getenv ("HOME") || getenv ("PROJ_LIB")) { - ASSERT_NE( std::string(info.searchpath), std::string() ); + ASSERT_NE(std::string(info.release), ""); + if (getenv("HOME") || getenv("PROJ_LIB")) { + ASSERT_NE(std::string(info.searchpath), std::string()); } /* proj_pj_info() */ { - P = proj_create(PJ_DEFAULT_CTX, "+proj=august"); /* august has no inverse */ + P = proj_create(PJ_DEFAULT_CTX, + "+proj=august"); /* august has no inverse */ auto has_inverse = proj_pj_info(P).has_inverse; proj_destroy(P); ASSERT_FALSE(has_inverse); @@ -327,156 +322,164 @@ TEST( gie, info_functions ) { P = proj_create(PJ_DEFAULT_CTX, arg); pj_info = proj_pj_info(P); - ASSERT_TRUE( pj_info.has_inverse ); - pj_shrink (arg); - ASSERT_EQ( std::string(pj_info.definition), arg ); - ASSERT_EQ( std::string(pj_info.id), "utm" ); + ASSERT_TRUE(pj_info.has_inverse); + pj_shrink(arg); + ASSERT_EQ(std::string(pj_info.definition), arg); + ASSERT_EQ(std::string(pj_info.id), "utm"); proj_destroy(P); /* proj_grid_info() */ grid_info = proj_grid_info("null"); - ASSERT_NE( std::string(grid_info.filename), "" ); - ASSERT_EQ( std::string(grid_info.gridname), "null" ); + ASSERT_NE(std::string(grid_info.filename), ""); + ASSERT_EQ(std::string(grid_info.gridname), "null"); grid_info = proj_grid_info("nonexistinggrid"); - ASSERT_EQ( std::string(grid_info.filename), "" ); + ASSERT_EQ(std::string(grid_info.filename), ""); /* proj_init_info() */ init_info = proj_init_info("unknowninit"); - ASSERT_EQ( std::string(init_info.filename), "" ); + ASSERT_EQ(std::string(init_info.filename), ""); init_info = proj_init_info("epsg"); - /* Need to allow for "Unknown" until all commonly distributed EPSG-files comes with a metadata section */ - ASSERT_TRUE( std::string(init_info.origin) == "EPSG" || std::string(init_info.origin) == "Unknown" ) << std::string(init_info.origin); - ASSERT_EQ( std::string(init_info.name), "epsg" ); - + /* Need to allow for "Unknown" until all commonly distributed EPSG-files + * comes with a metadata section */ + ASSERT_TRUE(std::string(init_info.origin) == "EPSG" || + std::string(init_info.origin) == "Unknown") + << std::string(init_info.origin); + ASSERT_EQ(std::string(init_info.name), "epsg"); /* test proj_rtodms() and proj_dmstor() */ - ASSERT_EQ( std::string("180dN"), proj_rtodms(buf, M_PI, 'N', 'S')); + ASSERT_EQ(std::string("180dN"), proj_rtodms(buf, M_PI, 'N', 'S')); ASSERT_EQ(proj_dmstor(&buf[0], NULL), M_PI); - ASSERT_EQ( std::string("114d35'29.612\"S"), proj_rtodms(buf, -2.0, 'N', 'S')); + ASSERT_EQ(std::string("114d35'29.612\"S"), + proj_rtodms(buf, -2.0, 'N', 'S')); /* we can't expect perfect numerical accuracy so testing with a tolerance */ - ASSERT_NEAR (-2.0 , proj_dmstor(&buf[0], NULL) , 1e-7); + ASSERT_NEAR(-2.0, proj_dmstor(&buf[0], NULL), 1e-7); /* test proj_derivatives_retrieve() and proj_factors_retrieve() */ P = proj_create(PJ_DEFAULT_CTX, "+proj=merc"); - a = proj_coord (0,0,0,0); + a = proj_coord(0, 0, 0, 0); a.lp.lam = proj_torad(12); a.lp.phi = proj_torad(55); factors = proj_factors(P, a); - ASSERT_FALSE (proj_errno(P)); /* factors not created correctly */ + ASSERT_FALSE(proj_errno(P)); /* factors not created correctly */ /* check a few key characteristics of the Mercator projection */ - ASSERT_EQ (factors.angular_distortion, 0.0); /* angular distortion should be 0 */ - ASSERT_EQ (factors.meridian_parallel_angle, M_PI_2); /* Meridian/parallel angle should be 90 deg */ - ASSERT_EQ (factors.meridian_convergence, 0.0); /* meridian convergence should be 0 */ + ASSERT_EQ(factors.angular_distortion, + 0.0); /* angular distortion should be 0 */ + ASSERT_EQ(factors.meridian_parallel_angle, + M_PI_2); /* Meridian/parallel angle should be 90 deg */ + ASSERT_EQ(factors.meridian_convergence, + 0.0); /* meridian convergence should be 0 */ proj_destroy(P); /* Check that proj_list_* functions work by looping through them */ size_t n = 0; - for (oper_list = proj_list_operations(); oper_list->id; ++oper_list) n++; + for (oper_list = proj_list_operations(); oper_list->id; ++oper_list) + n++; ASSERT_NE(n, 0U); n = 0; - for (ellps_list = proj_list_ellps(); ellps_list->id; ++ellps_list) n++; + for (ellps_list = proj_list_ellps(); ellps_list->id; ++ellps_list) + n++; ASSERT_NE(n, 0U); n = 0; - for (unit_list = proj_list_units(); unit_list->id; ++unit_list) n++; + for (unit_list = proj_list_units(); unit_list->id; ++unit_list) + n++; ASSERT_NE(n, 0U); n = 0; - for (pm_list = proj_list_prime_meridians(); pm_list->id; ++pm_list) n++; + for (pm_list = proj_list_prime_meridians(); pm_list->id; ++pm_list) + n++; ASSERT_NE(n, 0U); - } // --------------------------------------------------------------------------- -TEST( gie, io_predicates ) { +TEST(gie, io_predicates) { /* check io-predicates */ /* angular in on fwd, linear out */ - auto P = proj_create (PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); - ASSERT_TRUE( P != nullptr ); - ASSERT_TRUE(proj_angular_input (P, PJ_FWD)); - ASSERT_FALSE(proj_angular_input (P, PJ_INV)); - ASSERT_FALSE(proj_angular_output (P, PJ_FWD)); - ASSERT_TRUE(proj_angular_output (P, PJ_INV)); + auto P = proj_create(PJ_DEFAULT_CTX, "+proj=cart +ellps=GRS80"); + ASSERT_TRUE(P != nullptr); + ASSERT_TRUE(proj_angular_input(P, PJ_FWD)); + ASSERT_FALSE(proj_angular_input(P, PJ_INV)); + ASSERT_FALSE(proj_angular_output(P, PJ_FWD)); + ASSERT_TRUE(proj_angular_output(P, PJ_INV)); P->inverted = 1; - ASSERT_FALSE(proj_angular_input (P, PJ_FWD)); - ASSERT_TRUE(proj_angular_input (P, PJ_INV)); - ASSERT_TRUE(proj_angular_output (P, PJ_FWD)); - ASSERT_FALSE(proj_angular_output (P, PJ_INV)); + ASSERT_FALSE(proj_angular_input(P, PJ_FWD)); + ASSERT_TRUE(proj_angular_input(P, PJ_INV)); + ASSERT_TRUE(proj_angular_output(P, PJ_FWD)); + ASSERT_FALSE(proj_angular_output(P, PJ_INV)); proj_destroy(P); /* angular in and out */ P = proj_create(PJ_DEFAULT_CTX, - "+proj=molodensky +a=6378160 +rf=298.25 " - "+da=-23 +df=-8.120449e-8 +dx=-134 +dy=-48 +dz=149 " - "+abridged " - ); - ASSERT_TRUE( P != nullptr ); - ASSERT_TRUE(proj_angular_input (P, PJ_FWD)); - ASSERT_TRUE(proj_angular_input (P, PJ_INV)); - ASSERT_TRUE(proj_angular_output (P, PJ_FWD)); - ASSERT_TRUE(proj_angular_output (P, PJ_INV)); + "+proj=molodensky +a=6378160 +rf=298.25 " + "+da=-23 +df=-8.120449e-8 +dx=-134 +dy=-48 +dz=149 " + "+abridged "); + ASSERT_TRUE(P != nullptr); + ASSERT_TRUE(proj_angular_input(P, PJ_FWD)); + ASSERT_TRUE(proj_angular_input(P, PJ_INV)); + ASSERT_TRUE(proj_angular_output(P, PJ_FWD)); + ASSERT_TRUE(proj_angular_output(P, PJ_INV)); P->inverted = 1; - ASSERT_TRUE(proj_angular_input (P, PJ_FWD)); - ASSERT_TRUE(proj_angular_input (P, PJ_INV)); - ASSERT_TRUE(proj_angular_output (P, PJ_FWD)); - ASSERT_TRUE(proj_angular_output (P, PJ_INV)); + ASSERT_TRUE(proj_angular_input(P, PJ_FWD)); + ASSERT_TRUE(proj_angular_input(P, PJ_INV)); + ASSERT_TRUE(proj_angular_output(P, PJ_FWD)); + ASSERT_TRUE(proj_angular_output(P, PJ_INV)); proj_destroy(P); /* linear in and out */ P = proj_create(PJ_DEFAULT_CTX, - " +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 +convention=coordinate_frame +no_defs" - ); - ASSERT_TRUE( P != nullptr ); - ASSERT_FALSE(proj_angular_input (P, PJ_FWD)); - ASSERT_FALSE(proj_angular_input (P, PJ_INV)); - ASSERT_FALSE(proj_angular_output (P, PJ_FWD)); - ASSERT_FALSE(proj_angular_output (P, PJ_INV)); + " +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 +convention=coordinate_frame +no_defs"); + ASSERT_TRUE(P != nullptr); + ASSERT_FALSE(proj_angular_input(P, PJ_FWD)); + ASSERT_FALSE(proj_angular_input(P, PJ_INV)); + ASSERT_FALSE(proj_angular_output(P, PJ_FWD)); + ASSERT_FALSE(proj_angular_output(P, PJ_INV)); P->inverted = 1; - ASSERT_FALSE(proj_angular_input (P, PJ_FWD)); - ASSERT_FALSE(proj_angular_input (P, PJ_INV)); - ASSERT_FALSE(proj_angular_output (P, PJ_FWD)); - ASSERT_FALSE(proj_angular_output (P, PJ_INV)); + ASSERT_FALSE(proj_angular_input(P, PJ_FWD)); + ASSERT_FALSE(proj_angular_input(P, PJ_INV)); + ASSERT_FALSE(proj_angular_output(P, PJ_FWD)); + ASSERT_FALSE(proj_angular_output(P, PJ_INV)); /* We specified "no_defs" but didn't give any ellipsoid info */ /* pj_init_ctx should default to WGS84 */ - ASSERT_EQ (P->a, 6378137.0); - ASSERT_EQ (P->f, 1.0/298.257223563); + ASSERT_EQ(P->a, 6378137.0); + ASSERT_EQ(P->f, 1.0 / 298.257223563); proj_destroy(P); /* Test that pj_fwd* and pj_inv* returns NaNs when receiving NaN input */ P = proj_create(PJ_DEFAULT_CTX, "+proj=merc"); - ASSERT_TRUE( P != nullptr ); + ASSERT_TRUE(P != nullptr); auto a = proj_coord(NAN, NAN, NAN, NAN); a = proj_trans(P, PJ_FWD, a); - ASSERT_TRUE ( ( std::isnan(a.v[0]) && std::isnan(a.v[1]) && std::isnan(a.v[2]) && std::isnan(a.v[3]) ) ); + ASSERT_TRUE((std::isnan(a.v[0]) && std::isnan(a.v[1]) && + std::isnan(a.v[2]) && std::isnan(a.v[3]))); a = proj_coord(NAN, NAN, NAN, NAN); a = proj_trans(P, PJ_INV, a); - ASSERT_TRUE ( ( std::isnan(a.v[0]) && std::isnan(a.v[1]) && std::isnan(a.v[2]) && std::isnan(a.v[3]) ) ); + ASSERT_TRUE((std::isnan(a.v[0]) && std::isnan(a.v[1]) && + std::isnan(a.v[2]) && std::isnan(a.v[3]))); proj_destroy(P); - } // --------------------------------------------------------------------------- -static void test_time(const char* args, double tol, double t_in, double t_exp) { +static void 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); @@ -497,7 +500,7 @@ static void test_time(const char* args, double tol, double t_in, double t_exp) { // --------------------------------------------------------------------------- -TEST( gie, unitconvert_selftest ) { +TEST(gie, unitconvert_selftest) { char args1[] = "+proj=unitconvert +t_in=decimalyear +t_out=decimalyear"; double in1 = 2004.25; @@ -521,7 +524,6 @@ TEST( gie, unitconvert_selftest ) { test_time(args5, 1e-6, in5, in5); } - static const char tc32_utm32[] = { " +proj=horner" " +ellps=intl" @@ -529,11 +531,22 @@ static const char tc32_utm32[] = { " +fwd_origin=877605.269066,6125810.306769" " +inv_origin=877605.760036,6125811.281773" " +deg=4" - " +fwd_v=6.1258112678e+06,9.9999971567e-01,1.5372750011e-10,5.9300860915e-15,2.2609497633e-19,4.3188227445e-05,2.8225130416e-10,7.8740007114e-16,-1.7453997279e-19,1.6877465415e-10,-1.1234649773e-14,-1.7042333358e-18,-7.9303467953e-15,-5.2906832535e-19,3.9984284847e-19" - " +fwd_u=8.7760574982e+05,9.9999752475e-01,2.8817299305e-10,5.5641310680e-15,-1.5544700949e-18,-4.1357045890e-05,4.2106213519e-11,2.8525551629e-14,-1.9107771273e-18,3.3615590093e-10,2.4380247154e-14,-2.0241230315e-18,1.2429019719e-15,5.3886155968e-19,-1.0167505000e-18" - " +inv_v=6.1258103208e+06,1.0000002826e+00,-1.5372762184e-10,-5.9304261011e-15,-2.2612705361e-19,-4.3188331419e-05,-2.8225549995e-10,-7.8529116371e-16,1.7476576773e-19,-1.6875687989e-10,1.1236475299e-14,1.7042518057e-18,7.9300735257e-15,5.2881862699e-19,-3.9990736798e-19" - " +inv_u=8.7760527928e+05,1.0000024735e+00,-2.8817540032e-10,-5.5627059451e-15,1.5543637570e-18,4.1357152105e-05,-4.2114813612e-11,-2.8523713454e-14,1.9109017837e-18,-3.3616407783e-10,-2.4382678126e-14,2.0245020199e-18,-1.2441377565e-15,-5.3885232238e-19,1.0167203661e-18" -}; + " +fwd_v=6.1258112678e+06,9.9999971567e-01,1.5372750011e-10,5.9300860915e-" + "15,2.2609497633e-19,4.3188227445e-05,2.8225130416e-10,7.8740007114e-16,-1." + "7453997279e-19,1.6877465415e-10,-1.1234649773e-14,-1.7042333358e-18,-7." + "9303467953e-15,-5.2906832535e-19,3.9984284847e-19" + " +fwd_u=8.7760574982e+05,9.9999752475e-01,2.8817299305e-10,5.5641310680e-" + "15,-1.5544700949e-18,-4.1357045890e-05,4.2106213519e-11,2.8525551629e-14,-" + "1.9107771273e-18,3.3615590093e-10,2.4380247154e-14,-2.0241230315e-18,1." + "2429019719e-15,5.3886155968e-19,-1.0167505000e-18" + " +inv_v=6.1258103208e+06,1.0000002826e+00,-1.5372762184e-10,-5." + "9304261011e-15,-2.2612705361e-19,-4.3188331419e-05,-2.8225549995e-10,-7." + "8529116371e-16,1.7476576773e-19,-1.6875687989e-10,1.1236475299e-14,1." + "7042518057e-18,7.9300735257e-15,5.2881862699e-19,-3.9990736798e-19" + " +inv_u=8.7760527928e+05,1.0000024735e+00,-2.8817540032e-10,-5." + "5627059451e-15,1.5543637570e-18,4.1357152105e-05,-4.2114813612e-11,-2." + "8523713454e-14,1.9109017837e-18,-3.3616407783e-10,-2.4382678126e-14,2." + "0245020199e-18,-1.2441377565e-15,-5.3885232238e-19,1.0167203661e-18"}; static const char sb_utm32[] = { " +proj=horner" @@ -543,56 +556,63 @@ static const char sb_utm32[] = { " +fwd_origin=4.94690026817276e+05,6.13342113183056e+06" " +inv_origin=6.19480258923588e+05,6.13258568148837e+06" " +deg=3" - " +fwd_c=6.13258562111350e+06,6.19480105709997e+05,9.99378966275206e-01,-2.82153291753490e-02,-2.27089979140026e-10,-1.77019590701470e-09,1.08522286274070e-14,2.11430298751604e-15" - " +inv_c=6.13342118787027e+06,4.94690181709311e+05,9.99824464710368e-01,2.82279070814774e-02,7.66123542220864e-11,1.78425334628927e-09,-1.05584823306400e-14,-3.32554258683744e-15" -}; + " +fwd_c=6.13258562111350e+06,6.19480105709997e+05,9.99378966275206e-01,-2." + "82153291753490e-02,-2.27089979140026e-10,-1.77019590701470e-09,1." + "08522286274070e-14,2.11430298751604e-15" + " +inv_c=6.13342118787027e+06,4.94690181709311e+05,9.99824464710368e-01,2." + "82279070814774e-02,7.66123542220864e-11,1.78425334628927e-09,-1." + "05584823306400e-14,-3.32554258683744e-15"}; // --------------------------------------------------------------------------- -TEST( gie, horner_selftest ) { +TEST(gie, horner_selftest) { PJ *P; PJ_COORD a, b, c; double dist; - /* Real polynonia relating the technical coordinate system TC32 to "System 45 Bornholm" */ - P = proj_create (PJ_DEFAULT_CTX, tc32_utm32); - ASSERT_TRUE( P != nullptr ); + /* Real polynonia relating the technical coordinate system TC32 to "System + * 45 Bornholm" */ + P = proj_create(PJ_DEFAULT_CTX, tc32_utm32); + ASSERT_TRUE(P != nullptr); - a = b = proj_coord (0,0,0,0); + a = b = proj_coord(0, 0, 0, 0); a.uv.v = 6125305.4245; - a.uv.u = 878354.8539; + a.uv.u = 878354.8539; c = a; - /* Check roundtrip precision for 1 iteration each way, starting in forward direction */ - dist = proj_roundtrip (P, PJ_FWD, 1, &c); - EXPECT_LE( dist, 0.01 ); + /* Check roundtrip precision for 1 iteration each way, starting in forward + * direction */ + dist = proj_roundtrip(P, PJ_FWD, 1, &c); + EXPECT_LE(dist, 0.01); proj_destroy(P); - /* The complex polynomial transformation between the "System Storebaelt" and utm32/ed50 */ - P = proj_create (PJ_DEFAULT_CTX, sb_utm32); - ASSERT_TRUE( P != nullptr ); + /* The complex polynomial transformation between the "System Storebaelt" and + * utm32/ed50 */ + P = proj_create(PJ_DEFAULT_CTX, sb_utm32); + ASSERT_TRUE(P != nullptr); - /* Test value: utm32_ed50(620000, 6130000) = sb_ed50(495136.8544, 6130821.2945) */ - a = b = c = proj_coord (0,0,0,0); + /* Test value: utm32_ed50(620000, 6130000) = sb_ed50(495136.8544, + * 6130821.2945) */ + a = b = c = proj_coord(0, 0, 0, 0); a.uv.v = 6130821.2945; - a.uv.u = 495136.8544; + a.uv.u = 495136.8544; c.uv.v = 6130000.0000; - c.uv.u = 620000.0000; + c.uv.u = 620000.0000; /* Forward projection */ - b = proj_trans (P, PJ_FWD, a); - dist = proj_xy_dist (b, c); - EXPECT_LE( dist, 0.001 ); + b = proj_trans(P, PJ_FWD, a); + dist = proj_xy_dist(b, c); + EXPECT_LE(dist, 0.001); /* Inverse projection */ - b = proj_trans (P, PJ_INV, c); - dist = proj_xy_dist (b, a); - EXPECT_LE( dist, 0.001 ); + b = proj_trans(P, PJ_INV, c); + dist = proj_xy_dist(b, a); + EXPECT_LE(dist, 0.001); /* Check roundtrip precision for 1 iteration each way */ - dist = proj_roundtrip (P, PJ_FWD, 1, &a); - EXPECT_LE( dist, 0.01 ); + dist = proj_roundtrip(P, PJ_FWD, 1, &a); + EXPECT_LE(dist, 0.01); proj_destroy(P); } diff --git a/test/unit/main.cpp b/test/unit/main.cpp index f24a7aa6..d53e4236 100644 --- a/test/unit/main.cpp +++ b/test/unit/main.cpp @@ -31,9 +31,9 @@ #include "gtest_include.h" GTEST_API_ int main(int argc, char **argv) { - // Use a potentially non-C locale to make sure we are robust - setlocale(LC_ALL, ""); + // Use a potentially non-C locale to make sure we are robust + setlocale(LC_ALL, ""); - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); } diff --git a/test/unit/pj_phi2_test.cpp b/test/unit/pj_phi2_test.cpp index 186bcbc5..67441b69 100644 --- a/test/unit/pj_phi2_test.cpp +++ b/test/unit/pj_phi2_test.cpp @@ -60,7 +60,6 @@ TEST(PjPhi2Test, Basic) { EXPECT_TRUE(std::isnan(pj_phi2(ctx, -M_PI, -M_PI))); } - TEST(PjPhi2Test, AvoidUndefinedBehavior) { auto ctx = pj_get_default_ctx(); @@ -82,4 +81,4 @@ TEST(PjPhi2Test, AvoidUndefinedBehavior) { EXPECT_TRUE(std::isnan(pj_phi2(ctx, -inf, -inf))); } -} // namespace +} // namespace diff --git a/test/unit/proj_errno_string_test.cpp b/test/unit/proj_errno_string_test.cpp index 92840d34..dcdff5c4 100644 --- a/test/unit/proj_errno_string_test.cpp +++ b/test/unit/proj_errno_string_test.cpp @@ -34,18 +34,20 @@ namespace { -TEST(ProjErrnoStringTest, NoError) { - EXPECT_EQ(0, proj_errno_string(0)); -} +TEST(ProjErrnoStringTest, NoError) { EXPECT_EQ(0, proj_errno_string(0)); } TEST(ProjErrnoStringTest, ProjErrnos) { EXPECT_STREQ("no arguments in initialization list", proj_errno_string(-1)); - EXPECT_STREQ("invalid projection system error (-1000)", proj_errno_string(-1000)); - EXPECT_STREQ("invalid projection system error (-9999)", proj_errno_string(-9999)); + EXPECT_STREQ("invalid projection system error (-1000)", + proj_errno_string(-1000)); + EXPECT_STREQ("invalid projection system error (-9999)", + proj_errno_string(-9999)); // for errnos < -9999, -9999 is always returned const int min = std::numeric_limits::min(); - EXPECT_STREQ("invalid projection system error (-9999)",proj_errno_string(min)); - EXPECT_STREQ("invalid projection system error (-9999)", proj_errno_string(-10000)); + EXPECT_STREQ("invalid projection system error (-9999)", + proj_errno_string(min)); + EXPECT_STREQ("invalid projection system error (-9999)", + proj_errno_string(-10000)); } TEST(ProjErrnoStringTest, SystemErrnos) { @@ -65,4 +67,4 @@ TEST(ProjErrnoStringTest, SystemErrnos) { #endif } -} // namespace +} // namespace -- cgit v1.2.3 From 7e05bd0ff52fe3ba78dfd75f9ebebe3dfe715bca Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 24 Nov 2018 11:19:45 +0100 Subject: Add unit test for pj_tranform() now that cs2cs no longer use it --- src/pj_transform.c | 6 +- test/unit/CMakeLists.txt | 8 +- test/unit/Makefile.am | 12 +- test/unit/basic_test.cpp | 44 --- test/unit/pj_transform_test.cpp | 583 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 597 insertions(+), 56 deletions(-) delete mode 100644 test/unit/basic_test.cpp create mode 100644 test/unit/pj_transform_test.cpp diff --git a/src/pj_transform.c b/src/pj_transform.c index f6210822..6982676e 100644 --- a/src/pj_transform.c +++ b/src/pj_transform.c @@ -195,7 +195,7 @@ static int geographic_to_projected (PJ *P, long n, int dist, double *x, double * if (P->is_geocent) return 0; - if(P->fwd3d != NULL) + if(P->fwd3d != NULL && !(z == NULL && P->is_latlong)) { /* Three dimensions must be defined */ if ( z == NULL) @@ -292,6 +292,8 @@ static int projected_to_geographic (PJ *P, long n, int dist, double *x, double * /* Nothing to do? */ if (P->is_latlong && !P->geoc && P->vto_meter == 1.0) return 0; + if (P->is_geocent) + return 0; /* Check first if projection is invertible. */ if( (P->inv3d == NULL) && (P->inv == NULL)) @@ -303,7 +305,7 @@ static int projected_to_geographic (PJ *P, long n, int dist, double *x, double * } /* If invertible - First try inv3d if defined */ - if (P->inv3d != NULL) + if (P->inv3d != NULL && !(z == NULL && P->is_latlong)) { /* Three dimensions must be defined */ if ( z == NULL) diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 8a25d7a3..68a6e60f 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -58,13 +58,13 @@ endif() include_directories(${CMAKE_SOURCE_DIR}/include) include_directories(${SQLITE3_INCLUDE_DIR}) -add_executable(proj_test_unit +add_executable(proj_pj_transform_test main.cpp - basic_test.cpp) -target_link_libraries(proj_test_unit + pj_transform_test.cpp) +target_link_libraries(proj_pj_transform_test gtest ${PROJ_LIBRARIES}) -add_test(NAME proj_test_unit COMMAND proj_test_unit) +add_test(NAME proj_pj_transform_test COMMAND proj_pj_transform_test) add_executable(proj_errno_string_test main.cpp diff --git a/test/unit/Makefile.am b/test/unit/Makefile.am index 913a3f29..236ad444 100644 --- a/test/unit/Makefile.am +++ b/test/unit/Makefile.am @@ -9,17 +9,17 @@ AM_CXXFLAGS = @CXX_WFLAGS@ @NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG@ PROJ_LIB ?= ../../data -noinst_PROGRAMS = basic_test +noinst_PROGRAMS = pj_transform_test noinst_PROGRAMS += pj_phi2_test noinst_PROGRAMS += proj_errno_string_test noinst_PROGRAMS += test_cpp_api noinst_PROGRAMS += gie_self_tests -basic_test_SOURCES = basic_test.cpp main.cpp -basic_test_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la +pj_transform_test_SOURCES = pj_transform_test.cpp main.cpp +pj_transform_test_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la -basic_test-check: basic_test - ./basic_test +pj_transform_test-check: pj_transform_test + PROJ_LIB=$(PROJ_LIB) ./pj_transform_test pj_phi2_test_SOURCES = pj_phi2_test.cpp main.cpp pj_phi2_test_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la @@ -45,4 +45,4 @@ gie_self_tests_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la @S gie_self_tests-check: gie_self_tests PROJ_LIB=$(PROJ_LIB) ./gie_self_tests -check-local: basic_test-check pj_phi2_test-check proj_errno_string_test-check test_cpp_api-check gie_self_tests-check +check-local: pj_transform_test-check pj_phi2_test-check proj_errno_string_test-check test_cpp_api-check gie_self_tests-check diff --git a/test/unit/basic_test.cpp b/test/unit/basic_test.cpp deleted file mode 100644 index d565f839..00000000 --- a/test/unit/basic_test.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/****************************************************************************** - * - * Project: PROJ - * Purpose: Test - * Author: Even Rouault - * - ****************************************************************************** - * Copyright (c) 2018, Even Rouault - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - ****************************************************************************/ - -#include "gtest_include.h" -#include -#include - -namespace { - -// --------------------------------------------------------------------------- - -TEST( dumy, dummy ) { - std::unique_ptr pj( - ::proj_create(PJ_DEFAULT_CTX, "+proj=merc +ellps=clrk66 +lat_ts=33"), - &::proj_destroy); - ASSERT_NE(pj, nullptr); -} - -} // namespace diff --git a/test/unit/pj_transform_test.cpp b/test/unit/pj_transform_test.cpp new file mode 100644 index 00000000..95329bdb --- /dev/null +++ b/test/unit/pj_transform_test.cpp @@ -0,0 +1,583 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test pj_transform() legacy interface + * Author: Even Rouault + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************/ + +#define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H + +#include "gtest_include.h" +#include + +// PROJ include order is sensitive +// clang-format off +#include +#include +// clang-format on + +namespace { + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_to_longlat) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_EQ(x, 2 * DEG_TO_RAD); + EXPECT_EQ(y, 49 * DEG_TO_RAD); + + x = 182 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_EQ(x, 182 * DEG_TO_RAD); + EXPECT_EQ(y, 49 * DEG_TO_RAD); + + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_to_proj) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=utm +zone=31 +datum=WGS84"); + double x = 3 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 500000, 1e-8); + EXPECT_NEAR(y, 0, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_to_proj_tometer) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=utm +zone=31 +datum=WGS84 +to_meter=1000"); + double x = 3 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 500, 1e-8); + EXPECT_NEAR(y, 0, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, proj_to_longlat) { + auto src = pj_init_plus("+proj=utm +zone=31 +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 500000; + double y = 0; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 3 * DEG_TO_RAD, 1e-12); + EXPECT_NEAR(y, 0 * DEG_TO_RAD, 1e-12); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, proj_to_proj) { + auto src = pj_init_plus("+proj=utm +zone=31 +datum=WGS84"); + auto dst = pj_init_plus("+proj=utm +zone=31 +datum=WGS84"); + double x = 500000; + double y = 0; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 500000, 1e-8); + EXPECT_NEAR(y, 0, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_to_geocent) { + auto src = pj_init_plus("+proj=longlat +R=2"); + auto dst = pj_init_plus("+proj=geocent +R=2"); + double x = 0; + double y = 0; + double z = 0; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 2, 1e-8); + EXPECT_NEAR(y, 0, 1e-8); + EXPECT_NEAR(z, 0, 1e-8); + + x = 90 * DEG_TO_RAD; + y = 0; + z = 0; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 0, 1e-8); + EXPECT_NEAR(y, 2, 1e-8); + EXPECT_NEAR(z, 0, 1e-8); + + x = 0; + y = 90 * DEG_TO_RAD; + z = 0.1; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 0, 1e-8); + EXPECT_NEAR(y, 0, 1e-8); + EXPECT_NEAR(z, 2 + 0.1, 1e-8); + + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_to_geocent_to_meter) { + auto src = pj_init_plus("+proj=longlat +R=2"); + auto dst = pj_init_plus("+proj=geocent +R=2 +to_meter=1000"); + double x = 0; + double y = 0; + double z = 0; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 2e-3, 1e-8); + EXPECT_NEAR(y, 0, 1e-8); + EXPECT_NEAR(z, 0, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, geocent_to_longlat) { + auto src = pj_init_plus("+proj=geocent +R=2"); + auto dst = pj_init_plus("+proj=longlat +R=2"); + double x = 0; + double y = 2; + double z = 0; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 90 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 0, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 0, 1e-12); + + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, geocent_to_meter_to_longlat) { + auto src = pj_init_plus("+proj=geocent +to_meter=1000 +R=2"); + auto dst = pj_init_plus("+proj=longlat +R=2"); + double x = 0; + double y = 2e-3; + double z = 0; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 90 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 0, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 0, 1e-12); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, pm) { + auto src = pj_init_plus("+proj=longlat +pm=3 +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +pm=1 +datum=WGS84"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, (2 + 3 - 1) * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_EQ(y, 49 * DEG_TO_RAD) << y / DEG_TO_RAD; + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_geoc_to_longlat) { + auto src = pj_init_plus("+proj=longlat +geoc +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 48.809360314691766 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_to_longlat_geoc) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +geoc +datum=WGS84"); + double x = 2 * DEG_TO_RAD; + double y = 48.809360314691766 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, ellps_to_ellps_noop) { + auto src = pj_init_plus("+proj=longlat +ellps=clrk66"); + auto dst = pj_init_plus("+proj=longlat +ellps=WGS84"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, towgs84_3param_noop) { + auto src = pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=1,2,3"); + auto dst = pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=1,2,3"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + double z = 10; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, towgs84_7param_noop) { + auto src = + pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=1,2,3,4,5,6,7"); + auto dst = + pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=1,2,3,4,5,6,7"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + double z = 10; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_towgs84_3param_to_datum) { + auto src = pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=0,1,0"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 90 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + double z = 10; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 90 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 0 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10 + 1, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_towgs84_3param_to_datum_no_z) { + auto src = pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=0,1,0"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 90 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 90 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 0 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_towgs84_7param_to_datum) { + auto src = + pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=0,1,0,0,0,0,0.5"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 90 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + double z = 10; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 90 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 0 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 14.189073500223458, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, datum_to_longlat_towgs84_3param) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=0,1,0"); + double x = 90 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + double z = 10 + 1; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 90 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 0 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, datum_to_longlat_towgs84_7param) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = + pj_init_plus("+proj=longlat +ellps=WGS84 +towgs84=0,1,0,0,0,0,0.5"); + double x = 90 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + double z = 14.189073500223458; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 90 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 0 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, ellps_grs80_towgs84_to_datum_wgs84) { + auto src = pj_init_plus("+proj=longlat +ellps=GRS80 +towgs84=0,0,0"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + double z = 10; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-15) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-15) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, longlat_nadgrids_to_datum) { + auto src = pj_init_plus("+proj=longlat +ellps=clrk66 +nadgrids=conus"); + auto dst = pj_init_plus("+proj=longlat +datum=NAD83"); + double x = -100 * DEG_TO_RAD; + double y = 40 * DEG_TO_RAD; + double z = 10; + int ret = pj_transform(src, dst, 1, 0, &x, &y, &z); + EXPECT_TRUE(ret == 0 || ret == PJD_ERR_FAILED_TO_LOAD_GRID); + if (ret == 0) { + EXPECT_NEAR(x, -100.00040583667015 * DEG_TO_RAD, 1e-12) + << x / DEG_TO_RAD; + EXPECT_NEAR(y, 40.000005895651363 * DEG_TO_RAD, 1e-12) + << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10.000043224543333, 1e-8); + } + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, nadgrids_noop) { + auto src = pj_init_plus("+proj=longlat +ellps=clrk66 +nadgrids=conus"); + auto dst = pj_init_plus("+proj=longlat +ellps=clrk66 +nadgrids=conus"); + double x = -100 * DEG_TO_RAD; + double y = 40 * DEG_TO_RAD; + double z = 10; + int ret = pj_transform(src, dst, 1, 0, &x, &y, &z); + EXPECT_TRUE(ret == 0); + if (ret == 0) { + EXPECT_NEAR(x, -100 * DEG_TO_RAD, 1e-15) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 40 * DEG_TO_RAD, 1e-15) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10, 1e-8); + } + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, datum_to_longlat_nadgrids) { + auto src = pj_init_plus("+proj=longlat +datum=NAD83"); + auto dst = pj_init_plus("+proj=longlat +ellps=clrk66 +nadgrids=conus"); + double x = -100.00040583667015 * DEG_TO_RAD; + double y = 40.000005895651363 * DEG_TO_RAD; + double z = 10.000043224543333; + int ret = pj_transform(src, dst, 1, 0, &x, &y, &z); + EXPECT_TRUE(ret == 0 || ret == PJD_ERR_FAILED_TO_LOAD_GRID); + if (ret == 0) { + EXPECT_NEAR(x, -100 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 40 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 10, 1e-8); + } + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, long_wrap) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84 +lon_wrap=180"); + double x = -1 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 359 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 0 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, src_vto_meter) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84 +vto_meter=1000"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + double z = 1; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 1000, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, dest_vto_meter) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84 +vto_meter=1000"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + double z = 1000; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 1, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, src_axis_neu_with_z) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84 +axis=neu"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 49 * DEG_TO_RAD; + double y = 2 * DEG_TO_RAD; + double z = 1; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 1, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, src_axis_neu_without_z) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84 +axis=neu"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 49 * DEG_TO_RAD; + double y = 2 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, src_axis_swd) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84 +axis=swd"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84"); + double x = 49 * DEG_TO_RAD; + double y = 2 * DEG_TO_RAD; + double z = -1; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, -2 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, -49 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 1, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, dst_axis_neu) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84 +axis=neu"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + double z = 1; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, 49 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, 2 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, 1, 1e-8); + pj_free(src); + pj_free(dst); +} +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, dst_axis_swd) { + auto src = pj_init_plus("+proj=longlat +datum=WGS84"); + auto dst = pj_init_plus("+proj=longlat +datum=WGS84 +axis=swd"); + double x = 2 * DEG_TO_RAD; + double y = 49 * DEG_TO_RAD; + double z = 1; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, &z), 0); + EXPECT_NEAR(x, -49 * DEG_TO_RAD, 1e-12) << x / DEG_TO_RAD; + EXPECT_NEAR(y, -2 * DEG_TO_RAD, 1e-12) << y / DEG_TO_RAD; + EXPECT_NEAR(z, -1, 1e-8); + pj_free(src); + pj_free(dst); +} + +// --------------------------------------------------------------------------- + +TEST(pj_transform_test, init_epsg) { + auto src = pj_init_plus("+init=epsg:4326"); + ASSERT_TRUE(src != nullptr); + auto dst = pj_init_plus("+init=epsg:32631"); + double x = 3 * DEG_TO_RAD; + double y = 0 * DEG_TO_RAD; + EXPECT_EQ(pj_transform(src, dst, 1, 0, &x, &y, nullptr), 0); + EXPECT_NEAR(x, 500000, 1e-8); + EXPECT_NEAR(y, 0, 1e-8); + pj_free(src); + pj_free(dst); +} + +} // namespace -- cgit v1.2.3 From 67758b2c67ea329116b59818c038797667c4e1d1 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 26 Nov 2018 15:47:57 +0100 Subject: Redirect epsg:XXXX and IGNF:XXXX CRS expansions to the database, and remove the data/epsg and data/IGNF files --- data/CMakeLists.txt | 4 +- data/IGNF | 488 -- data/Makefile.am | 8 +- data/epsg | 11731 -------------------------------------- data/sql/esri.sql | 1 + data/sql/metadata.sql | 4 +- include/proj/io.hpp | 2 + scripts/build_db_from_esri.py | 3 + src/c_api.cpp | 22 + src/cs2cs.cpp | 4 +- src/factory.cpp | 19 + src/gie.c | 14 +- src/io.cpp | 85 +- src/pj_ctx.c | 5 +- src/pj_init.c | 102 +- src/proj.h | 5 +- src/proj_4D_api.c | 50 +- src/projects.h | 5 +- test/gie/4D-API_cs2cs-style.gie | 2 + test/gie/more_builtins.gie | 1 + test/gigs/5101.1-jhs.gie | 2 + test/gigs/5101.2-jhs.gie | 2 + test/gigs/5101.3-jhs.gie | 2 + test/gigs/5101.4-jhs-etmerc.gie | 2 + test/gigs/5102.1.gie | 2 + test/gigs/5103.1.gie | 2 + test/gigs/5103.2.gie | 2 + test/gigs/5103.3.gie | 2 + test/gigs/5105.2.gie | 2 + test/gigs/5106.gie | 2 + test/gigs/5107.gie | 2 + test/gigs/5109.gie | 2 + test/gigs/5111.1.gie | 2 + test/gigs/5112.gie | 2 + test/gigs/5113.gie | 2 + test/gigs/5201.gie | 2 + test/gigs/5208.gie | 2 + test/gigs/Makefile.am | 2 +- test/unit/test_c_api.cpp | 7 + test/unit/test_factory.cpp | 10 + test/unit/test_io.cpp | 16 +- 41 files changed, 324 insertions(+), 12300 deletions(-) delete mode 100644 data/IGNF delete mode 100644 data/epsg diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index d7d1486f..7b23527e 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -2,12 +2,10 @@ # files containing dictionary of useful projection # -set(PROJ_DICTIONARY epsg - esri +set(PROJ_DICTIONARY esri world esri.extra other.extra - IGNF nad27 GL27 nad83 diff --git a/data/IGNF b/data/IGNF deleted file mode 100644 index a29657fb..00000000 --- a/data/IGNF +++ /dev/null @@ -1,488 +0,0 @@ - +version=1.0.0 +origin=IGNF +lastupdate=2011-11-27 -# W [AMANU49] -# W [AMANU63] - +title=Ile d'Amsterdam 1963 +proj=geocent +towgs84=109.7530,-528.1330,-362.2440 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [ANAA47] - +title=MOP92 (Anaa) Tuamotu +proj=geocent +towgs84=1.5000,3.8400,4.8100 +a=6378137.0000 +rf=298.2572235630000 +units=m +no_defs <> -# W [APAT48] -# W [APAT49] - +title=MOP86 (Apataki, Rapa, Hao) Tuamotu +proj=geocent +towgs84=216.8400,118.8100,19.6100 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Ancienne Triangulation des Ingenieurs +proj=geocent +towgs84=1127.0000,22.0000,57.0000 +a=6376523.0000 +rf=308.6400000000000 +units=m +no_defs <> -# W [BASSAS] -# W [BIEN55] - +title=Cadastre 1997 +proj=geocent +towgs84=-381.7880,-57.5010,-256.6730 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [CADA80] -# W [CASS1733] - +title=CIO-BIH +proj=geocent +towgs84=0.0000,0.0000,0.5000,0.0000,0.0000,0.0140,-0.100000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> -# W [CLIP67] - +title=Crozet 1963 +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Guyane CSG67 +proj=geocent +towgs84=-193.0660,236.9930,105.4470,0.4814,-0.8074,0.1276,1.564900 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=ED50 +proj=geocent +towgs84=-84.0000,-97.0000,-117.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=EFATE-IGN 1957 +proj=geocent +towgs84=-127.0000,-769.0000,472.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Systeme de reference terrestre Europeen (1989) +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> -# W [EUROPA54] -# W [FAKA50] -# W [FANGA50] -# W [FANGA64] -# W [FANGA651] -# W [FANGA652] -# W [FANGA66] - +title=MOP84 (Fangataufa 1984) +proj=geocent +towgs84=150.5700,158.3300,118.3200 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [GLOR77CAR] - +title=Guadeloupe Ste Anne +proj=geocent +towgs84=-472.2900,-5.6300,-304.1200,0.4362,-0.8374,0.2563,1.898400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Guadeloupe Fort Marigot +proj=geocent +towgs84=136.5960,248.1480,-429.7890 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [HAO49] -# W [HAO58] -# W [HAO67] -# W [HARA49] -# W [HIKU50] -# W [HIVA60] -# W [HIVA67] - +title=IGN 1963 (Hiva Oa, Tahuata, Mohotani) +proj=geocent +towgs84=410.7210,55.0490,80.7460,-2.5779,-2.3514,-0.6664,17.331100 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=IGN 1972 Grande-Terre / Ile des Pins +proj=geocent +towgs84=-11.6400,-348.6000,291.6800 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [JULES55] - +title=MHPF70 (Kauehi) Tuamotu +proj=geocent +towgs84=126.7400,300.1000,-75.4900 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Kerguelen - K0 +proj=geocent +towgs84=144.8990,-186.7700,100.9230 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Lifou - Iles Loyaute (IGN56) +proj=geocent +towgs84=336.0000,223.0000,-231.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Nouvelle Triangulation du Grand Duche du Luxembourg +proj=geocent +towgs84=-192.9860,13.6730,-39.3090,-0.4099,-2.9332,2.6881,0.430000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [MAKE50] -# W [MANGA51] - +title=Mare - Iles Loyaute (IGN53) +proj=geocent +towgs84=287.0000,178.0000,-136.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=IGN 1972 (Eiao, Hiva Oa, Mohotani) Marquises +proj=geocent +towgs84=327.8400,-14.9600,59.3300 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Martinique Fort-Desaix +proj=geocent +towgs84=126.9260,547.9390,130.4090,-2.7867,5.1612,-0.8584,13.822650 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [MAUPITI] - +title=Mayotte Combani +proj=geocent +towgs84=-599.9280,-275.5520,-195.6650,-0.0835,-0.4715,0.0602,49.281400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=MHEFO 1955 (Fatu Huku) +proj=geocent +towgs84=347.1030,1078.1250,2623.9220,33.8875,-70.6773,9.3943,186.074000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [MHEFO55M] - +title=MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles) +proj=geocent +towgs84=338.0800,212.5800,-296.1700 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Moorea 1987 +proj=geocent +towgs84=215.9820,149.5930,176.2290,3.2624,1.6920,1.1571,10.477300 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=MOP90 (Tetiaroa) Iles de la Societe +proj=geocent +towgs84=217.0370,86.9590,23.9560 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [MURU51] -# W [MURU59] -# W [MURU62] -# W [MURU78] -# W [NC51] -# W [NOVA53] - +title=Nouvelle Triangulation Francaise +proj=geocent +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +units=m +no_defs <> - +title=IGN 1972 Nuku Hiva +proj=geocent +towgs84=165.7320,216.7200,180.5050,-0.6434,-0.4512,-0.0791,7.420400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=SAT94 (Nukutavake) Tuamotu +proj=geocent +towgs84=197.1600,200.1700,-48.0800 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Ouvea - Iles Loyaute (MHNC 1972 - OUVEA) +proj=geocent +towgs84=-13.0000,-348.0000,292.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Petrels - IGN 1972 +proj=geocent +towgs84=365.0000,194.0000,166.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [PMAR55] - +title=IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine +proj=geocent +towgs84=65.0300,341.5500,76.6700 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [RAIV54] -# W [RAIV66] -# W [RANGI47] -# W [RANGI59] -# W [RANGI68] -# W [RAPA55] -# W [RAPA80] - +title=Reunion 1947 +proj=geocent +towgs84=789.5240,-626.4860,-89.9040,0.6006,76.7946,-10.5788,-32.324100 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [REUN49] -# W [REUN92] - +title=Reseau geodesique francais 1993 +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau geodesique francais de Guyane 1995 +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=RGM04 (Reseau Geodesique de Mayotte 2004) +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau Geodesique de Nouvelle-Caledonie +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=RGPF (Reseau Geodesique de Polynesie Francaise) +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau geodesique Reunion 1992 +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau Geodesique Saint-Pierre-et-Miquelon (2006) +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau Geodesique des TAAF (2007) +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=RRAF 1991 (Reseau de Reference des Antilles Francaises) +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=SAT84 (Rurutu) Iles Australes +proj=geocent +towgs84=202.1300,174.6000,-15.7400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=SHOM 1984 Martinique Montagne Du Vauclin +proj=geocent +towgs84=189.5060,486.5470,148.7830 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Ile de Saint-Paul 1969 +proj=geocent +towgs84=225.5710,-346.6080,-46.5670 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=St Pierre et Miquelon 1950 +proj=geocent +towgs84=-95.5930,573.7630,173.4420,-0.9602,1.2510,-1.3918,42.626500 +a=6378206.4000 +rf=294.9786982000000 +units=m +no_defs <> -# W [SYSLNCAR] - +title=Raiatea - Tahaa 51-54 (Tahaa, Base Terme Est) +proj=geocent +towgs84=72.4380,345.9180,79.4860,-1.6045,-0.8823,-0.5565,1.374600 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Tahiti-Terme Nord 1951 +proj=geocent +towgs84=162.0000,117.0000,154.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=IGN79 (Tahiti) Iles de la Societe +proj=geocent +towgs84=221.5250,152.9480,176.7680,2.3847,1.3896,0.8770,11.474100 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [TAKA69] - +title=Tanna Bloc Sud +proj=geocent +towgs84=-139.0000,-967.0000,436.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Pointe Geologie - Perroud 1950 +proj=geocent +towgs84=324.9120,153.2820,172.0260 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [TIKE50] -# W [TIKE60] -# W [TROM56] - +title=MHPF 1969 (Tubuai) Iles Australes +proj=geocent +towgs84=237.1700,171.6100,-77.8400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [TURI69] -# W [WALL76] - +title=Wallis-Uvea 1978 (MOP78) +proj=geocent +towgs84=253.0000,-133.0000,-127.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=World Geodetic System 1972 +proj=geocent +towgs84=0.0000,12.0000,6.0000 +a=6378135.0000 +rf=298.2600000000000 +units=m +no_defs <> - +title=World Geodetic System 1984 +proj=geocent +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> -# W [AMANU49GEO] -# W [AMANU63GEO] - +title=Ile d'Amsterdam 1963 +proj=longlat +towgs84=109.7530,-528.1330,-362.2440 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [ANAA47GEO] - +title=MOP92 (Anaa) Tuamotu +proj=longlat +towgs84=1.5000,3.8400,4.8100 +a=6378137.0000 +rf=298.2572235630000 +units=m +no_defs <> -# W [APAT48GEO] -# W [APAT49GEO] - +title=MOP86 (Apataki, Rapa, Hao) Tuamotu +proj=longlat +towgs84=216.8400,118.8100,19.6100 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Ancienne Triangulation des Ingenieurs +proj=longlat +towgs84=1127.0000,22.0000,57.0000 +a=6376523.0000 +rf=308.6400000000000 +units=m +no_defs <> -# W [BASSASGEO] -# W [BIEN55GEO] - +title=Cadastre 1997 +proj=longlat +towgs84=-381.7880,-57.5010,-256.6730 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [CADA80GEO] -# W [CASS1733GEO] -# W [CLIP67GEO] - +title=Crozet 1963 +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Guyane CSG67 +proj=longlat +towgs84=-193.0660,236.9930,105.4470,0.4814,-0.8074,0.1276,1.564900 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=ED50 +proj=longlat +towgs84=-84.0000,-97.0000,-117.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=EFATE-IGN 1957 +proj=longlat +towgs84=-127.0000,-769.0000,472.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=ETRS89 geographiques (dms) +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> -# W [EUROPA54GEO] -# W [FAKA50GEO] -# W [FANGA50GEO] -# W [FANGA64GEO] -# W [FANGA651GEO] -# W [FANGA652GEO] -# W [FANGA66GEO] - +title=MOP84 (Fangataufa 1984) +proj=longlat +towgs84=150.5700,158.3300,118.3200 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [GLOR77GEO] - +title=Guadeloupe Ste Anne +proj=longlat +towgs84=-472.2900,-5.6300,-304.1200,0.4362,-0.8374,0.2563,1.898400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Guadeloupe Fort Marigot +proj=longlat +towgs84=136.5960,248.1480,-429.7890 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [HAO49GEO] -# W [HAO58GEO] -# W [HAO67GEO] -# W [HARA49GEO] -# W [HIKU50GEO] -# W [HIVA60GEO] -# W [HIVA67GEO] - +title=IGN 1963 (Hiva Oa, Tahuata, Mohotani) +proj=longlat +towgs84=410.7210,55.0490,80.7460,-2.5779,-2.3514,-0.6664,17.331100 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=IGN 1972 Grande-Terre / Ile des Pins +proj=longlat +towgs84=-11.6400,-348.6000,291.6800 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [JULES55GEO] - +title=MHPF70 (Kauehi) Tuamotu +proj=longlat +towgs84=126.7400,300.1000,-75.4900 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Kerguelen - K0 +proj=longlat +towgs84=144.8990,-186.7700,100.9230 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Lifou - Iles Loyaute (IGN56) +proj=longlat +towgs84=336.0000,223.0000,-231.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Nouvelle Triangulation du Grand Duche du Luxembourg +proj=longlat +towgs84=-192.9860,13.6730,-39.3090,-0.4099,-2.9332,2.6881,0.430000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [MAKE50GEO] -# W [MANGA51GEO] - +title=Mare - Iles Loyaute (IGN53) +proj=longlat +towgs84=287.0000,178.0000,-136.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=IGN 1972 (Eiao, Hiva Oa, Mohotani) Marquises +proj=longlat +towgs84=327.8400,-14.9600,59.3300 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Martinique Fort-Desaix +proj=longlat +towgs84=126.9260,547.9390,130.4090,-2.7867,5.1612,-0.8584,13.822650 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [MAUPITIGEO] - +title=Mayotte Combani +proj=longlat +towgs84=-599.9280,-275.5520,-195.6650,-0.0835,-0.4715,0.0602,49.281400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=MHEFO 1955 (Fatu Huku) +proj=longlat +towgs84=347.1030,1078.1250,2623.9220,33.8875,-70.6773,9.3943,186.074000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [MHEFO55MGEO] - +title=MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles) +proj=longlat +towgs84=338.0800,212.5800,-296.1700 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Moorea 1987 +proj=longlat +towgs84=215.9820,149.5930,176.2290,3.2624,1.6920,1.1571,10.477300 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=MOP90 (Tetiaroa) Iles de la Societe +proj=longlat +towgs84=217.0370,86.9590,23.9560 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [MURU51GEO] -# W [MURU59GEO] -# W [MURU62GEO] -# W [MURU78GEO] -# W [NC51GEO] -# W [NOVA53GEO] - +title=Nouvelle Triangulation Francaise Greenwich degres sexagesimaux +proj=longlat +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +units=m +no_defs <> - +title=Nouvelle Triangulation Francaise Paris grades +proj=longlat +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +units=m +no_defs <> - +title=IGN 1972 Nuku Hiva +proj=longlat +towgs84=165.7320,216.7200,180.5050,-0.6434,-0.4512,-0.0791,7.420400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=SAT94 (Nukutavake) Tuamotu +proj=longlat +towgs84=197.1600,200.1700,-48.0800 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Ouvea - Iles Loyaute (MHNC 1972 - OUVEA) +proj=longlat +towgs84=-13.0000,-348.0000,292.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [PMAR55GEO] - +title=IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine +proj=longlat +towgs84=65.0300,341.5500,76.6700 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [RAIV54GEO] -# W [RAIV66GEO] -# W [RANGI47GEO] -# W [RANGI59GEO] -# W [RANGI68GEO] -# W [RAPA55GEO] -# W [RAPA80GEO] - +title=Reunion 1947 +proj=longlat +towgs84=789.5240,-626.4860,-89.9040,0.6006,76.7946,-10.5788,-32.324100 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [REUN49GEO] -# W [REUN92GEO] - +title=Reseau geodesique francais 1993 +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau geodesique francais de Guyane 1995 +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=RGM04 (Reseau Geodesique de Mayotte 2004) +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau Geodesique de Nouvelle-Caledonie +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=RGPF (Reseau Geodesique de Polynesie Francaise) +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau geodesique de la Reunion 1992 +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Saint-Pierre-et-Miquelon (2006) +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Reseau Geodesique des TAAF (2007) (dms) +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=SAT84 (Rurutu) Iles Australes +proj=longlat +towgs84=202.1300,174.6000,-15.7400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=SHOM 1984 Martinique Montagne Du Vauclin +proj=longlat +towgs84=189.5060,486.5470,148.7830 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Ile de Saint-Paul 1969 +proj=longlat +towgs84=225.5710,-346.6080,-46.5670 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=St Pierre et Miquelon 1950 +proj=longlat +towgs84=-95.5930,573.7630,173.4420,-0.9602,1.2510,-1.3918,42.626500 +a=6378206.4000 +rf=294.9786982000000 +units=m +no_defs <> -# W [SYSLNGEO] - +title=Raiatea - Tahaa 51-54 (Tahaa, Base Terme Est) +proj=longlat +towgs84=72.4380,345.9180,79.4860,-1.6045,-0.8823,-0.5565,1.374600 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Tahiti-Terme Nord 1951 +proj=longlat +towgs84=162.0000,117.0000,154.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=IGN79 (Tahiti) Iles de la Societe +proj=longlat +towgs84=221.5250,152.9480,176.7680,2.3847,1.3896,0.8770,11.474100 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [TAKA69GEO] - +title=Tanna Bloc Sud +proj=longlat +towgs84=-139.0000,-967.0000,436.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=Pointe Geologie - Perroud 1950 +proj=longlat +towgs84=324.9120,153.2820,172.0260 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [TIKE50GEO] -# W [TIKE60GEO] -# W [TROM56GEO] - +title=MHPF 1969 (Tubuai) Iles Australes +proj=longlat +towgs84=237.1700,171.6100,-77.8400 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> -# W [TURI69GEO] -# W [VAITAPEGEO] -# W [WALL76GEO] - +title=Wallis - Uvea 1978 (MOP78) +proj=longlat +towgs84=253.0000,-133.0000,-127.0000 +a=6378388.0000 +rf=297.0000000000000 +units=m +no_defs <> - +title=WGS72 +proj=longlat +towgs84=0.0000,12.0000,6.0000 +a=6378135.0000 +rf=298.2600000000000 +units=m +no_defs <> - +title=World Geodetic System 1984 +proj=longlat +a=6378137.0000 +rf=298.2572221010000 +units=m +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +no_defs <> - +title=Reseau de reference des Antilles francaises (1988-1991) +proj=longlat +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> - +title=Systeme CIO-BIH +proj=longlat +towgs84=0.0000,0.0000,0.5000,0.0000,0.0000,0.0140,-0.100000 +a=6378137.0000 +rf=298.2572221010000 +units=m +no_defs <> -# W [AMANU63UTM7S] - +title=Amsterdam 1963 +proj=tmerc +towgs84=109.7530,-528.1330,-362.2440 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=75.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> -# W [ANAA47UTM6S] - +title=MOP92 (Anaa) Tuamotu - UTM fuseau 6 Sud +proj=tmerc +towgs84=1.5000,3.8400,4.8100 +a=6378137.0000 +rf=298.2572235630000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=MOP86 (Apataki, Rapa, Hao) Tuamotu - UTM fuseau 6 Sud +proj=tmerc +towgs84=216.8400,118.8100,19.6100 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=MOP86 (Apataki, Rapa, Hao) Tuamotu - UTM fuseau 7 Sud +proj=tmerc +towgs84=216.8400,118.8100,19.6100 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> -# W [BASSASUTM37S] - +title=Cadastre 1997 - UTM fuseau 38 Sud +proj=tmerc +towgs84=-381.7880,-57.5010,-256.6730 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=45.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> -# W [CADA80UTM7S] -# W [CLIP57UTM12] - +title=Crozet 1963 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=51.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Guyane CSG67 UTM fuseau 21 +proj=tmerc +towgs84=-193.0660,236.9930,105.4470,0.4814,-0.8074,0.1276,1.564900 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-57.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Guyane CSG67 UTM fuseau 22 +proj=tmerc +towgs84=-193.0660,236.9930,105.4470,0.4814,-0.8074,0.1276,1.564900 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-51.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=EFATE-IGN 1957 - UTM fuseau 59 Sud +proj=tmerc +towgs84=-127.0000,-769.0000,472.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=171.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=ETRS89 Lambert Azimutal Equal Area +proj=laea +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=52.000000000 +lon_0=10.000000000 +x_0=4321000.000 +y_0=3210000.000 +units=m +no_defs <> - +title=ETRS89 Lambert Conformal Conic +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=52.000000000 +lon_0=9.999999995 +lat_1=35.000000000 +lat_2=65.000000000 +x_0=4000000.000 +y_0=2800000.000 +units=m +no_defs <> -# W [FAKA50UTM6S] -# W [FANGA64UTM7S] -# W [FANGA651U7S] -# W [FANGA652U7S] -# W [FANGA66UTM7S] - +title=Fangataufa 1984 - UTM fuseau 7 Sud +proj=tmerc +towgs84=150.5700,158.3300,118.3200 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Geoportail - Antilles francaises +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=15.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Amsterdam et Saint-Paul +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=-38.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Crozet +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=-46.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - France metropolitaine +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=46.500000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Guyane +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=4.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Kerguelen +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=-49.500000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Mayotte +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=-12.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Nouvelle-Caledonie +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=-22.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Polynesie francaise +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=-15.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Reunion et dependances +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=-21.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Saint-Pierre et Miquelon +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=47.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Geoportail - Wallis et Futuna +proj=eqc +nadgrids=null +wktext +towgs84=0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.000000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=-14.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> -# W [GLOR77UTM38S] - +title=Guadeloupe Ste Anne +proj=tmerc +towgs84=-472.2900,-5.6300,-304.1200,0.4362,-0.8374,0.2563,1.898400 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Guadeloupe Fort Marigot +proj=tmerc +towgs84=136.5960,248.1480,-429.7890 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> -# W [HAO58UTM7S] -# W [HAO67UTM7S] -# W [HARA49UTM7S] -# W [HIKU50UTM7S] -# W [HIVA60UTM7S] -# W [HIVA67UTM7S] - +title=IGN 1963 - Hiva Oa, Tahuata, Mohotani - UTM fuseau 7 Sud +proj=tmerc +towgs84=410.7210,55.0490,80.7460,-2.5779,-2.3514,-0.6664,17.331100 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=IGN 1972 - Lambert Nouvelle Caledonie +proj=lcc +towgs84=-11.6400,-348.6000,291.6800 +a=6378388.0000 +rf=297.0000000000000 +lat_0=-21.499999999 +lon_0=166.000000000 +lat_1=-20.666666667 +lat_2=-22.333333333 +x_0=400000.000 +y_0=300000.000 +units=m +no_defs <> - +title=IGN 1972 - UTM fuseau 58 Sud +proj=tmerc +towgs84=-11.6400,-348.6000,291.6800 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=165.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=MHPF70 (Kauehi) Tuamotu - UTM fuseau 6 Sud +proj=tmerc +towgs84=126.7400,300.1000,-75.4900 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Kerguelen 1962 +proj=tmerc +towgs84=144.8990,-186.7700,100.9230 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=69.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Lambert I +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=49.500000000 +lon_0=0.000000000 +k_0=0.99987734 +lat_1=49.500000000 +x_0=600000.000 +y_0=200000.000 +units=m +no_defs <> - +title=Lambert I Carto +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=49.500000000 +lon_0=0.000000000 +k_0=0.99987734 +lat_1=49.500000000 +x_0=600000.000 +y_0=1200000.000 +units=m +no_defs <> - +title=Lambert II +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=46.800000000 +lon_0=0.000000000 +k_0=0.99987742 +lat_1=46.800000000 +x_0=600000.000 +y_0=200000.000 +units=m +no_defs <> - +title=Lambert II Carto +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=46.800000000 +lon_0=0.000000000 +k_0=0.99987742 +lat_1=46.800000000 +x_0=600000.000 +y_0=2200000.000 +units=m +no_defs <> - +title=Lambert III +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=44.100000000 +lon_0=0.000000000 +k_0=0.99987750 +lat_1=44.100000000 +x_0=600000.000 +y_0=200000.000 +units=m +no_defs <> - +title=Lambert III Carto +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=44.100000000 +lon_0=0.000000000 +k_0=0.99987750 +lat_1=44.100000000 +x_0=600000.000 +y_0=3200000.000 +units=m +no_defs <> - +title=Lambert IV +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=42.165000000 +lon_0=0.000000000 +k_0=0.99994471 +lat_1=42.165000000 +x_0=234.358 +y_0=185861.369 +units=m +no_defs <> - +title=Lambert IV Carto +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=42.165000000 +lon_0=0.000000000 +k_0=0.99994471 +lat_1=42.165000000 +x_0=234.358 +y_0=4185861.369 +units=m +no_defs <> - +title=Lambert 93 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=46.500000000 +lon_0=3.000000000 +lat_1=44.000000000 +lat_2=49.000000000 +x_0=700000.000 +y_0=6600000.000 +units=m +no_defs <> - +title=Lambert II etendu +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=46.800000000 +lon_0=0.000000000 +k_0=0.99987742 +lat_1=46.800000000 +x_0=600000.000 +y_0=2200000.000 +units=m +no_defs <> - +title=Lambert grand champ +proj=lcc +nadgrids=ntf_r93.gsb,null +wktext +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=47.000000000 +lon_0=0.000000000 +lat_1=45.000000000 +lat_2=49.000000000 +x_0=600000.000 +y_0=600000.000 +units=m +no_defs <> - +title=Luxembourg 1929 +proj=tmerc +towgs84=-192.9860,13.6730,-39.3090,-0.4099,-2.9332,2.6881,0.430000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=49.833333333 +lon_0=6.166666667 +k_0=1.00000000 +x_0=80000.000 +y_0=100000.000 +units=m +no_defs <> -# W [MAKE50UTM7S] -# W [MANGA51U8S] - +title=Mare - Iles Loyaute - UTM fuseau 58 Sud +proj=tmerc +towgs84=287.0000,178.0000,-136.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=165.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Martinique Fort-Desaix +proj=tmerc +towgs84=126.9260,547.9390,130.4090,-2.7867,5.1612,-0.8584,13.822650 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> -# W [MAUPITIUTM5S] - +title=Mayotte Combani +proj=tmerc +towgs84=-599.9280,-275.5520,-195.6650,-0.0835,-0.4715,0.0602,49.281400 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=45.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles) - UTM 8 S +proj=tmerc +towgs84=338.0800,212.5800,-296.1700 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-135.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Geoportail - Monde +proj=mill +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lon_0=0.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs <> - +title=Moorea 1987 - UTM fuseau 6 Sud +proj=tmerc +towgs84=215.9820,149.5930,176.2290,3.2624,1.6920,1.1571,10.477300 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=MOP90 (Tetiaroa) Iles de la Societe - UTM fuseau 6 Sud +proj=tmerc +towgs84=217.0370,86.9590,23.9560 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> -# W [MURU59UTM7S] -# W [MURU62UTM7S] -# W [MURU78UTM7S] -# W [NC51UTM58S] -# W [NOVA53UTM38S] - +title=IGN 1972 Nuku Hiva - UTM fuseau 7 Sud +proj=tmerc +towgs84=165.7320,216.7200,180.5050,-0.6434,-0.4512,-0.0791,7.420400 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=IGN 1994 Nuku Hiva - UTM fuseau 7 Sud +proj=tmerc +towgs84=197.1600,200.1700,-48.0800 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Ouvea - Iles Loyaute - UTM fuseau 58 Sud +proj=tmerc +towgs84=-13.0000,-348.0000,292.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=165.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine - UTM fuseau 5 +proj=tmerc +towgs84=65.0300,341.5500,76.6700 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-153.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> -# W [RAIV54UTM6S] -# W [RAIV66UTM6S] -# W [RANGI47U6S] -# W [RANGI59U6S] -# W [RANGI68U6S] - +title=Reunion Gauss Laborde +proj=gstmerc +towgs84=789.5240,-626.4860,-89.9040,0.6006,76.7946,-10.5788,-32.324100 +a=6378388.0000 +rf=297.0000000000000 +lat_0=-21.116666667 +lon_0=55.533333333 +k_0=1.00000000 +x_0=160000.000 +y_0=50000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 1 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=42.000000000 +lon_0=3.000000000 +lat_1=41.250000000 +lat_2=42.750000000 +x_0=1700000.000 +y_0=1200000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 2 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=43.000000000 +lon_0=3.000000000 +lat_1=42.250000000 +lat_2=43.750000000 +x_0=1700000.000 +y_0=2200000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 3 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=44.000000000 +lon_0=3.000000000 +lat_1=43.250000000 +lat_2=44.750000000 +x_0=1700000.000 +y_0=3200000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 4 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=45.000000000 +lon_0=3.000000000 +lat_1=44.250000000 +lat_2=45.750000000 +x_0=1700000.000 +y_0=4200000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 5 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=46.000000000 +lon_0=3.000000000 +lat_1=45.250000000 +lat_2=46.750000000 +x_0=1700000.000 +y_0=5200000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 6 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=47.000000000 +lon_0=3.000000000 +lat_1=46.250000000 +lat_2=47.750000000 +x_0=1700000.000 +y_0=6200000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 7 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=48.000000000 +lon_0=3.000000000 +lat_1=47.250000000 +lat_2=48.750000000 +x_0=1700000.000 +y_0=7200000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 8 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=49.000000000 +lon_0=3.000000000 +lat_1=48.250000000 +lat_2=49.750000000 +x_0=1700000.000 +y_0=8200000.000 +units=m +no_defs <> - +title=Projection conique conforme Zone 9 +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=50.000000000 +lon_0=3.000000000 +lat_1=49.250000000 +lat_2=50.750000000 +x_0=1700000.000 +y_0=9200000.000 +units=m +no_defs <> - +title=UTM fuseau 38 Sud (Reseau Geodesique de Mayotte 2004) +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=45.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Reseau Geodesique de Nouvelle-Caledonie - Lambert Nouvelle Caledonie +proj=lcc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=-21.499999999 +lon_0=166.000000000 +lat_1=-20.666666667 +lat_2=-22.333333333 +x_0=400000.000 +y_0=300000.000 +units=m +no_defs <> - +title=Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 57 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=159.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 58 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=165.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 59 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=171.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=RGPF - UTM fuseau 5 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-153.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=RGPF - UTM fuseau 6 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=RGPF - UTM fuseau 7 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=RGR92 UTM fuseau 40 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=57.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Saint-Pierre-et-Miquelon (2006) UTM Fuseau 21 Nord +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-57.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=SAT84 (Rurutu) Iles Australes - UTM fuseau 5 Sud +proj=tmerc +towgs84=202.1300,174.6000,-15.7400 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-153.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Saint-Paul 1969 +proj=tmerc +towgs84=225.5710,-346.6080,-46.5670 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=75.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=St Pierre et Miquelon 1950 +proj=tmerc +towgs84=-95.5930,573.7630,173.4420,-0.9602,1.2510,-1.3918,42.626500 +a=6378206.4000 +rf=294.9786982000000 +lat_0=0.000000000 +lon_0=-57.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Tahaa 1951 +proj=tmerc +towgs84=72.4380,345.9180,79.4860,-1.6045,-0.8823,-0.5565,1.374600 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-153.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Tahiti-Terme Nord UTM fuseau 6 Sud +proj=tmerc +towgs84=162.0000,117.0000,154.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Tahiti 1979 +proj=tmerc +towgs84=221.5250,152.9480,176.7680,2.3847,1.3896,0.8770,11.474100 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> -# W [TAKA69UTM6S] - +title=Tanna Bloc Sud - UTM fuseau 59 Sud +proj=tmerc +towgs84=-139.0000,-967.0000,436.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=171.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=Terre Adelie 1950 +proj=stere +towgs84=324.9120,153.2820,172.0260 +a=6378388.0000 +rf=297.0000000000000 +lat_0=-90.000000000 +lon_0=140.000000000 +lat_ts=-67.000000000 +k=0.96027295 +x_0=300000.000 +y_0=-2299363.482 +units=m +no_defs <> -# W [TIKE50UTM6S] -# W [TIKE60UTM6S] - +title=Tubuai - Iles Australes - UTM fuseau 6 Sud +proj=tmerc +towgs84=237.1700,171.6100,-77.8400 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> -# W [TURI69UTM7S] - +title=World Geodetic System 1972 UTM fuseau 01 Sud +proj=tmerc +towgs84=0.0000,12.0000,6.0000 +a=6378135.0000 +rf=298.2600000000000 +lat_0=0.000000000 +lon_0=-177.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 01 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-177.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 01 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-177.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 02 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-171.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 02 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-171.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 03 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-165.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 03 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-165.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 04 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-159.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 04 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-159.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 05 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-153.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 05 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-153.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 06 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 06 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 07 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 07 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 08 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-135.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 08 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-135.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 09 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-129.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 09 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-129.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 10 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-123.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 10 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-123.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 11 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-117.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 11 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-117.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 12 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-111.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 12 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-111.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 13 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-105.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 13 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-105.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 14 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-99.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 14 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-99.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 15 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-93.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 15 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-93.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 16 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-87.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 16 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-87.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 17 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-81.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 17 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-81.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 18 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-75.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 18 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-75.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 19 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-69.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 19 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-69.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 20 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 20 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 20 Nord-Guadeloupe +proj=tmerc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 20 Nord-Martinique +proj=tmerc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 21 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-57.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 21 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-57.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=RGFG95 UTM fuseau 22 Nord-Guyane +proj=tmerc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-51.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 22 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-51.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 22 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-51.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 23 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-45.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 23 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-45.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 24 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-39.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 24 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-39.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 25 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-33.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 25 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-33.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 30d a 24d Ouest +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-27.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 26 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-27.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 26 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-27.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 24d a 18d Ouest +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-21.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 27 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-21.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 27 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-21.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 18d a 12d Ouest +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-15.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 28 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-15.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 28 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-15.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 12d a 6d Ouest +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 29 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 29 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=European Datum 1950 UTM fuseau 30 +proj=tmerc +towgs84=-84.0000,-97.0000,-117.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de -6d a 0d Ouest +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=RGF93 UTM fuseau 30 +proj=tmerc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 30 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1972 UTM fuseau 30 +proj=tmerc +towgs84=0.0000,12.0000,6.0000 +a=6378135.0000 +rf=298.2600000000000 +lat_0=0.000000000 +lon_0=-3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 30 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=-3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=European Datum 1950 UTM fuseau 31 +proj=tmerc +towgs84=-84.0000,-97.0000,-117.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 0d a 6d Est +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=RGF93 UTM fuseau 31 +proj=tmerc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 31 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1972 UTM fuseau 31 +proj=tmerc +towgs84=0.0000,12.0000,6.0000 +a=6378135.0000 +rf=298.2600000000000 +lat_0=0.000000000 +lon_0=3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 31 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=3.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=European Datum 1950 UTM fuseau 32 +proj=tmerc +towgs84=-84.0000,-97.0000,-117.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 6d a 12d Est +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=RGF93 UTM fuseau 32 +proj=tmerc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 32 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1972 UTM fuseau 32 +proj=tmerc +towgs84=0.0000,12.0000,6.0000 +a=6378135.0000 +rf=298.2600000000000 +lat_0=0.000000000 +lon_0=9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 32 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=9.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 12d a 18d Est +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=15.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 33 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=15.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 33 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=15.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 18d a 24d Est +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=21.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 34 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=21.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 34 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=21.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 24d a 30d Est +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=27.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 35 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=27.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 35 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=27.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 30d a 36d Est +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=33.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 36 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=33.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 36 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=33.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 36d a 42d Est +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=39.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 37 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=39.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 37 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=39.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=Europe - de 42d a 48d Est +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=45.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 38 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=45.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 38 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=45.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 39 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=51.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 39 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=51.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 40 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=57.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 40 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=57.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 41 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 41 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=63.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 42 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=69.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 42 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=69.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 43 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=75.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 43 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=75.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 44 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=81.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 44 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=81.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 45 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=87.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 45 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=87.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 46 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=93.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 46 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=93.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 47 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=99.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 47 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=99.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 48 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=105.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 48 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=105.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 49 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=111.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 49 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=111.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 50 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=117.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 50 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=117.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 51 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=123.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 51 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=123.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 52 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=129.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 52 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=129.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 53 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=135.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 53 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=135.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 54 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 54 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=141.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 55 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 55 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=147.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 56 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=153.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 56 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=153.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 57 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=159.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 57 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=159.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 58 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=165.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 58 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=165.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 59 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=171.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 59 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=171.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 60 Sud +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=177.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> - +title=World Geodetic System 1984 UTM fuseau 60 +proj=tmerc +nadgrids=@null +wktext +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=177.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=0.000 +units=m +no_defs <> -# W [VAITAPEUTM5S] -# W [WALL76UTM1S] - +title=Wallis-Uvea 1978 (MOP78) UTM 1 SUD +proj=tmerc +towgs84=253.0000,-133.0000,-127.0000 +a=6378388.0000 +rf=297.0000000000000 +lat_0=0.000000000 +lon_0=-177.000000000 +k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs <> diff --git a/data/Makefile.am b/data/Makefile.am index 74cc0992..9833825f 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,8 +1,8 @@ DATAPATH = $(top_srcdir)/data -pkgdata_DATA = GL27 nad.lst proj_def.dat nad27 nad83 world epsg esri \ +pkgdata_DATA = GL27 nad.lst proj_def.dat nad27 nad83 world esri \ esri.extra other.extra \ - CH IGNF \ + CH \ ITRF2000 ITRF2008 ITRF2014 proj.db SQL_ORDERED_LIST = sql/begin.sql \ @@ -35,9 +35,9 @@ SQL_ORDERED_LIST = sql/begin.sql \ sql/commit.sql EXTRA_DIST = GL27 nad.lst proj_def.dat nad27 nad83 \ - world epsg esri \ + world esri \ esri.extra other.extra \ - CH IGNF \ + CH \ ITRF2000 ITRF2008 ITRF2014 \ CMakeLists.txt tests/test_nodata.gtx null.lla \ generate_all_sql_in.cmake sql_filelist.cmake \ diff --git a/data/epsg b/data/epsg deleted file mode 100644 index 1849ff50..00000000 --- a/data/epsg +++ /dev/null @@ -1,11731 +0,0 @@ - +version=9.2.0 +origin=EPSG +lastupdate=2017-12-17 -# HD1909 -<3819> +proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs <> -# TWD67 -<3821> +proj=longlat +ellps=aust_SA +no_defs <> -# TWD97 -<3824> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# IGRS -<3889> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# MGI 1901 -<3906> +proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +no_defs <> -# Unknown datum based upon the Airy 1830 ellipsoid -<4001> +proj=longlat +ellps=airy +no_defs <> -# Unknown datum based upon the Airy Modified 1849 ellipsoid -<4002> +proj=longlat +ellps=mod_airy +no_defs <> -# Unknown datum based upon the Australian National Spheroid -<4003> +proj=longlat +ellps=aust_SA +no_defs <> -# Unknown datum based upon the Bessel 1841 ellipsoid -<4004> +proj=longlat +ellps=bessel +no_defs <> -# Unknown datum based upon the Bessel Modified ellipsoid -<4005> +proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs <> -# Unknown datum based upon the Bessel Namibia ellipsoid -<4006> +proj=longlat +ellps=bess_nam +no_defs <> -# Unknown datum based upon the Clarke 1858 ellipsoid -<4007> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs <> -# Unknown datum based upon the Clarke 1866 ellipsoid -<4008> +proj=longlat +ellps=clrk66 +no_defs <> -# Unknown datum based upon the Clarke 1866 Michigan ellipsoid -<4009> +proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs <> -# Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid -<4010> +proj=longlat +a=6378300.789 +b=6356566.435 +no_defs <> -# Unknown datum based upon the Clarke 1880 (IGN) ellipsoid -<4011> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Unknown datum based upon the Clarke 1880 (RGS) ellipsoid -<4012> +proj=longlat +ellps=clrk80 +no_defs <> -# Unknown datum based upon the Clarke 1880 (Arc) ellipsoid -<4013> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs <> -# Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid -<4014> +proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs <> -# Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid -<4015> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <> -# Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid -<4016> +proj=longlat +ellps=evrstSS +no_defs <> -# Unknown datum based upon the Everest 1830 Modified ellipsoid -<4018> +proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs <> -# Unknown datum based upon the GRS 1980 ellipsoid -<4019> +proj=longlat +ellps=GRS80 +no_defs <> -# Unknown datum based upon the Helmert 1906 ellipsoid -<4020> +proj=longlat +ellps=helmert +no_defs <> -# Unknown datum based upon the Indonesian National Spheroid -<4021> +proj=longlat +a=6378160 +b=6356774.50408554 +no_defs <> -# Unknown datum based upon the International 1924 ellipsoid -<4022> +proj=longlat +ellps=intl +no_defs <> -# MOLDREF99 -<4023> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Unknown datum based upon the Krassowsky 1940 ellipsoid -<4024> +proj=longlat +ellps=krass +no_defs <> -# Unknown datum based upon the NWL 9D ellipsoid -<4025> +proj=longlat +ellps=WGS66 +no_defs <> -# Unknown datum based upon the Plessis 1817 ellipsoid -<4027> +proj=longlat +a=6376523 +b=6355862.933255573 +no_defs <> -# Unknown datum based upon the Struve 1860 ellipsoid -<4028> +proj=longlat +a=6378298.3 +b=6356657.142669561 +no_defs <> -# Unknown datum based upon the War Office ellipsoid -<4029> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs <> -# Unknown datum based upon the WGS 84 ellipsoid -<4030> +proj=longlat +ellps=WGS84 +no_defs <> -# Unknown datum based upon the GEM 10C ellipsoid -<4031> +proj=longlat +ellps=WGS84 +no_defs <> -# Unknown datum based upon the OSU86F ellipsoid -<4032> +proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs <> -# Unknown datum based upon the OSU91A ellipsoid -<4033> +proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs <> -# Unknown datum based upon the Clarke 1880 ellipsoid -<4034> +proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs <> -# Unknown datum based upon the Authalic Sphere -<4035> +proj=longlat +a=6371000 +b=6371000 +no_defs <> -# Unknown datum based upon the GRS 1967 ellipsoid -<4036> +proj=longlat +ellps=GRS67 +no_defs <> -# Unknown datum based upon the Average Terrestrial System 1977 ellipsoid -<4041> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs <> -# Unknown datum based upon the Everest (1830 Definition) ellipsoid -<4042> +proj=longlat +a=6377299.36559538 +b=6356098.359005156 +no_defs <> -# Unknown datum based upon the WGS 72 ellipsoid -<4043> +proj=longlat +ellps=WGS72 +no_defs <> -# Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid -<4044> +proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs <> -# Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid -<4045> +proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs <> -# RGRDC 2005 -<4046> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Unspecified datum based upon the GRS 1980 Authalic Sphere -<4047> +proj=longlat +a=6371007 +b=6371007 +no_defs <> -# Unspecified datum based upon the Clarke 1866 Authalic Sphere -<4052> +proj=longlat +a=6370997 +b=6370997 +no_defs <> -# Unspecified datum based upon the International 1924 Authalic Sphere -<4053> +proj=longlat +a=6371228 +b=6371228 +no_defs <> -# Unspecified datum based upon the Hughes 1980 ellipsoid -<4054> +proj=longlat +a=6378273 +b=6356889.449 +no_defs <> -# Popular Visualisation CRS -<4055> +proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# SREF98 -<4075> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# REGCAN95 -<4081> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Greek -<4120> +proj=longlat +ellps=bessel +no_defs <> -# GGRS87 -<4121> +proj=longlat +datum=GGRS87 +no_defs <> -# ATS77 -<4122> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs <> -# KKJ -<4123> +proj=longlat +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +no_defs <> -# RT90 -<4124> +proj=longlat +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +no_defs <> -# Samboja -<4125> +proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs <> -# LKS94 (ETRS89) -<4126> +proj=longlat +ellps=GRS80 +no_defs <> -# Tete -<4127> +proj=longlat +ellps=clrk66 +towgs84=-80,-100,-228,0,0,0,0 +no_defs <> -# Madzansua -<4128> +proj=longlat +ellps=clrk66 +no_defs <> -# Observatario -<4129> +proj=longlat +ellps=clrk66 +towgs84=-132,-110,-335,0,0,0,0 +no_defs <> -# Moznet -<4130> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Indian 1960 -<4131> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +no_defs <> -# FD58 -<4132> +proj=longlat +ellps=clrk80 +towgs84=-241.54,-163.64,396.06,0,0,0,0 +no_defs <> -# EST92 -<4133> +proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs <> -# PSD93 -<4134> +proj=longlat +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006 +no_defs <> -# Old Hawaiian -<4135> +proj=longlat +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +no_defs <> -# St. Lawrence Island -<4136> +proj=longlat +ellps=clrk66 +no_defs <> -# St. Paul Island -<4137> +proj=longlat +ellps=clrk66 +no_defs <> -# St. George Island -<4138> +proj=longlat +ellps=clrk66 +no_defs <> -# Puerto Rico -<4139> +proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +no_defs <> -# NAD83(CSRS98) -<4140> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Israel 1993 -<4141> +proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +no_defs <> -# Locodjo 1965 -<4142> +proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs <> -# Abidjan 1987 -<4143> +proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs <> -# Kalianpur 1937 -<4144> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +no_defs <> -# Kalianpur 1962 -<4145> +proj=longlat +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +no_defs <> -# Kalianpur 1975 -<4146> +proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs <> -# Hanoi 1972 -<4147> +proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs <> -# Hartebeesthoek94 -<4148> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# CH1903 -<4149> +proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs <> -# CH1903+ -<4150> +proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs <> -# CHTRF95 -<4151> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# NAD83(HARN) -<4152> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Rassadiran -<4153> +proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs <> -# ED50(ED77) -<4154> +proj=longlat +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +no_defs <> -# Dabola 1981 -<4155> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs <> -# S-JTSK -<4156> +proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 +no_defs <> -# Mount Dillon -<4157> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs <> -# Naparima 1955 -<4158> +proj=longlat +ellps=intl +towgs84=-0.465,372.095,171.736,0,0,0,0 +no_defs <> -# ELD79 -<4159> +proj=longlat +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +no_defs <> -# Chos Malal 1914 -<4160> +proj=longlat +ellps=intl +no_defs <> -# Pampa del Castillo -<4161> +proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +no_defs <> -# Korean 1985 -<4162> +proj=longlat +ellps=bessel +no_defs <> -# Yemen NGN96 -<4163> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# South Yemen -<4164> +proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs <> -# Bissau -<4165> +proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs <> -# Korean 1995 -<4166> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# NZGD2000 -<4167> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Accra -<4168> +proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs <> -# American Samoa 1962 -<4169> +proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs <> -# SIRGAS 1995 -<4170> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# RGF93 -<4171> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# POSGAR -<4172> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# IRENET95 -<4173> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Sierra Leone 1924 -<4174> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs <> -# Sierra Leone 1968 -<4175> +proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs <> -# Australian Antarctic -<4176> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Pulkovo 1942(83) -<4178> +proj=longlat +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +no_defs <> -# Pulkovo 1942(58) -<4179> +proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs <> -# EST97 -<4180> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Luxembourg 1930 -<4181> +proj=longlat +ellps=intl +towgs84=-189.6806,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +no_defs <> -# Azores Occidental 1939 -<4182> +proj=longlat +ellps=intl +towgs84=-425,-169,81,0,0,0,0 +no_defs <> -# Azores Central 1948 -<4183> +proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +no_defs <> -# Azores Oriental 1940 -<4184> +proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +no_defs <> -# Madeira 1936 -<4185> +proj=longlat +ellps=intl +no_defs <> -# OSNI 1952 -<4188> +proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs <> -# REGVEN -<4189> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# POSGAR 98 -<4190> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Albanian 1987 -<4191> +proj=longlat +ellps=krass +towgs84=-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703 +no_defs <> -# Douala 1948 -<4192> +proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +no_defs <> -# Manoca 1962 -<4193> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs <> -# Qornoq 1927 -<4194> +proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs <> -# Scoresbysund 1952 -<4195> +proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs <> -# Ammassalik 1958 -<4196> +proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs <> -# Garoua -<4197> +proj=longlat +ellps=clrk80 +no_defs <> -# Kousseri -<4198> +proj=longlat +ellps=clrk80 +no_defs <> -# Egypt 1930 -<4199> +proj=longlat +ellps=intl +no_defs <> -# Pulkovo 1995 -<4200> +proj=longlat +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +no_defs <> -# Adindan -<4201> +proj=longlat +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +no_defs <> -# AGD66 -<4202> +proj=longlat +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +no_defs <> -# AGD84 -<4203> +proj=longlat +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +no_defs <> -# Ain el Abd -<4204> +proj=longlat +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +no_defs <> -# Afgooye -<4205> +proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs <> -# Agadez -<4206> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Lisbon -<4207> +proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +no_defs <> -# Aratu -<4208> +proj=longlat +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +no_defs <> -# Arc 1950 -<4209> +proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +no_defs <> -# Arc 1960 -<4210> +proj=longlat +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +no_defs <> -# Batavia -<4211> +proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +no_defs <> -# Barbados 1938 -<4212> +proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +no_defs <> -# Beduaram -<4213> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +no_defs <> -# Beijing 1954 -<4214> +proj=longlat +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +no_defs <> -# Belge 1950 -<4215> +proj=longlat +ellps=intl +no_defs <> -# Bermuda 1957 -<4216> +proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +no_defs <> -# Bogota 1975 -<4218> +proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +no_defs <> -# Bukit Rimpah -<4219> +proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs <> -# Camacupa -<4220> +proj=longlat +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +no_defs <> -# Campo Inchauspe -<4221> +proj=longlat +ellps=intl +towgs84=-148,136,90,0,0,0,0 +no_defs <> -# Cape -<4222> +proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +no_defs <> -# Carthage -<4223> +proj=longlat +datum=carthage +no_defs <> -# Chua -<4224> +proj=longlat +ellps=intl +towgs84=-143.87,243.37,-33.52,0,0,0,0 +no_defs <> -# Corrego Alegre 1970-72 -<4225> +proj=longlat +ellps=intl +towgs84=-205.57,168.77,-4.12,0,0,0,0 +no_defs <> -# Cote d'Ivoire -<4226> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Deir ez Zor -<4227> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +no_defs <> -# Douala -<4228> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Egypt 1907 -<4229> +proj=longlat +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +no_defs <> -# ED50 -<4230> +proj=longlat +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +no_defs <> -# ED87 -<4231> +proj=longlat +ellps=intl +towgs84=-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218 +no_defs <> -# Fahud -<4232> +proj=longlat +ellps=clrk80 +towgs84=-333.102,-11.02,230.69,0,0,0.554,0.219 +no_defs <> -# Gandajika 1970 -<4233> +proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs <> -# Garoua -<4234> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Guyane Francaise -<4235> +proj=longlat +ellps=intl +no_defs <> -# Hu Tzu Shan 1950 -<4236> +proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs <> -# HD72 -<4237> +proj=longlat +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0,0,0,0 +no_defs <> -# ID74 -<4238> +proj=longlat +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +no_defs <> -# Indian 1954 -<4239> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +no_defs <> -# Indian 1975 -<4240> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +no_defs <> -# Jamaica 1875 -<4241> +proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs <> -# JAD69 -<4242> +proj=longlat +ellps=clrk66 +towgs84=70,207,389.5,0,0,0,0 +no_defs <> -# Kalianpur 1880 -<4243> +proj=longlat +a=6377299.36559538 +b=6356098.359005156 +no_defs <> -# Kandawala -<4244> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +no_defs <> -# Kertau 1968 -<4245> +proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs <> -# KOC -<4246> +proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +no_defs <> -# La Canoa -<4247> +proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs <> -# PSAD56 -<4248> +proj=longlat +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +no_defs <> -# Lake -<4249> +proj=longlat +ellps=intl +no_defs <> -# Leigon -<4250> +proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs <> -# Liberia 1964 -<4251> +proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs <> -# Lome -<4252> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Luzon 1911 -<4253> +proj=longlat +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +no_defs <> -# Hito XVIII 1963 -<4254> +proj=longlat +ellps=intl +towgs84=16,196,93,0,0,0,0 +no_defs <> -# Herat North -<4255> +proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs <> -# Mahe 1971 -<4256> +proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs <> -# Makassar -<4257> +proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs <> -# ETRS89 -<4258> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Malongo 1987 -<4259> +proj=longlat +ellps=intl +towgs84=-254.1,-5.36,-100.29,0,0,0,0 +no_defs <> -# Manoca -<4260> +proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs <> -# Merchich -<4261> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs <> -# Massawa -<4262> +proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs <> -# Minna -<4263> +proj=longlat +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +no_defs <> -# Mhast -<4264> +proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs <> -# Monte Mario -<4265> +proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +no_defs <> -# M'poraloko -<4266> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +no_defs <> -# NAD27 -<4267> +proj=longlat +datum=NAD27 +no_defs <> -# NAD27 Michigan -<4268> +proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs <> -# NAD83 -<4269> +proj=longlat +datum=NAD83 +no_defs <> -# Nahrwan 1967 -<4270> +proj=longlat +ellps=clrk80 +towgs84=-249,-156,381,0,0,0,0 +no_defs <> -# Naparima 1972 -<4271> +proj=longlat +ellps=intl +towgs84=-10,375,165,0,0,0,0 +no_defs <> -# NZGD49 -<4272> +proj=longlat +datum=nzgd49 +no_defs <> -# NGO 1948 -<4273> +proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs <> -# Datum 73 -<4274> +proj=longlat +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +no_defs <> -# NTF -<4275> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs <> -# NSWC 9Z-2 -<4276> +proj=longlat +ellps=WGS66 +no_defs <> -# OSGB 1936 -<4277> +proj=longlat +datum=OSGB36 +no_defs <> -# OSGB70 -<4278> +proj=longlat +ellps=airy +no_defs <> -# OS(SN)80 -<4279> +proj=longlat +ellps=airy +no_defs <> -# Padang -<4280> +proj=longlat +ellps=bessel +no_defs <> -# Palestine 1923 -<4281> +proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,1 +no_defs <> -# Pointe Noire -<4282> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-148,51,-291,0,0,0,0 +no_defs <> -# GDA94 -<4283> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Pulkovo 1942 -<4284> +proj=longlat +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +no_defs <> -# Qatar 1974 -<4285> +proj=longlat +ellps=intl +towgs84=-128.16,-282.42,21.93,0,0,0,0 +no_defs <> -# Qatar 1948 -<4286> +proj=longlat +ellps=helmert +no_defs <> -# Qornoq -<4287> +proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs <> -# Loma Quintana -<4288> +proj=longlat +ellps=intl +no_defs <> -# Amersfoort -<4289> +proj=longlat +ellps=bessel +towgs84=565.2369,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +no_defs <> -# SAD69 -<4291> +proj=longlat +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +no_defs <> -# Sapper Hill 1943 -<4292> +proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs <> -# Schwarzeck -<4293> +proj=longlat +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +no_defs <> -# Segora -<4294> +proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +no_defs <> -# Serindung -<4295> +proj=longlat +ellps=bessel +no_defs <> -# Sudan -<4296> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Tananarive -<4297> +proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs <> -# Timbalai 1948 -<4298> +proj=longlat +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +no_defs <> -# TM65 -<4299> +proj=longlat +datum=ire65 +no_defs <> -# TM75 -<4300> +proj=longlat +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs <> -# Tokyo -<4301> +proj=longlat +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +no_defs <> -# Trinidad 1903 -<4302> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +no_defs <> -# TC(1948) -<4303> +proj=longlat +ellps=helmert +no_defs <> -# Voirol 1875 -<4304> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs <> -# Bern 1938 -<4306> +proj=longlat +ellps=bessel +no_defs <> -# Nord Sahara 1959 -<4307> +proj=longlat +ellps=clrk80 +towgs84=-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +no_defs <> -# RT38 -<4308> +proj=longlat +ellps=bessel +no_defs <> -# Yacare -<4309> +proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs <> -# Yoff -<4310> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-30,190,89,0,0,0,0 +no_defs <> -# Zanderij -<4311> +proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs <> -# MGI -<4312> +proj=longlat +datum=hermannskogel +no_defs <> -# Belge 1972 -<4313> +proj=longlat +ellps=intl +towgs84=-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747 +no_defs <> -# DHDN -<4314> +proj=longlat +datum=potsdam +no_defs <> -# Conakry 1905 -<4315> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs <> -# Dealul Piscului 1930 -<4316> +proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +no_defs <> -# Dealul Piscului 1970 -<4317> +proj=longlat +ellps=krass +towgs84=28,-121,-77,0,0,0,0 +no_defs <> -# NGN -<4318> +proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +no_defs <> -# KUDAMS -<4319> +proj=longlat +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +no_defs <> -# WGS 72 -<4322> +proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +no_defs <> -# WGS 72BE -<4324> +proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs <> -# WGS 84 -<4326> +proj=longlat +datum=WGS84 +no_defs <> -# RGSPM06 -<4463> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# RGM04 -<4470> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Cadastre 1997 -<4475> +proj=longlat +ellps=intl +towgs84=-381.788,-57.501,-256.673,0,0,0,0 +no_defs <> -# Mexico ITRF92 -<4483> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# China Geodetic Coordinate System 2000 -<4490> +proj=longlat +ellps=GRS80 +no_defs <> -# New Beijing -<4555> +proj=longlat +ellps=krass +no_defs <> -# RRAF 1991 -<4558> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Anguilla 1957 -<4600> +proj=longlat +ellps=clrk80 +no_defs <> -# Antigua 1943 -<4601> +proj=longlat +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +no_defs <> -# Dominica 1945 -<4602> +proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs <> -# Grenada 1953 -<4603> +proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs <> -# Montserrat 1958 -<4604> +proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs <> -# St. Kitts 1955 -<4605> +proj=longlat +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +no_defs <> -# St. Lucia 1955 -<4606> +proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs <> -# St. Vincent 1945 -<4607> +proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +no_defs <> -# NAD27(76) -<4608> +proj=longlat +ellps=clrk66 +no_defs <> -# NAD27(CGQ77) -<4609> +proj=longlat +ellps=clrk66 +no_defs <> -# Xian 1980 -<4610> +proj=longlat +a=6378140 +b=6356755.288157528 +no_defs <> -# Hong Kong 1980 -<4611> +proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.243649,-1.158827,-1.094246 +no_defs <> -# JGD2000 -<4612> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Segara -<4613> +proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +no_defs <> -# QND95 -<4614> +proj=longlat +ellps=intl +towgs84=-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065 +no_defs <> -# Porto Santo -<4615> +proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +no_defs <> -# Selvagem Grande -<4616> +proj=longlat +ellps=intl +towgs84=-289,-124,60,0,0,0,0 +no_defs <> -# NAD83(CSRS) -<4617> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# SAD69 -<4618> +proj=longlat +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +no_defs <> -# SWEREF99 -<4619> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Point 58 -<4620> +proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0 +no_defs <> -# Fort Marigot -<4621> +proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 +no_defs <> -# Guadeloupe 1948 -<4622> +proj=longlat +ellps=intl +towgs84=-467,-16,-300,0,0,0,0 +no_defs <> -# CSG67 -<4623> +proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 +no_defs <> -# RGFG95 -<4624> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Martinique 1938 -<4625> +proj=longlat +ellps=intl +towgs84=186,482,151,0,0,0,0 +no_defs <> -# Reunion 1947 -<4626> +proj=longlat +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +no_defs <> -# RGR92 -<4627> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Tahiti 52 -<4628> +proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +no_defs <> -# Tahaa 54 -<4629> +proj=longlat +ellps=intl +towgs84=72.438,345.918,79.486,1.6045,0.8823,0.5565,1.3746 +no_defs <> -# IGN72 Nuku Hiva -<4630> +proj=longlat +ellps=intl +towgs84=84,274,65,0,0,0,0 +no_defs <> -# K0 1949 -<4631> +proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs <> -# Combani 1950 -<4632> +proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +no_defs <> -# IGN56 Lifou -<4633> +proj=longlat +ellps=intl +towgs84=335.47,222.58,-230.94,0,0,0,0 +no_defs <> -# IGN72 Grand Terre -<4634> +proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +no_defs <> -# ST87 Ouvea -<4635> +proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +no_defs <> -# Petrels 1972 -<4636> +proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +no_defs <> -# Perroud 1950 -<4637> +proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +no_defs <> -# Saint Pierre et Miquelon 1950 -<4638> +proj=longlat +ellps=clrk66 +towgs84=11.363,424.148,373.13,0,0,0,0 +no_defs <> -# MOP78 -<4639> +proj=longlat +ellps=intl +towgs84=253,-132,-127,0,0,0,0 +no_defs <> -# RRAF 1991 -<4640> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# IGN53 Mare -<4641> +proj=longlat +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +no_defs <> -# ST84 Ile des Pins -<4642> +proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +no_defs <> -# ST71 Belep -<4643> +proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002 +no_defs <> -# NEA74 Noumea -<4644> +proj=longlat +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +no_defs <> -# RGNC 1991 -<4645> +proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Grand Comoros -<4646> +proj=longlat +ellps=intl +towgs84=-963,510,-359,0,0,0,0 +no_defs <> -# Reykjavik 1900 -<4657> +proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0 +no_defs <> -# Hjorsey 1955 -<4658> +proj=longlat +ellps=intl +towgs84=-73,47,-83,0,0,0,0 +no_defs <> -# ISN93 -<4659> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Helle 1954 -<4660> +proj=longlat +ellps=intl +towgs84=982.6087,552.753,-540.873,6.6816266,-31.6114924,-19.84816,16.805 +no_defs <> -# LKS92 -<4661> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# IGN72 Grande Terre -<4662> +proj=longlat +ellps=intl +towgs84=-11.64,-348.6,291.98,0,0,0,0 +no_defs <> -# Porto Santo 1995 -<4663> +proj=longlat +ellps=intl +towgs84=-502.862,-247.438,312.724,0,0,0,0 +no_defs <> -# Azores Oriental 1995 -<4664> +proj=longlat +ellps=intl +towgs84=-204.619,140.176,55.226,0,0,0,0 +no_defs <> -# Azores Central 1995 -<4665> +proj=longlat +ellps=intl +towgs84=-106.226,166.366,-37.893,0,0,0,0 +no_defs <> -# Lisbon 1890 -<4666> +proj=longlat +ellps=bessel +towgs84=508.088,-191.042,565.223,0,0,0,0 +no_defs <> -# IKBD-92 -<4667> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# ED79 -<4668> +proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 +no_defs <> -# LKS94 -<4669> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# IGM95 -<4670> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Voirol 1879 -<4671> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Chatham Islands 1971 -<4672> +proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +no_defs <> -# Chatham Islands 1979 -<4673> +proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,0,0,0.554,0.2263 +no_defs <> -# SIRGAS 2000 -<4674> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Guam 1963 -<4675> +proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0 +no_defs <> -# Vientiane 1982 -<4676> +proj=longlat +ellps=krass +no_defs <> -# Lao 1993 -<4677> +proj=longlat +ellps=krass +no_defs <> -# Lao 1997 -<4678> +proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0 +no_defs <> -# Jouik 1961 -<4679> +proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0 +no_defs <> -# Nouakchott 1965 -<4680> +proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0 +no_defs <> -# Mauritania 1999 -<4681> +proj=longlat +ellps=clrk80 +no_defs <> -# Gulshan 303 -<4682> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=283.7,735.9,261.1,0,0,0,0 +no_defs <> -# PRS92 -<4683> +proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +no_defs <> -# Gan 1970 -<4684> +proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs <> -# Gandajika -<4685> +proj=longlat +ellps=intl +no_defs <> -# MAGNA-SIRGAS -<4686> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# RGPF -<4687> +proj=longlat +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +no_defs <> -# Fatu Iva 72 -<4688> +proj=longlat +ellps=intl +towgs84=347.103,1078.125,2623.922,-33.8875,70.6773,-9.3943,186.074 +no_defs <> -# IGN63 Hiva Oa -<4689> +proj=longlat +ellps=intl +towgs84=410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311 +no_defs <> -# Tahiti 79 -<4690> +proj=longlat +ellps=intl +towgs84=221.525,152.948,176.768,-2.3847,-1.3896,-0.877,11.4741 +no_defs <> -# Moorea 87 -<4691> +proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +no_defs <> -# Maupiti 83 -<4692> +proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +no_defs <> -# Nakhl-e Ghanem -<4693> +proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +no_defs <> -# POSGAR 94 -<4694> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Katanga 1955 -<4695> +proj=longlat +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +no_defs <> -# Kasai 1953 -<4696> +proj=longlat +ellps=clrk80 +no_defs <> -# IGC 1962 6th Parallel South -<4697> +proj=longlat +ellps=clrk80 +no_defs <> -# IGN 1962 Kerguelen -<4698> +proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs <> -# Le Pouce 1934 -<4699> +proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +no_defs <> -# IGN Astro 1960 -<4700> +proj=longlat +ellps=clrk80 +no_defs <> -# IGCB 1955 -<4701> +proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +no_defs <> -# Mauritania 1999 -<4702> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Mhast 1951 -<4703> +proj=longlat +ellps=clrk80 +no_defs <> -# Mhast (onshore) -<4704> +proj=longlat +ellps=intl +no_defs <> -# Mhast (offshore) -<4705> +proj=longlat +ellps=intl +no_defs <> -# Egypt Gulf of Suez S-650 TL -<4706> +proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +no_defs <> -# Tern Island 1961 -<4707> +proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0 +no_defs <> -# Cocos Islands 1965 -<4708> +proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0 +no_defs <> -# Iwo Jima 1945 -<4709> +proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +no_defs <> -# Astro DOS 71 -<4710> +proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +no_defs <> -# Marcus Island 1952 -<4711> +proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 +no_defs <> -# Ascension Island 1958 -<4712> +proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +no_defs <> -# Ayabelle Lighthouse -<4713> +proj=longlat +ellps=clrk80 +towgs84=-77,-128,142,0,0,0,0 +no_defs <> -# Bellevue -<4714> +proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0 +no_defs <> -# Camp Area Astro -<4715> +proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0 +no_defs <> -# Phoenix Islands 1966 -<4716> +proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0 +no_defs <> -# Cape Canaveral -<4717> +proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 +no_defs <> -# Solomon 1968 -<4718> +proj=longlat +ellps=intl +towgs84=230,-199,-752,0,0,0,0 +no_defs <> -# Easter Island 1967 -<4719> +proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +no_defs <> -# Fiji 1986 -<4720> +proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +no_defs <> -# Fiji 1956 -<4721> +proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +no_defs <> -# South Georgia 1968 -<4722> +proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0 +no_defs <> -# GCGD59 -<4723> +proj=longlat +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +no_defs <> -# Diego Garcia 1969 -<4724> +proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0 +no_defs <> -# Johnston Island 1961 -<4725> +proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 +no_defs <> -# SIGD61 -<4726> +proj=longlat +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +no_defs <> -# Midway 1961 -<4727> +proj=longlat +ellps=intl +towgs84=403,-81,277,0,0,0,0 +no_defs <> -# Pico de las Nieves 1984 -<4728> +proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 +no_defs <> -# Pitcairn 1967 -<4729> +proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +no_defs <> -# Santo 1965 -<4730> +proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no_defs <> -# Viti Levu 1916 -<4731> +proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 +no_defs <> -# Marshall Islands 1960 -<4732> +proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0 +no_defs <> -# Wake Island 1952 -<4733> +proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +no_defs <> -# Tristan 1968 -<4734> +proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0 +no_defs <> -# Kusaie 1951 -<4735> +proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0 +no_defs <> -# Deception Island -<4736> +proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0 +no_defs <> -# Korea 2000 -<4737> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Hong Kong 1963 -<4738> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs <> -# Hong Kong 1963(67) -<4739> +proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0 +no_defs <> -# PZ-90 -<4740> +proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,0,0,0.076,0 +no_defs <> -# FD54 -<4741> +proj=longlat +ellps=intl +no_defs <> -# GDM2000 -<4742> +proj=longlat +ellps=GRS80 +no_defs <> -# Karbala 1979 -<4743> +proj=longlat +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +no_defs <> -# Nahrwan 1934 -<4744> +proj=longlat +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +no_defs <> -# RD/83 -<4745> +proj=longlat +ellps=bessel +no_defs <> -# PD/83 -<4746> +proj=longlat +ellps=bessel +no_defs <> -# GR96 -<4747> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Vanua Levu 1915 -<4748> +proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs <> -# RGNC91-93 -<4749> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# ST87 Ouvea -<4750> +proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +no_defs <> -# Kertau (RSO) -<4751> +proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs <> -# Viti Levu 1912 -<4752> +proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=98,390,-22,0,0,0,0 +no_defs <> -# fk89 -<4753> +proj=longlat +ellps=intl +no_defs <> -# LGD2006 -<4754> +proj=longlat +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +no_defs <> -# DGN95 -<4755> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# VN-2000 -<4756> +proj=longlat +ellps=WGS84 +towgs84=-191.90441429,-39.30318279,-111.45032835,0.00928836,-0.01975479,0.00427372,0.252906278 +no_defs <> -# SVY21 -<4757> +proj=longlat +ellps=WGS84 +no_defs <> -# JAD2001 -<4758> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# NAD83(NSRS2007) -<4759> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# WGS 66 -<4760> +proj=longlat +ellps=WGS66 +no_defs <> -# HTRS96 -<4761> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# BDA2000 -<4762> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Pitcairn 2006 -<4763> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# RSRGD2000 -<4764> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Slovenia 1996 -<4765> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Bern 1898 (Bern) -<4801> +proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +pm=bern +no_defs <> -# Bogota 1975 (Bogota) -<4802> +proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +pm=bogota +no_defs <> -# Lisbon (Lisbon) -<4803> +proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +no_defs <> -# Makassar (Jakarta) -<4804> +proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs <> -# MGI (Ferro) -<4805> +proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +no_defs <> -# Monte Mario (Rome) -<4806> +proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +no_defs <> -# NTF (Paris) -<4807> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs <> -# Padang (Jakarta) -<4808> +proj=longlat +ellps=bessel +pm=jakarta +no_defs <> -# Belge 1950 (Brussels) -<4809> +proj=longlat +ellps=intl +pm=brussels +no_defs <> -# Tananarive (Paris) -<4810> +proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs <> -# Voirol 1875 (Paris) -<4811> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs <> -# Batavia (Jakarta) -<4813> +proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +no_defs <> -# RT38 (Stockholm) -<4814> +proj=longlat +ellps=bessel +pm=stockholm +no_defs <> -# Greek (Athens) -<4815> +proj=longlat +ellps=bessel +pm=athens +no_defs <> -# Carthage (Paris) -<4816> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +pm=paris +no_defs <> -# NGO 1948 (Oslo) -<4817> +proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs <> -# S-JTSK (Ferro) -<4818> +proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 +pm=ferro +no_defs <> -# Nord Sahara 1959 (Paris) -<4819> +proj=longlat +ellps=clrk80 +towgs84=-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +pm=paris +no_defs <> -# Segara (Jakarta) -<4820> +proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +no_defs <> -# Voirol 1879 (Paris) -<4821> +proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs <> -# Sao Tome -<4823> +proj=longlat +ellps=intl +no_defs <> -# Principe -<4824> +proj=longlat +ellps=intl +no_defs <> -# ATF (Paris) -<4901> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.337208333333333 +no_defs <> -# NDG (Paris) -<4902> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs <> -# Madrid 1870 (Madrid) -<4903> +proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid +no_defs <> -# Lisbon 1890 (Lisbon) -<4904> +proj=longlat +ellps=bessel +towgs84=508.088,-191.042,565.223,0,0,0,0 +pm=lisbon +no_defs <> -# PTRA08 -<5013> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Tokyo 1892 -<5132> +proj=longlat +ellps=bessel +no_defs <> -# S-JTSK/05 -<5228> +proj=longlat +ellps=bessel +towgs84=572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378 +no_defs <> -# S-JTSK/05 (Ferro) -<5229> +proj=longlat +ellps=bessel +towgs84=572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378 +pm=ferro +no_defs <> -# SLD99 -<5233> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-0.293,766.95,87.713,0.195704,1.695068,3.473016,-0.039338 +no_defs <> -# GDBD2009 -<5246> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# TUREF -<5252> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# DRUKREF 03 -<5264> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# ISN2004 -<5324> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# POSGAR 2007 -<5340> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# MARGEN -<5354> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# SIRGAS-Chile -<5360> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# CR05 -<5365> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# MACARIO SOLIS -<5371> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Peru96 -<5373> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# SIRGAS-ROU98 -<5381> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# SIRGAS_ES2007.8 -<5393> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Ocotepeque 1935 -<5451> +proj=longlat +ellps=clrk66 +towgs84=205,96,-98,0,0,0,0 +no_defs <> -# Sibun Gorge 1922 -<5464> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs <> -# Panama-Colon 1911 -<5467> +proj=longlat +ellps=clrk66 +no_defs <> -# RGAF09 -<5489> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Corrego Alegre 1961 -<5524> +proj=longlat +ellps=intl +no_defs <> -# SAD69(96) -<5527> +proj=longlat +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +no_defs <> -# PNG94 -<5546> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# UCS-2000 -<5561> +proj=longlat +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +no_defs <> -# FEH2010 -<5593> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# DB_REF -<5681> +proj=longlat +ellps=bessel +no_defs <> -# TGD2005 -<5886> +proj=longlat +ellps=GRS80 +no_defs <> -# CIGD11 -<6135> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Nepal 1981 -<6207> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=293.17,726.18,245.36,0,0,0,0 +no_defs <> -# CGRS93 -<6311> +proj=longlat +ellps=WGS84 +towgs84=8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926 +no_defs <> -# NAD83(2011) -<6318> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(PA11) -<6322> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(MA11) -<6325> +proj=longlat +ellps=GRS80 +no_defs <> -# Mexico ITRF2008 -<6365> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# JGD2011 -<6668> +proj=longlat +ellps=GRS80 +no_defs <> -# RDN2008 -<6706> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# NAD83(CORS96) -<6783> +proj=longlat +ellps=GRS80 +no_defs <> -# Aden 1925 -<6881> +proj=longlat +ellps=clrk80 +towgs84=-24,-203,268,0,0,0,0 +no_defs <> -# Bekaa Valley 1920 -<6882> +proj=longlat +ellps=clrk80 +towgs84=-183,-15,273,0,0,0,0 +no_defs <> -# Bioko -<6883> +proj=longlat +ellps=intl +towgs84=-235,-110,393,0,0,0,0 +no_defs <> -# South East Island 1943 -<6892> +proj=longlat +ellps=clrk80 +towgs84=-43.685,-179.785,-267.721,0,0,0,0 +no_defs <> -# Gambia -<6894> +proj=longlat +ellps=clrk80 +towgs84=-63,176,185,0,0,0,0 +no_defs <> -# IGD05 -<6980> +proj=longlat +ellps=GRS80 +no_defs <> -# IG05 Intermediate CRS -<6983> +proj=longlat +ellps=GRS80 +no_defs <> -# IGD05/12 -<6987> +proj=longlat +ellps=GRS80 +no_defs <> -# IG05/12 Intermediate CRS -<6990> +proj=longlat +ellps=GRS80 +no_defs <> -# RGSPM06 (lon-lat) -<7035> +proj=longlat +ellps=GRS80 +no_defs <> -# RGR92 (lon-lat) -<7037> +proj=longlat +ellps=GRS80 +no_defs <> -# RGM04 (lon-lat) -<7039> +proj=longlat +ellps=GRS80 +no_defs <> -# RGFG95 (lon-lat) -<7041> +proj=longlat +ellps=GRS80 +no_defs <> -# RGTAAF07 -<7073> +proj=longlat +ellps=GRS80 +no_defs <> -# RGF93 (lon-lat) -<7084> +proj=longlat +ellps=GRS80 +no_defs <> -# RGAF09 (lon-lat) -<7086> +proj=longlat +ellps=GRS80 +no_defs <> -# RGTAAF07 (lon-lat) -<7088> +proj=longlat +ellps=GRS80 +no_defs <> -# RGTAAF07 (lon-lat) -<7133> +proj=longlat +ellps=GRS80 +no_defs <> -# IGD05 -<7136> +proj=longlat +ellps=WGS84 +no_defs <> -# IGD05/12 -<7139> +proj=longlat +ellps=WGS84 +no_defs <> -# ONGD14 -<7373> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# GSK-2011 -<7683> +proj=longlat +a=6378136.5 +b=6356751.757955603 +no_defs <> -# Kyrg-06 -<7686> +proj=longlat +ellps=GRS80 +no_defs <> -# BGS2005 -<7798> +proj=longlat +ellps=GRS80 +no_defs <> -# GDA2020 -<7844> +proj=longlat +ellps=GRS80 +no_defs <> -# St. Helena Tritan -<7881> +proj=longlat +ellps=WGS84 +towgs84=-0.077,0.079,0.086,0,0,0,0 +no_defs <> -# SHGD2015 -<7886> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Gusterberg (Ferro) -<8042> +proj=longlat +a=6376045 +b=6355477.112903226 +pm=ferro +no_defs <> -# St. Stephen (Ferro) -<8043> +proj=longlat +a=6376045 +b=6355477.112903226 +pm=ferro +no_defs <> -# ISN2016 -<8086> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(CSRS96) -<8232> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(CSRS)v2 -<8237> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(CSRS)v3 -<8240> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(CSRS)v4 -<8246> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(CSRS)v5 -<8249> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(CSRS)v6 -<8252> +proj=longlat +ellps=GRS80 +no_defs <> -# NAD83(CSRS)v7 -<8255> +proj=longlat +ellps=GRS80 +no_defs <> -# Anguilla 1957 / British West Indies Grid -<2000> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <> -# Antigua 1943 / British West Indies Grid -<2001> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +units=m +no_defs <> -# Dominica 1945 / British West Indies Grid -<2002> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs <> -# Grenada 1953 / British West Indies Grid -<2003> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs <> -# Montserrat 1958 / British West Indies Grid -<2004> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs <> -# St. Kitts 1955 / British West Indies Grid -<2005> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +units=m +no_defs <> -# St. Lucia 1955 / British West Indies Grid -<2006> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs <> -# St. Vincent 45 / British West Indies Grid -<2007> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 2 (deprecated) -<2008> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 3 -<2009> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 4 -<2010> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 5 -<2011> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 6 -<2012> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 7 -<2013> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 8 -<2014> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 9 -<2015> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 10 -<2016> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 8 -<2017> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 9 -<2018> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 10 -<2019> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 11 -<2020> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 12 -<2021> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 13 -<2022> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 14 -<2023> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 15 -<2024> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 16 -<2025> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 17 -<2026> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / UTM zone 15N -<2027> +proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / UTM zone 16N -<2028> +proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / UTM zone 17N -<2029> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / UTM zone 18N -<2030> +proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 17N -<2031> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 18N -<2032> +proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 19N -<2033> +proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 20N -<2034> +proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 21N -<2035> +proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs <> -# NAD83(CSRS98) / New Brunswick Stereo (deprecated) -<2036> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 19N (deprecated) -<2037> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 20N (deprecated) -<2038> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Israel 1993 / Israeli TM Grid -<2039> +proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs <> -# Locodjo 1965 / UTM zone 30N -<2040> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> -# Abidjan 1987 / UTM zone 30N -<2041> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> -# Locodjo 1965 / UTM zone 29N -<2042> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> -# Abidjan 1987 / UTM zone 29N -<2043> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> -# Hanoi 1972 / Gauss-Kruger zone 18 -<2044> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> -# Hanoi 1972 / Gauss-Kruger zone 19 -<2045> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo15 -<2046> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo17 -<2047> +proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo19 -<2048> +proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo21 -<2049> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo23 -<2050> +proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo25 -<2051> +proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo27 -<2052> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo29 -<2053> +proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo31 -<2054> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo33 -<2055> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# CH1903+ / LV95 -<2056> +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,0,0,0,0 +units=m +no_defs <> -# Rassadiran / Nakhl e Taqi -<2057> +proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +gamma=0.5716611944444444 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs <> -# ED50(ED77) / UTM zone 38N -<2058> +proj=utm +zone=38 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs <> -# ED50(ED77) / UTM zone 39N -<2059> +proj=utm +zone=39 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs <> -# ED50(ED77) / UTM zone 40N -<2060> +proj=utm +zone=40 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs <> -# ED50(ED77) / UTM zone 41N -<2061> +proj=utm +zone=41 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs <> -# Madrid 1870 (Madrid) / Spain -<2062> +proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669561 +pm=madrid +units=m +no_defs <> -# Dabola 1981 / UTM zone 28N (deprecated) -<2063> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> -# Dabola 1981 / UTM zone 29N (deprecated) -<2064> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> -# S-JTSK (Ferro) / Krovak -<2065> +proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=570.8,85.7,462.8,4.998,1.587,5.261,3.56 +pm=ferro +units=m +no_defs <> -# Mount Dillon / Tobago Grid -<2066> +proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs <> -# Naparima 1955 / UTM zone 20N -<2067> +proj=utm +zone=20 +ellps=intl +towgs84=-0.465,372.095,171.736,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 5 -<2068> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 6 -<2069> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 7 -<2070> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 8 -<2071> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 9 -<2072> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 10 -<2073> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 11 -<2074> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 12 -<2075> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / Libya zone 13 -<2076> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / UTM zone 32N -<2077> +proj=utm +zone=32 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / UTM zone 33N -<2078> +proj=utm +zone=33 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / UTM zone 34N -<2079> +proj=utm +zone=34 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# ELD79 / UTM zone 35N -<2080> +proj=utm +zone=35 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# Chos Malal 1914 / Argentina 2 -<2081> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Pampa del Castillo / Argentina 2 -<2082> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs <> -# Hito XVIII 1963 / Argentina 2 -<2083> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=16,196,93,0,0,0,0 +units=m +no_defs <> -# Hito XVIII 1963 / UTM zone 19S -<2084> +proj=utm +zone=19 +south +ellps=intl +towgs84=16,196,93,0,0,0,0 +units=m +no_defs <> -# NAD27 / Cuba Norte (deprecated) -<2085> +proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Cuba Sur (deprecated) -<2086> +proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +datum=NAD27 +units=m +no_defs <> -# ELD79 / TM 12 NE -<2087> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs <> -# Carthage / TM 11 NE -<2088> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +datum=carthage +units=m +no_defs <> -# Yemen NGN96 / UTM zone 38N -<2089> +proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Yemen NGN96 / UTM zone 39N -<2090> +proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# South Yemen / Gauss Kruger zone 8 (deprecated) -<2091> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> -# South Yemen / Gauss Kruger zone 9 (deprecated) -<2092> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> -# Hanoi 1972 / GK 106 NE -<2093> +proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> -# WGS 72BE / TM 106 NE -<2094> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# Bissau / UTM zone 28N -<2095> +proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs <> -# Korean 1985 / East Belt -<2096> +proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Central Belt -<2097> +proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / West Belt -<2098> +proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Qatar 1948 / Qatar Grid -<2099> +proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs <> -# GGRS87 / Greek Grid -<2100> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +datum=GGRS87 +units=m +no_defs <> -# Lake / Maracaibo Grid M1 -<2101> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs <> -# Lake / Maracaibo Grid -<2102> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs <> -# Lake / Maracaibo Grid M3 -<2103> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs <> -# Lake / Maracaibo La Rosa Grid -<2104> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs <> -# NZGD2000 / Mount Eden 2000 -<2105> +proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Bay of Plenty 2000 -<2106> +proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Poverty Bay 2000 -<2107> +proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Hawkes Bay 2000 -<2108> +proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Taranaki 2000 -<2109> +proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Tuhirangi 2000 -<2110> +proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Wanganui 2000 -<2111> +proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Wairarapa 2000 -<2112> +proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Wellington 2000 -<2113> +proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Collingwood 2000 -<2114> +proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Nelson 2000 -<2115> +proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Karamea 2000 -<2116> +proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Buller 2000 -<2117> +proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Grey 2000 -<2118> +proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Amuri 2000 -<2119> +proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Marlborough 2000 -<2120> +proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Hokitika 2000 -<2121> +proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Okarito 2000 -<2122> +proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Jacksons Bay 2000 -<2123> +proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Mount Pleasant 2000 -<2124> +proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Gawler 2000 -<2125> +proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Timaru 2000 -<2126> +proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Lindis Peak 2000 -<2127> +proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Mount Nicholas 2000 -<2128> +proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Mount York 2000 -<2129> +proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Observation Point 2000 -<2130> +proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / North Taieri 2000 -<2131> +proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Bluff 2000 -<2132> +proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / UTM zone 58S -<2133> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / UTM zone 59S -<2134> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / UTM zone 60S -<2135> +proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Accra / Ghana National Grid -<2136> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs <> -# Accra / TM 1 NW -<2137> +proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs <> -# NAD27(CGQ77) / Quebec Lambert -<2138> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD83(CSRS98) / SCoPQ zone 2 (deprecated) -<2139> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 3 (deprecated) -<2140> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 4 (deprecated) -<2141> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 5 (deprecated) -<2142> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 6 (deprecated) -<2143> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 7 (deprecated) -<2144> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 8 (deprecated) -<2145> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 9 (deprecated) -<2146> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 10 (deprecated) -<2147> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 21N (deprecated) -<2148> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 18N (deprecated) -<2149> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 17N (deprecated) -<2150> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 13N (deprecated) -<2151> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 12N (deprecated) -<2152> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 11N (deprecated) -<2153> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / Lambert-93 -<2154> +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# American Samoa 1962 / American Samoa Lambert (deprecated) -<2155> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / UTM zone 59S (deprecated) -<2156> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IRENET95 / Irish Transverse Mercator -<2157> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IRENET95 / UTM zone 29N -<2158> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Sierra Leone 1924 / New Colony Grid -<2159> +proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <> -# Sierra Leone 1924 / New War Office Grid -<2160> +proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <> -# Sierra Leone 1968 / UTM zone 28N -<2161> +proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs <> -# Sierra Leone 1968 / UTM zone 29N -<2162> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs <> -# US National Atlas Equal Area -<2163> +proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs <> -# Locodjo 1965 / TM 5 NW -<2164> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> -# Abidjan 1987 / TM 5 NW -<2165> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss Kruger zone 3 (deprecated) -<2166> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss Kruger zone 4 (deprecated) -<2167> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss Kruger zone 5 (deprecated) -<2168> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Luxembourg 1930 / Gauss -<2169> +proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-189.6806,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +units=m +no_defs <> -# MGI / Slovenia Grid (deprecated) -<2170> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone I (deprecated) -<2171> +proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone II -<2172> +proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone III -<2173> +proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone IV -<2174> +proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone V -<2175> +proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# ETRS89 / Poland CS2000 zone 5 -<2176> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Poland CS2000 zone 6 -<2177> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Poland CS2000 zone 7 -<2178> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Poland CS2000 zone 8 -<2179> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Poland CS92 -<2180> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Azores Occidental 1939 / UTM zone 25N -<2188> +proj=utm +zone=25 +ellps=intl +towgs84=-425,-169,81,0,0,0,0 +units=m +no_defs <> -# Azores Central 1948 / UTM zone 26N -<2189> +proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m +no_defs <> -# Azores Oriental 1940 / UTM zone 26N -<2190> +proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m +no_defs <> -# Madeira 1936 / UTM zone 28N (deprecated) -<2191> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> -# ED50 / France EuroLambert (deprecated) -<2192> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / New Zealand Transverse Mercator 2000 -<2193> +proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# American Samoa 1962 / American Samoa Lambert (deprecated) -<2194> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / UTM zone 2S -<2195> +proj=utm +zone=2 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Kp2000 Jutland -<2196> +proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Kp2000 Zealand -<2197> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Kp2000 Bornholm -<2198> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Albanian 1987 / Gauss Kruger zone 4 (deprecated) -<2199> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703 +units=m +no_defs <> -# ATS77 / New Brunswick Stereographic (ATS77) -<2200> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# REGVEN / UTM zone 18N -<2201> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# REGVEN / UTM zone 19N -<2202> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# REGVEN / UTM zone 20N -<2203> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Tennessee -<2204> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +datum=NAD27 +units=us-ft +no_defs <> -# NAD83 / Kentucky North -<2205> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 9 -<2206> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 10 -<2207> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 11 -<2208> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 12 -<2209> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 13 -<2210> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 14 -<2211> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 15 -<2212> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ETRS89 / TM 30 NE -<2213> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Douala 1948 / AOF west (deprecated) -<2214> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs <> -# Manoca 1962 / UTM zone 32N -<2215> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs <> -# Qornoq 1927 / UTM zone 22N -<2216> +proj=utm +zone=22 +ellps=intl +towgs84=164,138,-189,0,0,0,0 +units=m +no_defs <> -# Qornoq 1927 / UTM zone 23N -<2217> +proj=utm +zone=23 +ellps=intl +towgs84=164,138,-189,0,0,0,0 +units=m +no_defs <> -# Scoresbysund 1952 / Greenland zone 5 east -# Unable to translate coordinate system EPSG:2218 into PROJ.4 format. -# -# ATS77 / UTM zone 19N -<2219> +proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# ATS77 / UTM zone 20N -<2220> +proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# Scoresbysund 1952 / Greenland zone 6 east -# Unable to translate coordinate system EPSG:2221 into PROJ.4 format. -# -# NAD83 / Arizona East (ft) -<2222> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Arizona Central (ft) -<2223> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Arizona West (ft) -<2224> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / California zone 1 (ftUS) -<2225> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / California zone 2 (ftUS) -<2226> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / California zone 3 (ftUS) -<2227> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / California zone 4 (ftUS) -<2228> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / California zone 5 (ftUS) -<2229> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / California zone 6 (ftUS) -<2230> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Colorado North (ftUS) -<2231> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Colorado Central (ftUS) -<2232> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Colorado South (ftUS) -<2233> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Connecticut (ftUS) -<2234> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Delaware (ftUS) -<2235> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Florida East (ftUS) -<2236> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Florida West (ftUS) -<2237> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Florida North (ftUS) -<2238> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Georgia East (ftUS) -<2239> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Georgia West (ftUS) -<2240> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Idaho East (ftUS) -<2241> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Idaho Central (ftUS) -<2242> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Idaho West (ftUS) -<2243> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Indiana East (ftUS) (deprecated) -<2244> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Indiana West (ftUS) (deprecated) -<2245> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Kentucky North (ftUS) -<2246> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Kentucky South (ftUS) -<2247> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Maryland (ftUS) -<2248> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Massachusetts Mainland (ftUS) -<2249> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Massachusetts Island (ftUS) -<2250> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Michigan North (ft) -<2251> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Michigan Central (ft) -<2252> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Michigan South (ft) -<2253> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Mississippi East (ftUS) -<2254> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Mississippi West (ftUS) -<2255> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Montana (ft) -<2256> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / New Mexico East (ftUS) -<2257> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / New Mexico Central (ftUS) -<2258> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / New Mexico West (ftUS) -<2259> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / New York East (ftUS) -<2260> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / New York Central (ftUS) -<2261> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / New York West (ftUS) -<2262> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / New York Long Island (ftUS) -<2263> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / North Carolina (ftUS) -<2264> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / North Dakota North (ft) -<2265> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / North Dakota South (ft) -<2266> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Oklahoma North (ftUS) -<2267> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Oklahoma South (ftUS) -<2268> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Oregon North (ft) -<2269> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Oregon South (ft) -<2270> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Pennsylvania North (ftUS) -<2271> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Pennsylvania South (ftUS) -<2272> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / South Carolina (ft) -<2273> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Tennessee (ftUS) -<2274> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Texas North (ftUS) -<2275> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Texas North Central (ftUS) -<2276> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Texas Central (ftUS) -<2277> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Texas South Central (ftUS) -<2278> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Texas South (ftUS) -<2279> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Utah North (ft) -<2280> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Utah Central (ft) -<2281> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Utah South (ft) -<2282> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +datum=NAD83 +units=ft +no_defs <> -# NAD83 / Virginia North (ftUS) -<2283> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Virginia South (ftUS) -<2284> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Washington North (ftUS) -<2285> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Washington South (ftUS) -<2286> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Wisconsin North (ftUS) -<2287> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Wisconsin Central (ftUS) -<2288> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Wisconsin South (ftUS) -<2289> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# ATS77 / Prince Edward Isl. Stereographic (ATS77) -<2290> +proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated) -<2291> +proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated) -<2292> +proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ATS77 / MTM Nova Scotia zone 4 -<2294> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# ATS77 / MTM Nova Scotia zone 5 -<2295> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# Ammassalik 1958 / Greenland zone 7 east -# Unable to translate coordinate system EPSG:2296 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 1 east (deprecated) -# Unable to translate coordinate system EPSG:2297 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 2 east (deprecated) -# Unable to translate coordinate system EPSG:2298 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 2 west -# Unable to translate coordinate system EPSG:2299 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 3 east (deprecated) -# Unable to translate coordinate system EPSG:2300 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 3 west -# Unable to translate coordinate system EPSG:2301 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 4 east (deprecated) -# Unable to translate coordinate system EPSG:2302 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 4 west -# Unable to translate coordinate system EPSG:2303 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 5 west -# Unable to translate coordinate system EPSG:2304 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 6 west -# Unable to translate coordinate system EPSG:2305 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 7 west -# Unable to translate coordinate system EPSG:2306 into PROJ.4 format. -# -# Qornoq 1927 / Greenland zone 8 east -# Unable to translate coordinate system EPSG:2307 into PROJ.4 format. -# -# Batavia / TM 109 SE -<2308> +proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs <> -# WGS 84 / TM 116 SE -<2309> +proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / TM 132 SE -<2310> +proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / TM 6 NE -<2311> +proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# Garoua / UTM zone 33N -<2312> +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs <> -# Kousseri / UTM zone 33N -<2313> +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs <> -# Trinidad 1903 / Trinidad Grid (ftCla) -<2314> +proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.3047972654 +no_defs <> -# Campo Inchauspe / UTM zone 19S -<2315> +proj=utm +zone=19 +south +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# Campo Inchauspe / UTM zone 20S -<2316> +proj=utm +zone=20 +south +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# PSAD56 / ICN Regional -<2317> +proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# Ain el Abd / Aramco Lambert -<2318> +proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs <> -# ED50 / TM27 -<2319> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / TM30 -<2320> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / TM33 -<2321> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / TM36 -<2322> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / TM39 -<2323> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / TM42 -<2324> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / TM45 -<2325> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# Hong Kong 1980 Grid System -<2326> +proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.243649,-1.158827,-1.094246 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 13 -<2327> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 14 -<2328> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 15 -<2329> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 16 -<2330> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 17 -<2331> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 18 -<2332> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 19 -<2333> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 20 -<2334> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 21 -<2335> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 22 -<2336> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 23 -<2337> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 75E -<2338> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 81E -<2339> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 87E -<2340> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 93E -<2341> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 99E -<2342> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 105E -<2343> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 111E -<2344> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 117E -<2345> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 123E -<2346> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 129E -<2347> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 135E -<2348> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 25 -<2349> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 26 -<2350> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 27 -<2351> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 28 -<2352> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 29 -<2353> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 30 -<2354> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 31 -<2355> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 32 -<2356> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 33 -<2357> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 34 -<2358> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 35 -<2359> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 36 -<2360> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 37 -<2361> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 38 -<2362> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 39 -<2363> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 40 -<2364> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 41 -<2365> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 42 -<2366> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 43 -<2367> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 44 -<2368> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 45 -<2369> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 75E -<2370> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 78E -<2371> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 81E -<2372> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 84E -<2373> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 87E -<2374> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 90E -<2375> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 93E -<2376> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 96E -<2377> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 99E -<2378> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 102E -<2379> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 105E -<2380> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 108E -<2381> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 111E -<2382> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 114E -<2383> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 117E -<2384> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 120E -<2385> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 123E -<2386> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 126E -<2387> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 129E -<2388> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 132E -<2389> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 135E -<2390> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# KKJ / Finland zone 1 -<2391> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs <> -# KKJ / Finland zone 2 -<2392> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs <> -# KKJ / Finland Uniform Coordinate System -<2393> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs <> -# KKJ / Finland zone 4 -<2394> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs <> -# South Yemen / Gauss-Kruger zone 8 -<2395> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> -# South Yemen / Gauss-Kruger zone 9 -<2396> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3 -<2397> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4 -<2398> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5 -<2399> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01 +units=m +no_defs <> -# RT90 2.5 gon W (deprecated) -<2400> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 25 -<2401> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 26 -<2402> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 27 -<2403> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 28 -<2404> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 29 -<2405> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 30 -<2406> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 31 -<2407> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 32 -<2408> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 33 -<2409> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 34 -<2410> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 35 -<2411> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 36 -<2412> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 37 -<2413> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 38 -<2414> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 39 -<2415> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 40 -<2416> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 41 -<2417> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 42 -<2418> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 43 -<2419> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 44 -<2420> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 45 -<2421> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 75E -<2422> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 78E -<2423> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 81E -<2424> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 84E -<2425> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 87E -<2426> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 90E -<2427> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 93E -<2428> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 96E -<2429> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 99E -<2430> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 102E -<2431> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 105E -<2432> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 108E -<2433> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 111E -<2434> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 114E -<2435> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 117E -<2436> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 120E -<2437> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 123E -<2438> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 126E -<2439> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 129E -<2440> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 132E -<2441> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 135E -<2442> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS I -<2443> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS II -<2444> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS III -<2445> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS IV -<2446> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS V -<2447> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS VI -<2448> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS VII -<2449> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS VIII -<2450> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS IX -<2451> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS X -<2452> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XI -<2453> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XII -<2454> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XIII -<2455> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XIV -<2456> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XV -<2457> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XVI -<2458> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XVII -<2459> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XVIII -<2460> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XIX -<2461> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Albanian 1987 / Gauss-Kruger zone 4 -<2462> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 21E -<2463> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 27E -<2464> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 33E -<2465> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 39E -<2466> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 45E -<2467> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 51E -<2468> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 57E -<2469> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 63E -<2470> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 69E -<2471> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 75E -<2472> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 81E -<2473> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 87E -<2474> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 93E -<2475> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 99E -<2476> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 105E -<2477> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 111E -<2478> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 117E -<2479> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 123E -<2480> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 129E -<2481> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 135E -<2482> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 141E -<2483> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 147E -<2484> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 153E -<2485> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 159E -<2486> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 165E -<2487> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 171E -<2488> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 177E -<2489> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 177W -<2490> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 171W -<2491> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 9E (deprecated) -<2492> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 15E (deprecated) -<2493> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 21E -<2494> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 27E -<2495> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 33E -<2496> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 39E -<2497> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 45E -<2498> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 51E -<2499> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 57E -<2500> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 63E -<2501> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 69E -<2502> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 75E -<2503> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 81E -<2504> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 87E -<2505> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 93E -<2506> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 99E -<2507> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 105E -<2508> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 111E -<2509> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 117E -<2510> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 123E -<2511> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 129E -<2512> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 135E -<2513> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 141E -<2514> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 147E -<2515> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 153E -<2516> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 159E -<2517> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 165E -<2518> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 171E -<2519> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 177E -<2520> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 177W -<2521> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 171W -<2522> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 7 -<2523> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 8 -<2524> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 9 -<2525> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 10 -<2526> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 11 -<2527> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 12 -<2528> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 13 -<2529> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 14 -<2530> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 15 -<2531> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 16 -<2532> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 17 -<2533> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 18 -<2534> +proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 19 -<2535> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 20 -<2536> +proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 21 -<2537> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 22 -<2538> +proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 23 -<2539> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 24 -<2540> +proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 25 -<2541> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 26 -<2542> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 27 -<2543> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 28 -<2544> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 29 -<2545> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 30 -<2546> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 31 -<2547> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 32 -<2548> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 33 -<2549> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Samboja / UTM zone 50S (deprecated) -<2550> +proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 34 -<2551> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 35 -<2552> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 36 -<2553> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 37 -<2554> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 38 -<2555> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 39 -<2556> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 40 -<2557> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 41 -<2558> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 42 -<2559> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 43 -<2560> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 44 -<2561> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 45 -<2562> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 46 -<2563> +proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 47 -<2564> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 48 -<2565> +proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 49 -<2566> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 50 -<2567> +proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 51 -<2568> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 52 -<2569> +proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 53 -<2570> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 54 -<2571> +proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 55 -<2572> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 56 -<2573> +proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 57 -<2574> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 58 -<2575> +proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 59 -<2576> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 (deprecated) -<2577> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 61 -<2578> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 62 -<2579> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 63 -<2580> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 64 -<2581> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E -<2582> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E -<2583> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E -<2584> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E -<2585> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E -<2586> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E -<2587> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E -<2588> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E -<2589> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E -<2590> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E -<2591> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E -<2592> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E -<2593> +proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E -<2594> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E -<2595> +proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E -<2596> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E -<2597> +proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E -<2598> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E -<2599> +proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Lietuvos Koordinoei Sistema 1994 (deprecated) -<2600> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E -<2601> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E -<2602> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E -<2603> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E -<2604> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E -<2605> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E -<2606> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E -<2607> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E -<2608> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E -<2609> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E -<2610> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E -<2611> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E -<2612> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E -<2613> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E -<2614> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E -<2615> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E -<2616> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E -<2617> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E -<2618> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E -<2619> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E -<2620> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E -<2621> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E -<2622> +proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E -<2623> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E -<2624> +proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E -<2625> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E -<2626> +proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E -<2627> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E -<2628> +proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E -<2629> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E -<2630> +proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E -<2631> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E -<2632> +proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E -<2633> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E -<2634> +proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E -<2635> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E -<2636> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W -<2637> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W -<2638> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W -<2639> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W -<2640> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 7 -<2641> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 8 -<2642> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 9 -<2643> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 10 -<2644> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 11 -<2645> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 12 -<2646> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 13 -<2647> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 14 -<2648> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 15 -<2649> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 16 -<2650> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 17 -<2651> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 18 -<2652> +proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 19 -<2653> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 20 -<2654> +proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 21 -<2655> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 22 -<2656> +proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 23 -<2657> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 24 -<2658> +proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 25 -<2659> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 26 -<2660> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 27 -<2661> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 28 -<2662> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 29 -<2663> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 30 -<2664> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 31 -<2665> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 32 -<2666> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 33 -<2667> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 34 -<2668> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 35 -<2669> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 36 -<2670> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 37 -<2671> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 38 -<2672> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 39 -<2673> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 40 -<2674> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 41 -<2675> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 42 -<2676> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 43 -<2677> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 44 -<2678> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 45 -<2679> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 46 -<2680> +proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 47 -<2681> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 48 -<2682> +proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 49 -<2683> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 50 -<2684> +proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 51 -<2685> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 52 -<2686> +proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 53 -<2687> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 54 -<2688> +proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 55 -<2689> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 56 -<2690> +proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 57 -<2691> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 58 -<2692> +proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 59 -<2693> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 (deprecated) -<2694> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 61 -<2695> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 62 -<2696> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 63 -<2697> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 64 -<2698> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E -<2699> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E -<2700> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E -<2701> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E -<2702> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E -<2703> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E -<2704> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E -<2705> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E -<2706> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E -<2707> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E -<2708> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E -<2709> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E -<2710> +proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E -<2711> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E -<2712> +proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E -<2713> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E -<2714> +proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E -<2715> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E -<2716> +proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E -<2717> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E -<2718> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E -<2719> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E -<2720> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E -<2721> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E -<2722> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E -<2723> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E -<2724> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E -<2725> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E -<2726> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E -<2727> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E -<2728> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E -<2729> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E -<2730> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E -<2731> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E -<2732> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E -<2733> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E -<2734> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E -<2735> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Tete / UTM zone 36S -<2736> +proj=utm +zone=36 +south +ellps=clrk66 +towgs84=-80,-100,-228,0,0,0,0 +units=m +no_defs <> -# Tete / UTM zone 37S -<2737> +proj=utm +zone=37 +south +ellps=clrk66 +towgs84=-80,-100,-228,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E -<2738> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E -<2739> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E -<2740> +proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E -<2741> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E -<2742> +proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E -<2743> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E -<2744> +proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E -<2745> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E -<2746> +proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E -<2747> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E -<2748> +proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E -<2749> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E -<2750> +proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E -<2751> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E -<2752> +proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E -<2753> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E -<2754> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W -<2755> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W -<2756> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W -<2757> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W -<2758> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# NAD83(HARN) / Alabama East -<2759> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Alabama West -<2760> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arizona East -<2761> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arizona Central -<2762> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arizona West -<2763> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arkansas North -<2764> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arkansas South -<2765> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 1 -<2766> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 2 -<2767> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 3 -<2768> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 4 -<2769> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 5 -<2770> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 6 -<2771> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Colorado North -<2772> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Colorado Central -<2773> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Colorado South -<2774> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Connecticut -<2775> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Delaware -<2776> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Florida East -<2777> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Florida West -<2778> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Florida North -<2779> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Georgia East -<2780> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Georgia West -<2781> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 1 -<2782> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 2 -<2783> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 3 -<2784> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 4 -<2785> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 5 -<2786> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Idaho East -<2787> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Idaho Central -<2788> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Idaho West -<2789> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Illinois East -<2790> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Illinois West -<2791> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Indiana East -<2792> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Indiana West -<2793> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Iowa North -<2794> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Iowa South -<2795> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kansas North -<2796> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kansas South -<2797> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kentucky North -<2798> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kentucky South -<2799> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Louisiana North -<2800> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Louisiana South -<2801> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maine East -<2802> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maine West -<2803> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maryland -<2804> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Massachusetts Mainland -<2805> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Massachusetts Island -<2806> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Michigan North -<2807> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Michigan Central -<2808> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Michigan South -<2809> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota North -<2810> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota Central -<2811> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota South -<2812> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Mississippi East -<2813> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Mississippi West -<2814> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Missouri East -<2815> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Missouri Central -<2816> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Missouri West -<2817> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Montana -<2818> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nebraska -<2819> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nevada East -<2820> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nevada Central -<2821> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nevada West -<2822> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Hampshire -<2823> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Jersey -<2824> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Mexico East -<2825> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Mexico Central -<2826> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Mexico West -<2827> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New York East -<2828> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New York Central -<2829> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New York West -<2830> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New York Long Island -<2831> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / North Dakota North -<2832> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / North Dakota South -<2833> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Ohio North -<2834> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Ohio South -<2835> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oklahoma North -<2836> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oklahoma South -<2837> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oregon North -<2838> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oregon South -<2839> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Rhode Island -<2840> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / South Dakota North -<2841> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / South Dakota South -<2842> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Tennessee -<2843> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas North -<2844> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas North Central -<2845> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas Central -<2846> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas South Central -<2847> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas South -<2848> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Utah North -<2849> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Utah Central -<2850> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Utah South -<2851> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Vermont -<2852> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Virginia North -<2853> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Virginia South -<2854> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Washington North -<2855> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Washington South -<2856> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / West Virginia North -<2857> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / West Virginia South -<2858> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wisconsin North -<2859> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wisconsin Central -<2860> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wisconsin South -<2861> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wyoming East -<2862> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wyoming East Central -<2863> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wyoming West Central -<2864> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wyoming West -<2865> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Puerto Rico and Virgin Is. -<2866> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arizona East (ft) -<2867> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Arizona Central (ft) -<2868> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Arizona West (ft) -<2869> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / California zone 1 (ftUS) -<2870> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / California zone 2 (ftUS) -<2871> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / California zone 3 (ftUS) -<2872> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / California zone 4 (ftUS) -<2873> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / California zone 5 (ftUS) -<2874> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / California zone 6 (ftUS) -<2875> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Colorado North (ftUS) -<2876> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Colorado Central (ftUS) -<2877> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Colorado South (ftUS) -<2878> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Connecticut (ftUS) -<2879> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Delaware (ftUS) -<2880> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Florida East (ftUS) -<2881> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Florida West (ftUS) -<2882> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Florida North (ftUS) -<2883> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Georgia East (ftUS) -<2884> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Georgia West (ftUS) -<2885> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Idaho East (ftUS) -<2886> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Idaho Central (ftUS) -<2887> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Idaho West (ftUS) -<2888> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Indiana East (ftUS) (deprecated) -<2889> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Indiana West (ftUS) (deprecated) -<2890> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Kentucky North (ftUS) -<2891> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Kentucky South (ftUS) -<2892> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Maryland (ftUS) -<2893> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Massachusetts Mainland (ftUS) -<2894> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Massachusetts Island (ftUS) -<2895> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Michigan North (ft) -<2896> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Michigan Central (ft) -<2897> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Michigan South (ft) -<2898> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Mississippi East (ftUS) -<2899> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Mississippi West (ftUS) -<2900> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Montana (ft) -<2901> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / New Mexico East (ftUS) -<2902> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / New Mexico Central (ftUS) -<2903> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / New Mexico West (ftUS) -<2904> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / New York East (ftUS) -<2905> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / New York Central (ftUS) -<2906> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / New York West (ftUS) -<2907> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / New York Long Island (ftUS) -<2908> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / North Dakota North (ft) -<2909> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / North Dakota South (ft) -<2910> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Oklahoma North (ftUS) -<2911> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Oklahoma South (ftUS) -<2912> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Oregon North (ft) -<2913> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Oregon South (ft) -<2914> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Tennessee (ftUS) -<2915> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Texas North (ftUS) -<2916> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Texas North Central (ftUS) -<2917> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Texas Central (ftUS) -<2918> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Texas South Central (ftUS) -<2919> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Texas South (ftUS) -<2920> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Utah North (ft) -<2921> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Utah Central (ft) -<2922> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Utah South (ft) -<2923> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Virginia North (ftUS) -<2924> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Virginia South (ftUS) -<2925> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Washington North (ftUS) -<2926> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Washington South (ftUS) -<2927> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Wisconsin North (ftUS) -<2928> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Wisconsin Central (ftUS) -<2929> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Wisconsin South (ftUS) -<2930> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# Beduaram / TM 13 NE -<2931> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +units=m +no_defs <> -# QND95 / Qatar National Grid -<2932> +proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065 +units=m +no_defs <> -# Segara / UTM zone 50S -<2933> +proj=utm +zone=50 +south +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +units=m +no_defs <> -# Segara (Jakarta) / NEIEZ (deprecated) -<2934> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone A1 -<2935> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone A2 -<2936> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone A3 -<2937> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone A4 -<2938> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone K2 -<2939> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone K3 -<2940> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone K4 -<2941> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Porto Santo / UTM zone 28N -<2942> +proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m +no_defs <> -# Selvagem Grande / UTM zone 28N -<2943> +proj=utm +zone=28 +ellps=intl +towgs84=-289,-124,60,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / SCoPQ zone 2 (deprecated) -<2944> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 3 -<2945> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 4 -<2946> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 5 -<2947> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 6 -<2948> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 7 -<2949> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 8 -<2950> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 9 -<2951> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 10 -<2952> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / New Brunswick Stereographic -<2953> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83) -<2954> +proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 11N -<2955> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 12N -<2956> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 13N -<2957> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 17N -<2958> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 18N -<2959> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 19N -<2960> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 20N -<2961> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 21N -<2962> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Lisbon 1890 (Lisbon) / Portugal Bonne -# Unable to translate coordinate system EPSG:2963 into PROJ.4 format. -# -# NAD27 / Alaska Albers -<2964> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD83 / Indiana East (ftUS) -<2965> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Indiana West (ftUS) -<2966> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(HARN) / Indiana East (ftUS) -<2967> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Indiana West (ftUS) -<2968> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# Fort Marigot / UTM zone 20N -<2969> +proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m +no_defs <> -# Guadeloupe 1948 / UTM zone 20N -<2970> +proj=utm +zone=20 +ellps=intl +towgs84=-467,-16,-300,0,0,0,0 +units=m +no_defs <> -# CSG67 / UTM zone 22N -<2971> +proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs <> -# RGFG95 / UTM zone 22N -<2972> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Martinique 1938 / UTM zone 20N -<2973> +proj=utm +zone=20 +ellps=intl +towgs84=186,482,151,0,0,0,0 +units=m +no_defs <> -# RGR92 / UTM zone 40S -<2975> +proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Tahiti 52 / UTM zone 6S -<2976> +proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m +no_defs <> -# Tahaa 54 / UTM zone 5S -<2977> +proj=utm +zone=5 +south +ellps=intl +towgs84=72.438,345.918,79.486,1.6045,0.8823,0.5565,1.3746 +units=m +no_defs <> -# IGN72 Nuku Hiva / UTM zone 7S -<2978> +proj=utm +zone=7 +south +ellps=intl +towgs84=84,274,65,0,0,0,0 +units=m +no_defs <> -# K0 1949 / UTM zone 42S (deprecated) -<2979> +proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs <> -# Combani 1950 / UTM zone 38S -<2980> +proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs <> -# IGN56 Lifou / UTM zone 58S -<2981> +proj=utm +zone=58 +south +ellps=intl +towgs84=335.47,222.58,-230.94,0,0,0,0 +units=m +no_defs <> -# IGN72 Grand Terre / UTM zone 58S (deprecated) -<2982> +proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +units=m +no_defs <> -# ST87 Ouvea / UTM zone 58S (deprecated) -<2983> +proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m +no_defs <> -# RGNC 1991 / Lambert New Caledonia (deprecated) -<2984> +proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Petrels 1972 / Terre Adelie Polar Stereographic -# Unable to translate coordinate system EPSG:2985 into PROJ.4 format. -# -# Perroud 1950 / Terre Adelie Polar Stereographic -# Unable to translate coordinate system EPSG:2986 into PROJ.4 format. -# -# Saint Pierre et Miquelon 1950 / UTM zone 21N -<2987> +proj=utm +zone=21 +ellps=clrk66 +towgs84=11.363,424.148,373.13,0,0,0,0 +units=m +no_defs <> -# MOP78 / UTM zone 1S -<2988> +proj=utm +zone=1 +south +ellps=intl +towgs84=253,-132,-127,0,0,0,0 +units=m +no_defs <> -# RRAF 1991 / UTM zone 20N (deprecated) -<2989> +proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Reunion 1947 / TM Reunion (deprecated) -<2990> +proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +units=m +no_defs <> -# NAD83 / Oregon LCC (m) -<2991> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oregon GIC Lambert (ft) -<2992> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +datum=NAD83 +units=ft +no_defs <> -# NAD83(HARN) / Oregon LCC (m) -<2993> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oregon GIC Lambert (ft) -<2994> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# IGN53 Mare / UTM zone 58S -<2995> +proj=utm +zone=58 +south +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +units=m +no_defs <> -# ST84 Ile des Pins / UTM zone 58S -<2996> +proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +units=m +no_defs <> -# ST71 Belep / UTM zone 58S -<2997> +proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002 +units=m +no_defs <> -# NEA74 Noumea / UTM zone 58S -<2998> +proj=utm +zone=58 +south +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs <> -# Grand Comoros / UTM zone 38S -<2999> +proj=utm +zone=38 +south +ellps=intl +towgs84=-963,510,-359,0,0,0,0 +units=m +no_defs <> -# Segara / NEIEZ -<3000> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +units=m +no_defs <> -# Batavia / NEIEZ -<3001> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs <> -# Makassar / NEIEZ -<3002> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +units=m +no_defs <> -# Monte Mario / Italy zone 1 -<3003> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs <> -# Monte Mario / Italy zone 2 -<3004> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs <> -# NAD83 / BC Albers -<3005> +proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# SWEREF99 TM -<3006> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 12 00 -<3007> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 13 30 -<3008> +proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 15 00 -<3009> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 16 30 -<3010> +proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 18 00 -<3011> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 14 15 -<3012> +proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 15 45 -<3013> +proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 17 15 -<3014> +proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 18 45 -<3015> +proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 20 15 -<3016> +proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 21 45 -<3017> +proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 23 15 -<3018> +proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RT90 7.5 gon V -<3019> +proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs <> -# RT90 5 gon V -<3020> +proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs <> -# RT90 2.5 gon V -<3021> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs <> -# RT90 0 gon -<3022> +proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs <> -# RT90 2.5 gon O -<3023> +proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs <> -# RT90 5 gon O -<3024> +proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs <> -# RT38 7.5 gon V -<3025> +proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RT38 5 gon V -<3026> +proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RT38 2.5 gon V -<3027> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RT38 0 gon -<3028> +proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RT38 2.5 gon O -<3029> +proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RT38 5 gon O -<3030> +proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# WGS 84 / Antarctic Polar Stereographic -<3031> +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Australian Antarctic Polar Stereographic -<3032> +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6000000 +y_0=6000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Australian Antarctic Lambert -<3033> +proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +datum=WGS84 +units=m +no_defs <> -# ETRS89 / LCC Europe -<3034> +proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / LAEA Europe -<3035> +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Moznet / UTM zone 36S -<3036> +proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Moznet / UTM zone 37S -<3037> +proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / TM26 (deprecated) -<3038> +proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / TM27 (deprecated) -<3039> +proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 28N (N-E) -<3040> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 29N (N-E) -<3041> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 30N (N-E) -<3042> +proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 31N (N-E) -<3043> +proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 32N (N-E) -<3044> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 33N (N-E) -<3045> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 34N (N-E) -<3046> +proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 35N (N-E) -<3047> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 36N (N-E) -<3048> +proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 37N (N-E) -<3049> +proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / TM38 (deprecated) -<3050> +proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / TM39 (deprecated) -<3051> +proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Reykjavik 1900 / Lambert 1900 -# Unable to translate coordinate system EPSG:3052 into PROJ.4 format. -# -# Hjorsey 1955 / Lambert 1955 -# Unable to translate coordinate system EPSG:3053 into PROJ.4 format. -# -# Hjorsey 1955 / UTM zone 26N -<3054> +proj=utm +zone=26 +ellps=intl +towgs84=-73,47,-83,0,0,0,0 +units=m +no_defs <> -# Hjorsey 1955 / UTM zone 27N -<3055> +proj=utm +zone=27 +ellps=intl +towgs84=-73,47,-83,0,0,0,0 +units=m +no_defs <> -# Hjorsey 1955 / UTM zone 28N -<3056> +proj=utm +zone=28 +ellps=intl +towgs84=-73,47,-83,0,0,0,0 +units=m +no_defs <> -# ISN93 / Lambert 1993 -<3057> +proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Helle 1954 / Jan Mayen Grid -<3058> +proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.6087,552.753,-540.873,6.6816266,-31.6114924,-19.84816,16.805 +units=m +no_defs <> -# LKS92 / Latvia TM -<3059> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IGN72 Grande Terre / UTM zone 58S -<3060> +proj=utm +zone=58 +south +ellps=intl +towgs84=-11.64,-348.6,291.98,0,0,0,0 +units=m +no_defs <> -# Porto Santo 1995 / UTM zone 28N -<3061> +proj=utm +zone=28 +ellps=intl +towgs84=-502.862,-247.438,312.724,0,0,0,0 +units=m +no_defs <> -# Azores Oriental 1995 / UTM zone 26N -<3062> +proj=utm +zone=26 +ellps=intl +towgs84=-204.619,140.176,55.226,0,0,0,0 +units=m +no_defs <> -# Azores Central 1995 / UTM zone 26N -<3063> +proj=utm +zone=26 +ellps=intl +towgs84=-106.226,166.366,-37.893,0,0,0,0 +units=m +no_defs <> -# IGM95 / UTM zone 32N -<3064> +proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IGM95 / UTM zone 33N -<3065> +proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ED50 / Jordan TM -<3066> +proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ETRS89 / TM35FIN(E,N) -<3067> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DHDN / Soldner Berlin -<3068> +proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +datum=potsdam +units=m +no_defs <> -# NAD27 / Wisconsin Transverse Mercator -<3069> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +datum=NAD27 +units=m +no_defs <> -# NAD83 / Wisconsin Transverse Mercator -<3070> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Wisconsin Transverse Mercator -<3071> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Maine CS2000 East -<3072> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maine CS2000 Central (deprecated) -<3073> +proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maine CS2000 West -<3074> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Maine CS2000 East -<3075> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maine CS2000 Central (deprecated) -<3076> +proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maine CS2000 West -<3077> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Michigan Oblique Mercator -<3078> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Michigan Oblique Mercator -<3079> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Shackleford -<3080> +proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_0=914400 +datum=NAD27 +units=ft +no_defs <> -# NAD83 / Texas State Mapping System -<3081> +proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas Centric Lambert Conformal -<3082> +proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas Centric Albers Equal Area -<3083> +proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Texas Centric Lambert Conformal -<3084> +proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas Centric Albers Equal Area -<3085> +proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Florida GDL Albers -<3086> +proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Florida GDL Albers -<3087> +proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Kentucky Single Zone -<3088> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kentucky Single Zone (ftUS) -<3089> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(HARN) / Kentucky Single Zone -<3090> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kentucky Single Zone (ftUS) -<3091> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# Tokyo / UTM zone 51N -<3092> +proj=utm +zone=51 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / UTM zone 52N -<3093> +proj=utm +zone=52 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / UTM zone 53N -<3094> +proj=utm +zone=53 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / UTM zone 54N -<3095> +proj=utm +zone=54 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / UTM zone 55N -<3096> +proj=utm +zone=55 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# JGD2000 / UTM zone 51N -<3097> +proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / UTM zone 52N -<3098> +proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / UTM zone 53N -<3099> +proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / UTM zone 54N -<3100> +proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / UTM zone 55N -<3101> +proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# American Samoa 1962 / American Samoa Lambert -<3102> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs <> -# Mauritania 1999 / UTM zone 28N (deprecated) -<3103> +proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs <> -# Mauritania 1999 / UTM zone 29N (deprecated) -<3104> +proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs <> -# Mauritania 1999 / UTM zone 30N (deprecated) -<3105> +proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs <> -# Gulshan 303 / Bangladesh Transverse Mercator -<3106> +proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +towgs84=283.7,735.9,261.1,0,0,0,0 +units=m +no_defs <> -# GDA94 / SA Lambert -<3107> +proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Guernsey Grid -<3108> +proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000 +y_0=50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Jersey Transverse Mercator -<3109> +proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001 +x_0=40000 +y_0=70000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# AGD66 / Vicgrid66 -<3110> +proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=4500000 +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# GDA94 / Vicgrid -<3111> +proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / Geoscience Australia Lambert -<3112> +proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / BCSG02 -<3113> +proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MAGNA-SIRGAS / Colombia Far West zone -<3114> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MAGNA-SIRGAS / Colombia West zone -<3115> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MAGNA-SIRGAS / Colombia Bogota zone -<3116> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MAGNA-SIRGAS / Colombia East Central zone -<3117> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MAGNA-SIRGAS / Colombia East zone -<3118> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Douala 1948 / AEF west -<3119> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone I -<3120> +proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# PRS92 / Philippines zone 1 -<3121> +proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> -# PRS92 / Philippines zone 2 -<3122> +proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> -# PRS92 / Philippines zone 3 -<3123> +proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> -# PRS92 / Philippines zone 4 -<3124> +proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> -# PRS92 / Philippines zone 5 -<3125> +proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> -# ETRS89 / ETRS-GK19FIN -<3126> +proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK20FIN -<3127> +proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK21FIN -<3128> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK22FIN -<3129> +proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK23FIN -<3130> +proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK24FIN -<3131> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK25FIN -<3132> +proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK26FIN -<3133> +proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK27FIN -<3134> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK28FIN -<3135> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK29FIN -<3136> +proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK30FIN -<3137> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / ETRS-GK31FIN -<3138> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Vanua Levu 1915 / Vanua Levu Grid -# Unable to translate coordinate system EPSG:3139 into PROJ.4 format. -# -# Viti Levu 1912 / Viti Levu Grid -<3140> +proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=98,390,-22,0,0,0,0 +units=link +no_defs <> -# Fiji 1956 / UTM zone 60S -<3141> +proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs <> -# Fiji 1956 / UTM zone 1S -<3142> +proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs <> -# Fiji 1986 / Fiji Map Grid (deprecated) -<3143> +proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# FD54 / Faroe Lambert -# Unable to translate coordinate system EPSG:3144 into PROJ.4 format. -# -# ETRS89 / Faroe Lambert -# Unable to translate coordinate system EPSG:3145 into PROJ.4 format. -# -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 6 (deprecated) -<3146> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E (deprecated) -<3147> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Indian 1960 / UTM zone 48N -<3148> +proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs <> -# Indian 1960 / UTM zone 49N -<3149> +proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 6 (deprecated) -<3150> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E (deprecated) -<3151> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# ST74 -<3152> +proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / BC Albers -<3153> +proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 7N -<3154> +proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 8N -<3155> +proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 9N -<3156> +proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 10N -<3157> +proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 14N -<3158> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 15N -<3159> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 16N -<3160> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Ontario MNR Lambert -<3161> +proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Ontario MNR Lambert -<3162> +proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGNC91-93 / Lambert New Caledonia -<3163> +proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ST87 Ouvea / UTM zone 58S -<3164> +proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m +no_defs <> -# NEA74 Noumea / Noumea Lambert -<3165> +proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs <> -# NEA74 Noumea / Noumea Lambert 2 -<3166> +proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354 +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs <> -# Kertau (RSO) / RSO Malaya (ch) -<3167> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=40000 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756 +no_defs <> -# Kertau (RSO) / RSO Malaya (m) -<3168> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804670.24 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377295.664 +b=6356094.667915204 +units=m +no_defs <> -# RGNC91-93 / UTM zone 57S -<3169> +proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGNC91-93 / UTM zone 58S -<3170> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGNC91-93 / UTM zone 59S -<3171> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IGN53 Mare / UTM zone 59S -<3172> +proj=utm +zone=59 +south +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +units=m +no_defs <> -# fk89 / Faroe Lambert FK89 -# Unable to translate coordinate system EPSG:3173 into PROJ.4 format. -# -# NAD83 / Great Lakes Albers -<3174> +proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Great Lakes and St Lawrence Albers -<3175> +proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +datum=NAD83 +units=m +no_defs <> -# Indian 1960 / TM 106 NE -<3176> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM -<3177> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_0=1000000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 18N -<3178> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 19N -<3179> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 20N -<3180> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 21N -<3181> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 22N -<3182> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 23N -<3183> +proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 24N -<3184> +proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 25N -<3185> +proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 26N -<3186> +proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 27N -<3187> +proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 28N -<3188> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / UTM zone 29N -<3189> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 5 -<3190> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 6 -<3191> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 7 -<3192> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 8 -<3193> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 9 -<3194> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 10 -<3195> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 11 -<3196> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 12 -<3197> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / Libya TM zone 13 -<3198> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / UTM zone 32N -<3199> +proj=utm +zone=32 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# FD58 / Iraq zone -<3200> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-241.54,-163.64,396.06,0,0,0,0 +units=m +no_defs <> -# LGD2006 / UTM zone 33N -<3201> +proj=utm +zone=33 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / UTM zone 34N -<3202> +proj=utm +zone=34 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# LGD2006 / UTM zone 35N -<3203> +proj=utm +zone=35 +ellps=intl +towgs84=-208.4058,-109.8777,-2.5764,0,0,0,0 +units=m +no_defs <> -# WGS 84 / SCAR IMW SP19-20 -<3204> +proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SP21-22 -<3205> +proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SP23-24 -<3206> +proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ01-02 -<3207> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ19-20 -<3208> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ21-22 -<3209> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ37-38 -<3210> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ39-40 -<3211> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ41-42 -<3212> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ43-44 -<3213> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ45-46 -<3214> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ47-48 -<3215> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ49-50 -<3216> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ51-52 -<3217> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ53-54 -<3218> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ55-56 -<3219> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SQ57-58 -<3220> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR13-14 -<3221> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR15-16 -<3222> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR17-18 -<3223> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR19-20 -<3224> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR27-28 -<3225> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR29-30 -<3226> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR31-32 -<3227> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR33-34 -<3228> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR35-36 -<3229> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR37-38 -<3230> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR39-40 -<3231> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR41-42 -<3232> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR43-44 -<3233> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR45-46 -<3234> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR47-48 -<3235> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR49-50 -<3236> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR51-52 -<3237> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR53-54 -<3238> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR55-56 -<3239> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR57-58 -<3240> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SR59-60 -<3241> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS04-06 -<3242> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS07-09 -<3243> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS10-12 -<3244> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS13-15 -<3245> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS16-18 -<3246> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS19-21 -<3247> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS25-27 -<3248> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS28-30 -<3249> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS31-33 -<3250> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS34-36 -<3251> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS37-39 -<3252> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS40-42 -<3253> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS43-45 -<3254> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS46-48 -<3255> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS49-51 -<3256> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS52-54 -<3257> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS55-57 -<3258> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SS58-60 -<3259> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST01-04 -<3260> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST05-08 -<3261> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST09-12 -<3262> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST13-16 -<3263> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST17-20 -<3264> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST21-24 -<3265> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST25-28 -<3266> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST29-32 -<3267> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST33-36 -<3268> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST37-40 -<3269> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST41-44 -<3270> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST45-48 -<3271> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST49-52 -<3272> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST53-56 -<3273> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW ST57-60 -<3274> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU01-05 -<3275> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU06-10 -<3276> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU11-15 -<3277> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU16-20 -<3278> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU21-25 -<3279> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU26-30 -<3280> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU31-35 -<3281> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU36-40 -<3282> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU41-45 -<3283> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU46-50 -<3284> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU51-55 -<3285> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SU56-60 -<3286> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SV01-10 -<3287> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SV11-20 -<3288> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SV21-30 -<3289> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SV31-40 -<3290> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SV41-50 -<3291> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SV51-60 -<3292> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / SCAR IMW SW01-60 -<3293> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / USGS Transantarctic Mountains -<3294> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# Guam 1963 / Yap Islands -# Unable to translate coordinate system EPSG:3295 into PROJ.4 format. -# -# RGPF / UTM zone 5S -<3296> +proj=utm +zone=5 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs <> -# RGPF / UTM zone 6S -<3297> +proj=utm +zone=6 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs <> -# RGPF / UTM zone 7S -<3298> +proj=utm +zone=7 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs <> -# RGPF / UTM zone 8S -<3299> +proj=utm +zone=8 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs <> -# Estonian Coordinate System of 1992 -<3300> +proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs <> -# Estonian Coordinate System of 1997 -<3301> +proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IGN63 Hiva Oa / UTM zone 7S -<3302> +proj=utm +zone=7 +south +ellps=intl +towgs84=410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311 +units=m +no_defs <> -# Fatu Iva 72 / UTM zone 7S -<3303> +proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.125,2623.922,-33.8875,70.6773,-9.3943,186.074 +units=m +no_defs <> -# Tahiti 79 / UTM zone 6S -<3304> +proj=utm +zone=6 +south +ellps=intl +towgs84=221.525,152.948,176.768,-2.3847,-1.3896,-0.877,11.4741 +units=m +no_defs <> -# Moorea 87 / UTM zone 6S -<3305> +proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +no_defs <> -# Maupiti 83 / UTM zone 5S -<3306> +proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m +no_defs <> -# Nakhl-e Ghanem / UTM zone 39N -<3307> +proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m +no_defs <> -# GDA94 / NSW Lambert -<3308> +proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / California Albers -<3309> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +datum=NAD27 +units=m +no_defs <> -# NAD83 / California Albers -<3310> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / California Albers -<3311> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# CSG67 / UTM zone 21N -<3312> +proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs <> -# RGFG95 / UTM zone 21N -<3313> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Katanga 1955 / Katanga Lambert (deprecated) -<3314> +proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs <> -# Katanga 1955 / Katanga TM (deprecated) -<3315> +proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs <> -# Kasai 1953 / Congo TM zone 22 -<3316> +proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# Kasai 1953 / Congo TM zone 24 -<3317> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 12 -<3318> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 14 -<3319> +proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 16 -<3320> +proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 18 -<3321> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 20 -<3322> +proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 22 -<3323> +proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 24 -<3324> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 26 -<3325> +proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 28 -<3326> +proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# IGC 1962 / Congo TM zone 30 -<3327> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# Pulkovo 1942(58) / GUGiK-80 -<3328> +proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5 -<3329> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6 -<3330> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7 -<3331> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8 -<3332> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Gauss-Kruger zone 3 -<3333> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Gauss-Kruger zone 4 -<3334> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Gauss-Kruger zone 5 -<3335> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# IGN 1962 Kerguelen / UTM zone 42S -<3336> +proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs <> -# Le Pouce 1934 / Mauritius Grid -<3337> +proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0=1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +units=m +no_defs <> -# NAD83 / Alaska Albers -<3338> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# IGCB 1955 / Congo TM zone 12 -<3339> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs <> -# IGCB 1955 / Congo TM zone 14 -<3340> +proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs <> -# IGCB 1955 / Congo TM zone 16 -<3341> +proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs <> -# IGCB 1955 / UTM zone 33S -<3342> +proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs <> -# Mauritania 1999 / UTM zone 28N -<3343> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mauritania 1999 / UTM zone 29N -<3344> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mauritania 1999 / UTM zone 30N -<3345> +proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# LKS94 / Lithuania TM -<3346> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Statistics Canada Lambert -<3347> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Statistics Canada Lambert -<3348> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / PDC Mercator (deprecated) -<3349> +proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone C0 -<3350> +proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone C1 -<3351> +proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone C2 -<3352> +proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Mhast (onshore) / UTM zone 32S -<3353> +proj=utm +zone=32 +south +ellps=intl +units=m +no_defs <> -# Mhast (offshore) / UTM zone 32S -<3354> +proj=utm +zone=32 +south +ellps=intl +units=m +no_defs <> -# Egypt Gulf of Suez S-650 TL / Red Belt -<3355> +proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m +no_defs <> -# Grand Cayman 1959 / UTM zone 17N (deprecated) -<3356> +proj=utm +zone=17 +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +units=m +no_defs <> -# Little Cayman 1961 / UTM zone 17N (deprecated) -<3357> +proj=utm +zone=17 +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +units=m +no_defs <> -# NAD83(HARN) / North Carolina -<3358> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / North Carolina (ftUS) (deprecated) -<3359> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / South Carolina -<3360> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / South Carolina (ft) -<3361> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(HARN) / Pennsylvania North -<3362> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Pennsylvania North (ftUS) -<3363> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Pennsylvania South -<3364> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Pennsylvania South (ftUS) -<3365> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# Hong Kong 1963 Grid System (deprecated) -<3366> +proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs <> -# IGN Astro 1960 / UTM zone 28N -<3367> +proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs <> -# IGN Astro 1960 / UTM zone 29N -<3368> +proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs <> -# IGN Astro 1960 / UTM zone 30N -<3369> +proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs <> -# NAD27 / UTM zone 59N -<3370> +proj=utm +zone=59 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 60N -<3371> +proj=utm +zone=60 +datum=NAD27 +units=m +no_defs <> -# NAD83 / UTM zone 59N -<3372> +proj=utm +zone=59 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 60N -<3373> +proj=utm +zone=60 +datum=NAD83 +units=m +no_defs <> -# FD54 / UTM zone 29N -<3374> +proj=utm +zone=29 +ellps=intl +units=m +no_defs <> -# GDM2000 / Peninsula RSO -<3375> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / East Malaysia BRSO -<3376> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +no_uoff +gamma=53.13010236111111 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Johor Grid -<3377> +proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Sembilan and Melaka Grid -<3378> +proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Pahang Grid -<3379> +proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Selangor Grid -<3380> +proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Terengganu Grid -<3381> +proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Pinang Grid -<3382> +proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Kedah and Perlis Grid -<3383> +proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Perak Grid -<3384> +proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +no_defs <> -# GDM2000 / Kelantan Grid -<3385> +proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m +no_defs <> -# KKJ / Finland zone 0 -<3386> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs <> -# KKJ / Finland zone 5 -<3387> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs <> -# Pulkovo 1942 / Caspian Sea Mercator -<3388> +proj=merc +lon_0=51 +lat_ts=42 +x_0=0 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 -<3389> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 -<3390> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Karbala 1979 / UTM zone 37N -<3391> +proj=utm +zone=37 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs <> -# Karbala 1979 / UTM zone 38N -<3392> +proj=utm +zone=38 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs <> -# Karbala 1979 / UTM zone 39N -<3393> +proj=utm +zone=39 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs <> -# Nahrwan 1934 / Iraq zone -<3394> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs <> -# WGS 84 / World Mercator -<3395> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# PD/83 / 3-degree Gauss-Kruger zone 3 -<3396> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# PD/83 / 3-degree Gauss-Kruger zone 4 -<3397> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RD/83 / 3-degree Gauss-Kruger zone 4 -<3398> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RD/83 / 3-degree Gauss-Kruger zone 5 -<3399> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# NAD83 / Alberta 10-TM (Forest) -<3400> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alberta 10-TM (Resource) -<3401> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Alberta 10-TM (Forest) -<3402> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / Alberta 10-TM (Resource) -<3403> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / North Carolina (ftUS) -<3404> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# VN-2000 / UTM zone 48N -<3405> +proj=utm +zone=48 +ellps=WGS84 +towgs84=-191.90441429,-39.30318279,-111.45032835,0.00928836,-0.01975479,0.00427372,0.252906278 +units=m +no_defs <> -# VN-2000 / UTM zone 49N -<3406> +proj=utm +zone=49 +ellps=WGS84 +towgs84=-191.90441429,-39.30318279,-111.45032835,0.00928836,-0.01975479,0.00427372,0.252906278 +units=m +no_defs <> -# Hong Kong 1963 Grid System -<3407> +proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs <> -# NSIDC EASE-Grid North -<3408> +proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs <> -# NSIDC EASE-Grid South -<3409> +proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs <> -# NSIDC EASE-Grid Global -<3410> +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs <> -# NSIDC Sea Ice Polar Stereographic North -<3411> +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs <> -# NSIDC Sea Ice Polar Stereographic South -<3412> +proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs <> -# WGS 84 / NSIDC Sea Ice Polar Stereographic North -<3413> +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# SVY21 / Singapore TM -<3414> +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs <> -# WGS 72BE / South China Sea Lambert -<3415> +proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# ETRS89 / Austria Lambert -<3416> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Iowa North (ftUS) -<3417> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Iowa South (ftUS) -<3418> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Kansas North (ftUS) -<3419> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Kansas South (ftUS) -<3420> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Nevada East (ftUS) -<3421> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Nevada Central (ftUS) -<3422> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Nevada West (ftUS) -<3423> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / New Jersey (ftUS) -<3424> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(HARN) / Iowa North (ftUS) -<3425> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Iowa South (ftUS) -<3426> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Kansas North (ftUS) -<3427> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Kansas South (ftUS) -<3428> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Nevada East (ftUS) -<3429> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Nevada Central (ftUS) -<3430> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Nevada West (ftUS) -<3431> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / New Jersey (ftUS) -<3432> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83 / Arkansas North (ftUS) -<3433> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Arkansas South (ftUS) -<3434> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Illinois East (ftUS) -<3435> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Illinois West (ftUS) -<3436> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / New Hampshire (ftUS) -<3437> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Rhode Island (ftUS) -<3438> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# PSD93 / UTM zone 39N -<3439> +proj=utm +zone=39 +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006 +units=m +no_defs <> -# PSD93 / UTM zone 40N -<3440> +proj=utm +zone=40 +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006 +units=m +no_defs <> -# NAD83(HARN) / Arkansas North (ftUS) -<3441> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Arkansas South (ftUS) -<3442> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Illinois East (ftUS) -<3443> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Illinois West (ftUS) -<3444> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / New Hampshire (ftUS) -<3445> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Rhode Island (ftUS) -<3446> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# ETRS89 / Belgian Lambert 2005 -<3447> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=150328 +y_0=166262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JAD2001 / Jamaica Metric Grid -<3448> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JAD2001 / UTM zone 17N -<3449> +proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JAD2001 / UTM zone 18N -<3450> +proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Louisiana North (ftUS) -<3451> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Louisiana South (ftUS) -<3452> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Louisiana Offshore (ftUS) -<3453> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / South Dakota North (ftUS) (deprecated) -<3454> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / South Dakota South (ftUS) -<3455> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(HARN) / Louisiana North (ftUS) -<3456> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Louisiana South (ftUS) -<3457> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / South Dakota North (ftUS) -<3458> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / South Dakota South (ftUS) -<3459> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# Fiji 1986 / Fiji Map Grid -<3460> +proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# Dabola 1981 / UTM zone 28N -<3461> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs <> -# Dabola 1981 / UTM zone 29N -<3462> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs <> -# NAD83 / Maine CS2000 Central -<3463> +proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Maine CS2000 Central -<3464> +proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alabama East -<3465> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alabama West -<3466> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska Albers -<3467> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 1 -<3468> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 2 -<3469> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 3 -<3470> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 4 -<3471> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 5 -<3472> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 6 -<3473> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 7 -<3474> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 8 -<3475> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 9 -<3476> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Alaska zone 10 -<3477> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Arizona Central -<3478> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Arizona Central (ft) -<3479> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Arizona East -<3480> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Arizona East (ft) -<3481> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Arizona West -<3482> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Arizona West (ft) -<3483> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Arkansas North -<3484> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Arkansas North (ftUS) -<3485> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Arkansas South -<3486> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Arkansas South (ftUS) -<3487> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / California Albers -<3488> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / California zone 1 -<3489> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / California zone 1 (ftUS) -<3490> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / California zone 2 -<3491> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / California zone 2 (ftUS) -<3492> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / California zone 3 -<3493> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / California zone 3 (ftUS) -<3494> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / California zone 4 -<3495> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / California zone 4 (ftUS) -<3496> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / California zone 5 -<3497> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / California zone 5 (ftUS) -<3498> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / California zone 6 -<3499> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / California zone 6 (ftUS) -<3500> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Colorado Central -<3501> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Colorado Central (ftUS) -<3502> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Colorado North -<3503> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Colorado North (ftUS) -<3504> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Colorado South -<3505> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Colorado South (ftUS) -<3506> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Connecticut -<3507> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Connecticut (ftUS) -<3508> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Delaware -<3509> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Delaware (ftUS) -<3510> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Florida East -<3511> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Florida East (ftUS) -<3512> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Florida GDL Albers -<3513> +proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Florida North -<3514> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Florida North (ftUS) -<3515> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Florida West -<3516> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Florida West (ftUS) -<3517> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Georgia East -<3518> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Georgia East (ftUS) -<3519> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Georgia West -<3520> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Georgia West (ftUS) -<3521> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Idaho Central -<3522> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Idaho Central (ftUS) -<3523> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Idaho East -<3524> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Idaho East (ftUS) -<3525> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Idaho West -<3526> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Idaho West (ftUS) -<3527> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Illinois East -<3528> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Illinois East (ftUS) -<3529> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Illinois West -<3530> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Illinois West (ftUS) -<3531> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Indiana East -<3532> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Indiana East (ftUS) -<3533> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Indiana West -<3534> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Indiana West (ftUS) -<3535> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Iowa North -<3536> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Iowa North (ftUS) -<3537> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Iowa South -<3538> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Iowa South (ftUS) -<3539> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Kansas North -<3540> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Kansas North (ftUS) -<3541> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Kansas South -<3542> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Kansas South (ftUS) -<3543> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Kentucky North -<3544> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Kentucky North (ftUS) -<3545> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Kentucky Single Zone -<3546> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Kentucky Single Zone (ftUS) -<3547> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Kentucky South -<3548> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Kentucky South (ftUS) -<3549> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Louisiana North -<3550> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Louisiana North (ftUS) -<3551> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Louisiana South -<3552> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Louisiana South (ftUS) -<3553> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Maine CS2000 Central -<3554> +proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Maine CS2000 East -<3555> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Maine CS2000 West -<3556> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Maine East -<3557> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Maine West -<3558> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Maryland -<3559> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Utah North (ftUS) -<3560> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +datum=NAD83 +units=us-ft +no_defs <> -# Old Hawaiian / Hawaii zone 1 -<3561> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs <> -# Old Hawaiian / Hawaii zone 2 -<3562> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs <> -# Old Hawaiian / Hawaii zone 3 -<3563> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs <> -# Old Hawaiian / Hawaii zone 4 -<3564> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs <> -# Old Hawaiian / Hawaii zone 5 -<3565> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs <> -# NAD83 / Utah Central (ftUS) -<3566> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Utah South (ftUS) -<3567> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(HARN) / Utah North (ftUS) -<3568> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Utah Central (ftUS) -<3569> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Utah South (ftUS) -<3570> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# WGS 84 / North Pole LAEA Bering Sea -<3571> +proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / North Pole LAEA Alaska -<3572> +proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / North Pole LAEA Canada -<3573> +proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / North Pole LAEA Atlantic -<3574> +proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / North Pole LAEA Europe -<3575> +proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / North Pole LAEA Russia -<3576> +proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# GDA94 / Australian Albers -<3577> +proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Yukon Albers -<3578> +proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Yukon Albers -<3579> +proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / NWT Lambert -<3580> +proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / NWT Lambert -<3581> +proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Maryland (ftUS) -<3582> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Massachusetts Island -<3583> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Massachusetts Island (ftUS) -<3584> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Massachusetts Mainland -<3585> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Massachusetts Mainland (ftUS) -<3586> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Michigan Central -<3587> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Michigan Central (ft) -<3588> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Michigan North -<3589> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Michigan North (ft) -<3590> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Michigan Oblique Mercator -<3591> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Michigan South -<3592> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Michigan South (ft) -<3593> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Minnesota Central -<3594> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Minnesota North -<3595> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Minnesota South -<3596> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Mississippi East -<3597> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Mississippi East (ftUS) -<3598> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Mississippi West -<3599> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Mississippi West (ftUS) -<3600> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Missouri Central -<3601> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Missouri East -<3602> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Missouri West -<3603> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Montana -<3604> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Montana (ft) -<3605> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Nebraska -<3606> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Nevada Central -<3607> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Nevada Central (ftUS) -<3608> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Nevada East -<3609> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Nevada East (ftUS) -<3610> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Nevada West -<3611> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Nevada West (ftUS) -<3612> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New Hampshire -<3613> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New Hampshire (ftUS) -<3614> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New Jersey -<3615> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New Jersey (ftUS) -<3616> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New Mexico Central -<3617> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New Mexico Central (ftUS) -<3618> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New Mexico East -<3619> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New Mexico East (ftUS) -<3620> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New Mexico West -<3621> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New Mexico West (ftUS) -<3622> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New York Central -<3623> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New York Central (ftUS) -<3624> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New York East -<3625> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New York East (ftUS) -<3626> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New York Long Island -<3627> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New York Long Island (ftUS) -<3628> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / New York West -<3629> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / New York West (ftUS) -<3630> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / North Carolina -<3631> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / North Carolina (ftUS) -<3632> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / North Dakota North -<3633> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / North Dakota North (ft) -<3634> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / North Dakota South -<3635> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / North Dakota South (ft) -<3636> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Ohio North -<3637> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Ohio South -<3638> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Oklahoma North -<3639> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Oklahoma North (ftUS) -<3640> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Oklahoma South -<3641> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Oklahoma South (ftUS) -<3642> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Oregon LCC (m) -<3643> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Oregon GIC Lambert (ft) -<3644> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Oregon North -<3645> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Oregon North (ft) -<3646> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Oregon South -<3647> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Oregon South (ft) -<3648> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Pennsylvania North -<3649> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Pennsylvania North (ftUS) -<3650> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Pennsylvania South -<3651> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Pennsylvania South (ftUS) -<3652> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Rhode Island -<3653> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Rhode Island (ftUS) -<3654> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / South Carolina -<3655> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / South Carolina (ft) -<3656> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / South Dakota North -<3657> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / South Dakota North (ftUS) -<3658> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / South Dakota South -<3659> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / South Dakota South (ftUS) -<3660> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Tennessee -<3661> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Tennessee (ftUS) -<3662> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Texas Central -<3663> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Texas Central (ftUS) -<3664> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Texas Centric Albers Equal Area -<3665> +proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Texas Centric Lambert Conformal -<3666> +proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Texas North -<3667> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Texas North (ftUS) -<3668> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Texas North Central -<3669> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Texas North Central (ftUS) -<3670> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Texas South -<3671> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Texas South (ftUS) -<3672> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Texas South Central -<3673> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Texas South Central (ftUS) -<3674> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Utah Central -<3675> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Utah Central (ft) -<3676> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Utah Central (ftUS) -<3677> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Utah North -<3678> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Utah North (ft) -<3679> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Utah North (ftUS) -<3680> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Utah South -<3681> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Utah South (ft) -<3682> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(NSRS2007) / Utah South (ftUS) -<3683> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Vermont -<3684> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Virginia North -<3685> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Virginia North (ftUS) -<3686> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Virginia South -<3687> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Virginia South (ftUS) -<3688> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Washington North -<3689> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Washington North (ftUS) -<3690> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Washington South -<3691> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Washington South (ftUS) -<3692> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / West Virginia North -<3693> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / West Virginia South -<3694> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Wisconsin Central -<3695> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Wisconsin Central (ftUS) -<3696> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Wisconsin North -<3697> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Wisconsin North (ftUS) -<3698> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Wisconsin South -<3699> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Wisconsin South (ftUS) -<3700> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Wisconsin Transverse Mercator -<3701> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Wyoming East -<3702> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Wyoming East Central -<3703> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Wyoming West Central -<3704> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Wyoming West -<3705> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 59N -<3706> +proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 60N -<3707> +proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 1N -<3708> +proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 2N -<3709> +proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 3N -<3710> +proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 4N -<3711> +proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 5N -<3712> +proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 6N -<3713> +proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 7N -<3714> +proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 8N -<3715> +proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 9N -<3716> +proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 10N -<3717> +proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 11N -<3718> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 12N -<3719> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 13N -<3720> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 14N -<3721> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 15N -<3722> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 16N -<3723> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 17N -<3724> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 18N -<3725> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / UTM zone 19N -<3726> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Reunion 1947 / TM Reunion -<3727> +proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Ohio North (ftUS) -<3728> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Ohio South (ftUS) -<3729> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Wyoming East (ftUS) -<3730> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Wyoming East Central (ftUS) -<3731> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Wyoming West Central (ftUS) -<3732> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Wyoming West (ftUS) -<3733> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83 / Ohio North (ftUS) -<3734> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Ohio South (ftUS) -<3735> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Wyoming East (ftUS) -<3736> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Wyoming East Central (ftUS) -<3737> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Wyoming West Central (ftUS) -<3738> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Wyoming West (ftUS) -<3739> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(HARN) / UTM zone 10N -<3740> +proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 11N -<3741> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 12N -<3742> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 13N -<3743> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 14N -<3744> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 15N -<3745> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 16N -<3746> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 17N -<3747> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 18N -<3748> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 19N -<3749> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 4N -<3750> +proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / UTM zone 5N -<3751> +proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / Mercator 41 (deprecated) -<3752> +proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# NAD83(HARN) / Ohio North (ftUS) -<3753> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Ohio South (ftUS) -<3754> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Wyoming East (ftUS) -<3755> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Wyoming East Central (ftUS) -<3756> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Wyoming West Central (ftUS) -<3757> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Wyoming West (ftUS) -<3758> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83 / Hawaii zone 3 (ftUS) -<3759> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(HARN) / Hawaii zone 3 (ftUS) -<3760> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(CSRS) / UTM zone 22N -<3761> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / South Georgia Lambert -<3762> +proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# ETRS89 / Portugal TM06 -<3763> +proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Chatham Island Circuit 2000 -<3764> +proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# HTRS96 / Croatia TM -<3765> +proj=tmerc +lat_0=0 +lon_0=16.5 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# HTRS96 / Croatia LCC -<3766> +proj=lcc +lat_1=45.91666666666666 +lat_2=43.08333333333334 +lat_0=0 +lon_0=16.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# HTRS96 / UTM zone 33N -<3767> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# HTRS96 / UTM zone 34N -<3768> +proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Bermuda 1957 / UTM zone 20N -<3769> +proj=utm +zone=20 +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +units=m +no_defs <> -# BDA2000 / Bermuda 2000 National Grid -<3770> +proj=tmerc +lat_0=32 +lon_0=-64.75 +k=1 +x_0=550000 +y_0=100000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Alberta 3TM ref merid 111 W -<3771> +proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Alberta 3TM ref merid 114 W -<3772> +proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Alberta 3TM ref merid 117 W -<3773> +proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Alberta 3TM ref merid 120 W (deprecated) -<3774> +proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD83 / Alberta 3TM ref merid 111 W -<3775> +proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alberta 3TM ref merid 114 W -<3776> +proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alberta 3TM ref merid 117 W -<3777> +proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alberta 3TM ref merid 120 W (deprecated) -<3778> +proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Alberta 3TM ref merid 111 W -<3779> +proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / Alberta 3TM ref merid 114 W -<3780> +proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / Alberta 3TM ref merid 117 W -<3781> +proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / Alberta 3TM ref merid 120 W (deprecated) -<3782> +proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Pitcairn 2006 / Pitcairn TM 2006 -<3783> +proj=tmerc +lat_0=-25.06855261111111 +lon_0=-130.1129671111111 +k=1 +x_0=14200 +y_0=15500 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Pitcairn 1967 / UTM zone 9S -<3784> +proj=utm +zone=9 +south +ellps=intl +towgs84=185,165,42,0,0,0,0 +units=m +no_defs <> -# Popular Visualisation CRS / Mercator (deprecated) -<3785> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs <> -# World Equidistant Cylindrical (Sphere) (deprecated) -<3786> +proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs <> -# MGI / Slovene National Grid (deprecated) -<3787> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs <> -# NZGD2000 / Auckland Islands TM 2000 -<3788> +proj=tmerc +lat_0=0 +lon_0=166 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Campbell Island TM 2000 -<3789> +proj=tmerc +lat_0=0 +lon_0=169 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Antipodes Islands TM 2000 -<3790> +proj=tmerc +lat_0=0 +lon_0=179 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Raoul Island TM 2000 -<3791> +proj=tmerc +lat_0=0 +lon_0=-178 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Chatham Islands TM 2000 -<3793> +proj=tmerc +lat_0=0 +lon_0=-176.5 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Slovenia 1996 / Slovene National Grid -<3794> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Cuba Norte -<3795> +proj=lcc +lat_1=23 +lat_2=21.7 +lat_0=22.35 +lon_0=-81 +x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Cuba Sur -<3796> +proj=lcc +lat_1=21.3 +lat_2=20.13333333333333 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +x_0=500000 +y_0=229126.939 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTQ Lambert -<3797> +proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD83 / MTQ Lambert -<3798> +proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / MTQ Lambert -<3799> +proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Alberta 3TM ref merid 120 W -<3800> +proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD83 / Alberta 3TM ref merid 120 W -<3801> +proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Alberta 3TM ref merid 120 W -<3802> +proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Belgian Lambert 2008 -<3812> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=649328 +y_0=665262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Mississippi TM -<3814> +proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Mississippi TM -<3815> +proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Mississippi TM -<3816> +proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TWD97 / TM2 zone 119 -<3825> +proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TWD97 / TM2 zone 121 -<3826> +proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TWD67 / TM2 zone 119 -<3827> +proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y_0=0 +ellps=aust_SA +units=m +no_defs <> -# TWD67 / TM2 zone 121 -<3828> +proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=aust_SA +units=m +no_defs <> -# Hu Tzu Shan 1950 / UTM zone 51N -<3829> +proj=utm +zone=51 +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +units=m +no_defs <> -# WGS 84 / PDC Mercator -<3832> +proj=merc +lon_0=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# Pulkovo 1942(58) / Gauss-Kruger zone 2 -<3833> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss-Kruger zone 2 -<3834> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss-Kruger zone 3 -<3835> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss-Kruger zone 4 -<3836> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3 -<3837> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4 -<3838> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 9 -<3839> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 10 -<3840> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6 -<3841> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7 (deprecated) -<3842> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8 (deprecated) -<3843> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(58) / Stereo70 -<3844> +proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=2.329,-147.042,-92.08,0.309,-0.325,-0.497,5.69 +units=m +no_defs <> -# SWEREF99 / RT90 7.5 gon V emulation -<3845> +proj=tmerc +lat_0=0 +lon_0=11.30625 +k=1.000006 +x_0=1500025.141 +y_0=-667.282 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 / RT90 5 gon V emulation -<3846> +proj=tmerc +lat_0=0 +lon_0=13.55626666666667 +k=1.0000058 +x_0=1500044.695 +y_0=-667.13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 / RT90 2.5 gon V emulation -<3847> +proj=tmerc +lat_0=0 +lon_0=15.80628452944445 +k=1.00000561024 +x_0=1500064.274 +y_0=-667.711 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 / RT90 0 gon emulation -<3848> +proj=tmerc +lat_0=0 +lon_0=18.0563 +k=1.0000054 +x_0=1500083.521 +y_0=-668.8440000000001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 / RT90 2.5 gon O emulation -<3849> +proj=tmerc +lat_0=0 +lon_0=20.30631666666667 +k=1.0000052 +x_0=1500102.765 +y_0=-670.706 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SWEREF99 / RT90 5 gon O emulation -<3850> +proj=tmerc +lat_0=0 +lon_0=22.55633333333333 +k=1.0000049 +x_0=1500121.846 +y_0=-672.557 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / NZCS2000 -<3851> +proj=lcc +lat_1=-37.5 +lat_2=-44.5 +lat_0=-41 +lon_0=173 +x_0=3000000 +y_0=7000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RSRGD2000 / DGLC2000 -<3852> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=157 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# County ST74 -<3854> +proj=tmerc +lat_0=0 +lon_0=18.05787 +k=0.99999506 +x_0=100182.7406 +y_0=-6500620.1207 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / Pseudo-Mercator -<3857> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs <> -# ETRS89 / GK19FIN -<3873> +proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=19500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK20FIN -<3874> +proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=20500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK21FIN -<3875> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=21500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK22FIN -<3876> +proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=22500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK23FIN -<3877> +proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=23500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK24FIN -<3878> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=24500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK25FIN -<3879> +proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=25500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK26FIN -<3880> +proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=26500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK27FIN -<3881> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=27500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK28FIN -<3882> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=28500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK29FIN -<3883> +proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=29500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK30FIN -<3884> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=30500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / GK31FIN -<3885> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IGRS / UTM zone 37N -<3890> +proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IGRS / UTM zone 38N -<3891> +proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IGRS / UTM zone 39N -<3892> +proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ED50 / Iraq National Grid -<3893> +proj=tmerc +lat_0=29.02626833333333 +lon_0=46.5 +k=0.9994 +x_0=800000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# MGI 1901 / Balkans zone 5 -<3907> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs <> -# MGI 1901 / Balkans zone 6 -<3908> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs <> -# MGI 1901 / Balkans zone 7 -<3909> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs <> -# MGI 1901 / Balkans zone 8 -<3910> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs <> -# MGI 1901 / Slovenia Grid -<3911> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs <> -# MGI 1901 / Slovene National Grid -<3912> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs <> -# Puerto Rico / UTM zone 20N -<3920> +proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC42 -<3942> +proj=lcc +lat_1=41.25 +lat_2=42.75 +lat_0=42 +lon_0=3 +x_0=1700000 +y_0=1200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC43 -<3943> +proj=lcc +lat_1=42.25 +lat_2=43.75 +lat_0=43 +lon_0=3 +x_0=1700000 +y_0=2200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC44 -<3944> +proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC45 -<3945> +proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC46 -<3946> +proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC47 -<3947> +proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC48 -<3948> +proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC49 -<3949> +proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / CC50 -<3950> +proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Virginia Lambert -<3968> +proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Virginia Lambert -<3969> +proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Virginia Lambert -<3970> +proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / NSIDC EASE-Grid North (deprecated) -<3973> +proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / NSIDC EASE-Grid South (deprecated) -<3974> +proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / NSIDC EASE-Grid Global (deprecated) -<3975> +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / NSIDC Sea Ice Polar Stereographic South -<3976> +proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# NAD83 / Canada Atlas Lambert -<3978> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Canada Atlas Lambert -<3979> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Katanga 1955 / Katanga Lambert (deprecated) -<3985> +proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=9 +lon_0=26 +x_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs <> -# Katanga 1955 / Katanga Gauss zone A -<3986> +proj=tmerc +lat_0=-9 +lon_0=30 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs <> -# Katanga 1955 / Katanga Gauss zone B -<3987> +proj=tmerc +lat_0=-9 +lon_0=28 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs <> -# Katanga 1955 / Katanga Gauss zone C -<3988> +proj=tmerc +lat_0=-9 +lon_0=26 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs <> -# Katanga 1955 / Katanga Gauss zone D -<3989> +proj=tmerc +lat_0=-9 +lon_0=24 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs <> -# Puerto Rico State Plane CS of 1927 -<3991> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=us-ft +no_defs <> -# Puerto Rico / St. Croix -<3992> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=us-ft +no_defs <> -# Guam 1963 / Guam SPCS -# Unable to translate coordinate system EPSG:3993 into PROJ.4 format. -# -# WGS 84 / Mercator 41 -<3994> +proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Arctic Polar Stereographic -<3995> +proj=stere +lat_0=90 +lat_ts=71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / IBCAO Polar Stereographic -<3996> +proj=stere +lat_0=90 +lat_ts=75 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Dubai Local TM -<3997> +proj=tmerc +lat_0=0 +lon_0=55.33333333333334 +k=1 +x_0=500000 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# MOLDREF99 / Moldova TM -<4026> +proj=tmerc +lat_0=0 +lon_0=28.4 +k=0.9999400000000001 +x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / TMzn35N -<4037> +proj=utm +zone=35 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / TMzn36N -<4038> +proj=utm +zone=36 +datum=WGS84 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 12 -<4048> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 14 -<4049> +proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 16 -<4050> +proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 18 -<4051> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 20 -<4056> +proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 22 -<4057> +proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 24 -<4058> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 26 -<4059> +proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 28 -<4060> +proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / UTM zone 33S -<4061> +proj=utm +zone=33 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / UTM zone 34S -<4062> +proj=utm +zone=34 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGRDC 2005 / UTM zone 35S -<4063> +proj=utm +zone=35 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Chua / UTM zone 23S -<4071> +proj=utm +zone=23 +south +ellps=intl +towgs84=-143.87,243.37,-33.52,0,0,0,0 +units=m +no_defs <> -# REGCAN95 / UTM zone 27N -<4082> +proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# REGCAN95 / UTM zone 28N -<4083> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / World Equidistant Cylindrical -<4087> +proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# World Equidistant Cylindrical (Sphere) -<4088> +proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs <> -# ETRS89 / DKTM1 -<4093> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.99998 +x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / DKTM2 -<4094> +proj=tmerc +lat_0=0 +lon_0=10 +k=0.99998 +x_0=400000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / DKTM3 -<4095> +proj=tmerc +lat_0=0 +lon_0=11.75 +k=0.99998 +x_0=600000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / DKTM4 -<4096> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=800000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / BLM 59N (ftUS) -<4217> +proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# Kertau 1968 / Johor Grid -<4390> +proj=cass +lat_0=2.042583333333333 +lon_0=103.5627583333333 +x_0=0 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Sembilan and Melaka Grid -<4391> +proj=cass +lat_0=2.712283333333334 +lon_0=101.9411666666667 +x_0=-242.005 +y_0=-948.547 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Pahang Grid -<4392> +proj=cass +lat_0=3.710972222222222 +lon_0=102.4361777777778 +x_0=0 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Selangor Grid -<4393> +proj=cass +lat_0=3.680344444444444 +lon_0=101.5082444444444 +x_0=-21759.438 +y_0=55960.906 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Terengganu Grid -<4394> +proj=cass +lat_0=4.946141666666667 +lon_0=102.8952083333333 +x_0=0 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Pinang Grid -<4395> +proj=cass +lat_0=5.421325 +lon_0=100.3458694444444 +x_0=0 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Kedah and Perlis Grid -<4396> +proj=cass +lat_0=5.965147222222223 +lon_0=100.6375944444444 +x_0=0 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Perak Revised Grid -<4397> +proj=cass +lat_0=4.859380555555555 +lon_0=100.8167666666667 +x_0=0 +y_0=133453.669 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Kelantan Grid -<4398> +proj=cass +lat_0=5.893922222222222 +lon_0=102.1772916666667 +x_0=0 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# NAD27 / BLM 59N (ftUS) -<4399> +proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 60N (ftUS) -<4400> +proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 1N (ftUS) -<4401> +proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 2N (ftUS) -<4402> +proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 3N (ftUS) -<4403> +proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 4N (ftUS) -<4404> +proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 5N (ftUS) -<4405> +proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 6N (ftUS) -<4406> +proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 7N (ftUS) -<4407> +proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 8N (ftUS) -<4408> +proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 9N (ftUS) -<4409> +proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 10N (ftUS) -<4410> +proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 11N (ftUS) -<4411> +proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 12N (ftUS) -<4412> +proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 13N (ftUS) -<4413> +proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD83(HARN) / Guam Map Grid -<4414> +proj=tmerc +lat_0=13.5 +lon_0=144.75 +k=1 +x_0=100000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Katanga 1955 / Katanga Lambert -<4415> +proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=-9 +lon_0=26 +x_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7 -<4417> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# NAD27 / BLM 18N (ftUS) -<4418> +proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 19N (ftUS) -<4419> +proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD83 / BLM 60N (ftUS) -<4420> +proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 1N (ftUS) -<4421> +proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 2N (ftUS) -<4422> +proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 3N (ftUS) -<4423> +proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 4N (ftUS) -<4424> +proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 5N (ftUS) -<4425> +proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 6N (ftUS) -<4426> +proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 7N (ftUS) -<4427> +proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 8N (ftUS) -<4428> +proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 9N (ftUS) -<4429> +proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 10N (ftUS) -<4430> +proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 11N (ftUS) -<4431> +proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 12N (ftUS) -<4432> +proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 13N (ftUS) -<4433> +proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8 -<4434> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Puerto Rico and Virgin Is. -<4437> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / BLM 18N (ftUS) -<4438> +proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 19N (ftUS) -<4439> +proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD27 / Pennsylvania South -<4455> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New York Long Island -<4456> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=609601.2192024384 +y_0=30480.06096012192 +datum=NAD27 +units=us-ft +no_defs <> -# NAD83 / South Dakota North (ftUS) -<4457> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# WGS 84 / Australian Centre for Remote Sensing Lambert -<4462> +proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=-27 +lon_0=132 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# RGSPM06 / UTM zone 21N -<4467> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGM04 / UTM zone 38S -<4471> +proj=utm +zone=38 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Cadastre 1997 / UTM zone 38S (deprecated) -<4474> +proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF92 / UTM zone 11N -<4484> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF92 / UTM zone 12N -<4485> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF92 / UTM zone 13N -<4486> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF92 / UTM zone 14N -<4487> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF92 / UTM zone 15N -<4488> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF92 / UTM zone 16N -<4489> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 13 -<4491> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 14 -<4492> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 15 -<4493> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 16 -<4494> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 17 -<4495> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 18 -<4496> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 19 -<4497> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 20 -<4498> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 21 -<4499> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 22 -<4500> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger zone 23 -<4501> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 75E -<4502> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 81E -<4503> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 87E -<4504> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 93E -<4505> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 99E -<4506> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 105E -<4507> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 111E -<4508> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 117E -<4509> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 123E -<4510> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 129E -<4511> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / Gauss-Kruger CM 135E -<4512> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 25 -<4513> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 26 -<4514> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 27 -<4515> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 28 -<4516> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 29 -<4517> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 30 -<4518> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 31 -<4519> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 32 -<4520> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 33 -<4521> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 34 -<4522> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 35 -<4523> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 36 -<4524> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 37 -<4525> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 38 -<4526> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 39 -<4527> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 40 -<4528> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 41 -<4529> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 42 -<4530> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 43 -<4531> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 44 -<4532> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger zone 45 -<4533> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 75E -<4534> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 78E -<4535> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 81E -<4536> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 84E -<4537> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 87E -<4538> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 90E -<4539> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 93E -<4540> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 96E -<4541> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 99E -<4542> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 102E -<4543> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 105E -<4544> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 108E -<4545> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 111E -<4546> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 114E -<4547> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 117E -<4548> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 120E -<4549> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 123E -<4550> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 126E -<4551> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 129E -<4552> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 132E -<4553> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# CGCS2000 / 3-degree Gauss-Kruger CM 135E -<4554> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# RRAF 1991 / UTM zone 20N -<4559> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 13 -<4568> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 14 -<4569> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 15 -<4570> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 16 -<4571> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 17 -<4572> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 18 -<4573> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 19 -<4574> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 20 -<4575> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 21 -<4576> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 22 -<4577> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger zone 23 -<4578> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 75E -<4579> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 81E -<4580> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 87E -<4581> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 93E -<4582> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 99E -<4583> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 105E -<4584> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 111E -<4585> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 117E -<4586> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 123E -<4587> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 129E -<4588> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / Gauss-Kruger CM 135E -<4589> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# ETRS89 / UTM zone 32N (zE-N) -<4647> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 25 -<4652> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 26 -<4653> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 27 -<4654> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 28 -<4655> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 29 -<4656> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 30 -<4766> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 31 -<4767> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 32 -<4768> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 33 -<4769> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 34 -<4770> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 35 -<4771> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 36 -<4772> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 37 -<4773> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 38 -<4774> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 39 -<4775> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 40 -<4776> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 41 -<4777> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 42 -<4778> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 43 -<4779> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 44 -<4780> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger zone 45 -<4781> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 75E -<4782> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 78E -<4783> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 81E -<4784> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 84E -<4785> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 87E -<4786> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 90E -<4787> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 93E -<4788> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 96E -<4789> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 99E -<4790> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 102E -<4791> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 105E -<4792> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 108E -<4793> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 111E -<4794> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 114E -<4795> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 117E -<4796> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 120E -<4797> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 123E -<4798> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 126E -<4799> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 129E -<4800> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 132E -<4812> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# New Beijing / 3-degree Gauss-Kruger CM 135E -<4822> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# WGS 84 / Cape Verde National -<4826> +proj=lcc +lat_1=15 +lat_2=16.66666666666667 +lat_0=15.83333333333333 +lon_0=-24 +x_0=161587.83 +y_0=128511.202 +datum=WGS84 +units=m +no_defs <> -# ETRS89 / LCC Germany (N-E) -<4839> +proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 5 (deprecated) -<4855> +proj=tmerc +lat_0=0 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 6 (deprecated) -<4856> +proj=tmerc +lat_0=0 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 7 (deprecated) -<4857> +proj=tmerc +lat_0=0 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 8 (deprecated) -<4858> +proj=tmerc +lat_0=0 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 9 (deprecated) -<4859> +proj=tmerc +lat_0=0 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 10 (deprecated) -<4860> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 11 (deprecated) -<4861> +proj=tmerc +lat_0=0 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 12 (deprecated) -<4862> +proj=tmerc +lat_0=0 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 13 (deprecated) -<4863> +proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 14 (deprecated) -<4864> +proj=tmerc +lat_0=0 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 15 (deprecated) -<4865> +proj=tmerc +lat_0=0 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 16 (deprecated) -<4866> +proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 17 (deprecated) -<4867> +proj=tmerc +lat_0=0 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 18 (deprecated) -<4868> +proj=tmerc +lat_0=0 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 19 (deprecated) -<4869> +proj=tmerc +lat_0=0 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 20 (deprecated) -<4870> +proj=tmerc +lat_0=0 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 21 (deprecated) -<4871> +proj=tmerc +lat_0=0 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 22 (deprecated) -<4872> +proj=tmerc +lat_0=0 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 23 (deprecated) -<4873> +proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 24 (deprecated) -<4874> +proj=tmerc +lat_0=0 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 25 (deprecated) -<4875> +proj=tmerc +lat_0=0 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 26 (deprecated) -<4876> +proj=tmerc +lat_0=0 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 27 (deprecated) -<4877> +proj=tmerc +lat_0=0 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 28 (deprecated) -<4878> +proj=tmerc +lat_0=0 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 29 (deprecated) -<4879> +proj=tmerc +lat_0=0 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 30 (deprecated) -<4880> +proj=tmerc +lat_0=0 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# PTRA08 / UTM zone 25N -<5014> +proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# PTRA08 / UTM zone 26N -<5015> +proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# PTRA08 / UTM zone 28N -<5016> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Lisbon 1890 / Portugal Bonne New -# Unable to translate coordinate system EPSG:5017 into PROJ.4 format. -# -# Lisbon / Portuguese Grid New -<5018> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +units=m +no_defs <> -# WGS 84 / UPS North (E,N) -<5041> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UPS South (E,N) -<5042> +proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# ETRS89 / TM35FIN(N,E) -<5048> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Conus Albers -<5069> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD83 / Conus Albers -<5070> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Conus Albers -<5071> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Conus Albers -<5072> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 5 -<5105> +proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 6 -<5106> +proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 7 -<5107> +proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 8 -<5108> +proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 9 -<5109> +proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 10 -<5110> +proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 11 -<5111> +proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 12 -<5112> +proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 13 -<5113> +proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 14 -<5114> +proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 15 -<5115> +proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 16 -<5116> +proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 17 -<5117> +proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 18 -<5118> +proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 19 -<5119> +proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 20 -<5120> +proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 21 -<5121> +proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 22 -<5122> +proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 23 -<5123> +proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 24 -<5124> +proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 25 -<5125> +proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 26 -<5126> +proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 27 -<5127> +proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 28 -<5128> +proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 29 -<5129> +proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / NTM zone 30 -<5130> +proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korean 1985 / East Sea Belt -<5167> +proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Central Belt Jeju -<5168> +proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=550000 +ellps=bessel +units=m +no_defs <> -# Tokyo 1892 / Korea West Belt -<5169> +proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Tokyo 1892 / Korea Central Belt -<5170> +proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Tokyo 1892 / Korea East Belt -<5171> +proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Tokyo 1892 / Korea East Sea Belt -<5172> +proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Modified West Belt -<5173> +proj=tmerc +lat_0=38 +lon_0=125.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Modified Central Belt -<5174> +proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Modified Central Belt Jeju -<5175> +proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=550000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Modified East Belt -<5176> +proj=tmerc +lat_0=38 +lon_0=129.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Modified East Sea Belt -<5177> +proj=tmerc +lat_0=38 +lon_0=131.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Unified CS -<5178> +proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=bessel +units=m +no_defs <> -# Korea 2000 / Unified CS -<5179> +proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / West Belt -<5180> +proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / Central Belt -<5181> +proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / Central Belt Jeju -<5182> +proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=550000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / East Belt -<5183> +proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / East Sea Belt -<5184> +proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / West Belt 2010 -<5185> +proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / Central Belt 2010 -<5186> +proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / East Belt 2010 -<5187> +proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Korea 2000 / East Sea Belt 2010 -<5188> +proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# S-JTSK (Ferro) / Krovak East North -<5221> +proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# WGS 84 / Gabon TM -<5223> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=500000 +datum=WGS84 +units=m +no_defs <> -# S-JTSK/05 (Ferro) / Modified Krovak -# Unable to translate coordinate system EPSG:5224 into PROJ.4 format. -# -# S-JTSK/05 (Ferro) / Modified Krovak East North -# Unable to translate coordinate system EPSG:5225 into PROJ.4 format. -# -# Kandawala / Sri Lanka Grid -<5234> +proj=tmerc +lat_0=7.000480277777778 +lon_0=80.77171111111112 +k=0.9999238418 +x_0=200000 +y_0=200000 +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +units=m +no_defs <> -# SLD99 / Sri Lanka Grid 1999 -<5235> +proj=tmerc +lat_0=7.000471527777778 +lon_0=80.77171308333334 +k=0.9999238418 +x_0=500000 +y_0=500000 +a=6377276.345 +b=6356075.41314024 +towgs84=-0.293,766.95,87.713,0.195704,1.695068,3.473016,-0.039338 +units=m +no_defs <> -# ETRS89 / LCC Germany (E-N) -<5243> +proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDBD2009 / Brunei BRSO -<5247> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +no_uoff +gamma=53.13010236111111 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / TM27 -<5253> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / TM30 -<5254> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / TM33 -<5255> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / TM36 -<5256> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / TM39 -<5257> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / TM42 -<5258> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / TM45 -<5259> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Bhutan National Grid -<5266> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / 3-degree Gauss-Kruger zone 9 -<5269> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / 3-degree Gauss-Kruger zone 10 -<5270> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / 3-degree Gauss-Kruger zone 11 -<5271> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / 3-degree Gauss-Kruger zone 12 -<5272> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / 3-degree Gauss-Kruger zone 13 -<5273> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / 3-degree Gauss-Kruger zone 14 -<5274> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / 3-degree Gauss-Kruger zone 15 -<5275> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Bumthang TM -<5292> +proj=tmerc +lat_0=0 +lon_0=90.73333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Chhukha TM -<5293> +proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Dagana TM -<5294> +proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Gasa TM -<5295> +proj=tmerc +lat_0=0 +lon_0=90.03333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Ha TM -<5296> +proj=tmerc +lat_0=0 +lon_0=90.15000000000001 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Lhuentse TM -<5297> +proj=tmerc +lat_0=0 +lon_0=91.13333333333334 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Mongar TM -<5298> +proj=tmerc +lat_0=0 +lon_0=91.23333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Paro TM -<5299> +proj=tmerc +lat_0=0 +lon_0=89.34999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Pemagatshel TM -<5300> +proj=tmerc +lat_0=0 +lon_0=91.34999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Punakha TM -<5301> +proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Samdrup Jongkhar TM -<5302> +proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Samtse TM -<5303> +proj=tmerc +lat_0=0 +lon_0=89.06666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Sarpang TM -<5304> +proj=tmerc +lat_0=0 +lon_0=90.26666666666667 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Thimphu TM -<5305> +proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Trashigang TM -<5306> +proj=tmerc +lat_0=0 +lon_0=91.75 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Trongsa TM -<5307> +proj=tmerc +lat_0=0 +lon_0=90.5 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Tsirang TM -<5308> +proj=tmerc +lat_0=0 +lon_0=90.16666666666667 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Wangdue Phodrang TM -<5309> +proj=tmerc +lat_0=0 +lon_0=90.11666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Yangtse TM -<5310> +proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DRUKREF 03 / Zhemgang TM -<5311> +proj=tmerc +lat_0=0 +lon_0=90.86666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Faroe TM -<5316> +proj=tmerc +lat_0=0 +lon_0=-7 +k=0.999997 +x_0=200000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Teranet Ontario Lambert -<5320> +proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Teranet Ontario Lambert -<5321> +proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ISN2004 / Lambert 2004 -<5325> +proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=1700000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Segara (Jakarta) / NEIEZ -<5329> +proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +units=m +no_defs <> -# Batavia (Jakarta) / NEIEZ -<5330> +proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +units=m +no_defs <> -# Makassar (Jakarta) / NEIEZ -<5331> +proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs <> -# Aratu / UTM zone 25S -<5337> +proj=utm +zone=25 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs <> -# POSGAR 2007 / Argentina 1 -<5343> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 2007 / Argentina 2 -<5344> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 2007 / Argentina 3 -<5345> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 2007 / Argentina 4 -<5346> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 2007 / Argentina 5 -<5347> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 2007 / Argentina 6 -<5348> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 2007 / Argentina 7 -<5349> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MARGEN / UTM zone 20S -<5355> +proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MARGEN / UTM zone 19S -<5356> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MARGEN / UTM zone 21S -<5357> +proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS-Chile / UTM zone 19S -<5361> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS-Chile / UTM zone 18S -<5362> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# CR05 / CRTM05 -<5367> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS-ROU98 / UTM zone 21S -<5382> +proj=utm +zone=21 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS-ROU98 / UTM zone 22S -<5383> +proj=utm +zone=22 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Peru96 / UTM zone 18S -<5387> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Peru96 / UTM zone 17S (deprecated) -<5388> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Peru96 / UTM zone 19S -<5389> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 26S -<5396> +proj=utm +zone=26 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Ocotepeque 1935 / Costa Rica Norte -<5456> +proj=lcc +lat_1=10.46666666666667 +lat_0=10.46666666666667 +lon_0=-84.33333333333333 +k_0=0.99995696 +x_0=500000 +y_0=271820.522 +ellps=clrk66 +towgs84=205,96,-98,0,0,0,0 +units=m +no_defs <> -# Ocotepeque 1935 / Costa Rica Sur -<5457> +proj=lcc +lat_1=9 +lat_0=9 +lon_0=-83.66666666666667 +k_0=0.99995696 +x_0=500000 +y_0=327987.436 +ellps=clrk66 +towgs84=205,96,-98,0,0,0,0 +units=m +no_defs <> -# Ocotepeque 1935 / Guatemala Norte (deprecated) -<5458> +proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +datum=NAD27 +units=m +no_defs <> -# Ocotepeque 1935 / Guatemala Sur -<5459> +proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +towgs84=205,96,-98,0,0,0,0 +units=m +no_defs <> -# Ocotepeque 1935 / El Salvador Lambert -<5460> +proj=lcc +lat_1=13.78333333333333 +lat_0=13.78333333333333 +lon_0=-89 +k_0=0.99996704 +x_0=500000 +y_0=295809.184 +ellps=clrk66 +towgs84=205,96,-98,0,0,0,0 +units=m +no_defs <> -# Ocotepeque 1935 / Nicaragua Norte -<5461> +proj=lcc +lat_1=13.86666666666667 +lat_0=13.86666666666667 +lon_0=-85.5 +k_0=0.99990314 +x_0=500000 +y_0=359891.816 +ellps=clrk66 +towgs84=205,96,-98,0,0,0,0 +units=m +no_defs <> -# Ocotepeque 1935 / Nicaragua Sur -<5462> +proj=lcc +lat_1=11.73333333333333 +lat_0=11.73333333333333 +lon_0=-85.5 +k_0=0.9999222800000001 +x_0=500000 +y_0=288876.327 +ellps=clrk66 +towgs84=205,96,-98,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 17N -<5463> +proj=utm +zone=17 +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# Sibun Gorge 1922 / Colony Grid (deprecated) -<5466> +proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 +k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs <> -# Panama-Colon 1911 / Panama Lambert -<5469> +proj=lcc +lat_1=8.416666666666666 +lat_0=8.416666666666666 +lon_0=-80 +k_0=0.99989909 +x_0=500000 +y_0=294865.303 +ellps=clrk66 +units=m +no_defs <> -# Panama-Colon 1911 / Panama Polyconic -<5472> +proj=poly +lat_0=8.25 +lon_0=-81 +x_0=914391.7962 +y_0=999404.7217154861 +ellps=clrk66 +to_meter=0.9143917962 +no_defs <> -# RSRGD2000 / MSLC2000 -<5479> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=163 +x_0=7000000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RSRGD2000 / BCLC2000 -<5480> +proj=lcc +lat_1=-73.66666666666667 +lat_2=-75.33333333333333 +lat_0=-74.5 +lon_0=165 +x_0=5000000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RSRGD2000 / PCLC2000 -<5481> +proj=lcc +lat_1=-70.66666666666667 +lat_2=-72.33333333333333 +lat_0=-71.5 +lon_0=166 +x_0=3000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RSRGD2000 / RSPS2000 -<5482> +proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=180 +k=0.994 +x_0=5000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGAF09 / UTM zone 20N -<5490> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# S-JTSK / Krovak -<5513> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +units=m +no_defs <> -# S-JTSK / Krovak East North -<5514> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +units=m +no_defs <> -# S-JTSK/05 / Modified Krovak -# Unable to translate coordinate system EPSG:5515 into PROJ.4 format. -# -# S-JTSK/05 / Modified Krovak East North -# Unable to translate coordinate system EPSG:5516 into PROJ.4 format. -# -# CI1971 / Chatham Islands Map Grid -<5518> +proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y_0=650000 +ellps=intl +towgs84=175,-38,113,0,0,0,0 +units=m +no_defs <> -# CI1979 / Chatham Islands Map Grid -<5519> +proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y_0=650000 +ellps=intl +towgs84=174.05,-25.49,112.57,0,0,0.554,0.2263 +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 1 -<5520> +proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# WGS 84 / Gabon TM 2011 -<5523> +proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=1500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs <> -# SAD69(96) / Brazil Polyconic -<5530> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 21S -<5531> +proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 22S (deprecated) -<5532> +proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 23S -<5533> +proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 24S -<5534> +proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 25S -<5535> +proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre 1961 / UTM zone 21S -<5536> +proj=utm +zone=21 +south +ellps=intl +units=m +no_defs <> -# Corrego Alegre 1961 / UTM zone 22S -<5537> +proj=utm +zone=22 +south +ellps=intl +units=m +no_defs <> -# Corrego Alegre 1961 / UTM zone 23S -<5538> +proj=utm +zone=23 +south +ellps=intl +units=m +no_defs <> -# Corrego Alegre 1961 / UTM zone 24S -<5539> +proj=utm +zone=24 +south +ellps=intl +units=m +no_defs <> -# PNG94 / PNGMG94 zone 54 -<5550> +proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# PNG94 / PNGMG94 zone 55 -<5551> +proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# PNG94 / PNGMG94 zone 56 -<5552> +proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Ocotepeque 1935 / Guatemala Norte -<5559> +proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +towgs84=205,96,-98,0,0,0,0 +units=m +no_defs <> -# UCS-2000 / Gauss-Kruger zone 4 -<5562> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Gauss-Kruger zone 5 -<5563> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Gauss-Kruger zone 6 -<5564> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Gauss-Kruger zone 7 -<5565> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Gauss-Kruger CM 21E -<5566> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Gauss-Kruger CM 27E -<5567> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Gauss-Kruger CM 33E -<5568> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Gauss-Kruger CM 39E -<5569> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger zone 7 (deprecated) -<5570> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger zone 8 (deprecated) -<5571> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger zone 9 (deprecated) -<5572> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger zone 10 (deprecated) -<5573> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger zone 11 (deprecated) -<5574> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger zone 12 (deprecated) -<5575> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger zone 13 (deprecated) -<5576> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger CM 21E (deprecated) -<5577> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger CM 24E (deprecated) -<5578> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger CM 27E (deprecated) -<5579> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger CM 30E (deprecated) -<5580> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger CM 33E (deprecated) -<5581> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger CM 36E (deprecated) -<5582> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / 3-degree Gauss-Kruger CM 39E (deprecated) -<5583> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# NAD27 / New Brunswick Stereographic (NAD27) -<5588> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=304800 +y_0=304800 +datum=NAD27 +units=ft +no_defs <> -# Sibun Gorge 1922 / Colony Grid -<5589> +proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 +k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs <> -# FEH2010 / Fehmarnbelt TM -<5596> +proj=tmerc +lat_0=0 +lon_0=11.33333333333333 +k=1 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Michigan East -<5623> +proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Michigan Old Central -<5624> +proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Michigan West -<5625> +proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# ED50 / TM 6 NE -<5627> +proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# Moznet / UTM zone 38S -<5629> +proj=utm +zone=38 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(58) / Gauss-Kruger zone 2 (E-N) -<5631> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# PTRA08 / LCC Europe -<5632> +proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# PTRA08 / LAEA Europe -<5633> +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# REGCAN95 / LCC Europe -<5634> +proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# REGCAN95 / LAEA Europe -<5635> +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / LAEA Europe -<5636> +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TUREF / LCC Europe -<5637> +proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ISN2004 / LAEA Europe -<5638> +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ISN2004 / LCC Europe -<5639> +proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / Brazil Mercator -<5641> +proj=merc +lon_0=-43 +lat_ts=-2 +x_0=5000000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ED50 / SPBA LCC -<5643> +proj=lcc +lat_1=52.66666666666666 +lat_2=54.33333333333334 +lat_0=48 +lon_0=10 +x_0=815000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# RGR92 / UTM zone 39S -<5644> +proj=utm +zone=39 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Vermont (ftUS) -<5646> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# ETRS89 / UTM zone 31N (zE-N) -<5649> +proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 33N (zE-N) -<5650> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=33500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 31N (N-zE) -<5651> +proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 32N (N-zE) -<5652> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 33N (N-zE) -<5653> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=33500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Vermont (ftUS) -<5654> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Vermont (ftUS) -<5655> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# Monte Mario / TM Emilia-Romagna -<5659> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=500053 +y_0=-3999820 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs <> -# Pulkovo 1942(58) / Gauss-Kruger zone 3 (E-N) -<5663> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss-Kruger zone 2 (E-N) -<5664> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss-Kruger zone 3 (E-N) -<5665> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# PD/83 / 3-degree Gauss-Kruger zone 3 (E-N) -<5666> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# PD/83 / 3-degree Gauss-Kruger zone 4 (E-N) -<5667> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RD/83 / 3-degree Gauss-Kruger zone 4 (E-N) -<5668> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# RD/83 / 3-degree Gauss-Kruger zone 5 (E-N) -<5669> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3 (E-N) -<5670> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4 (E-N) -<5671> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5 (E-N) -<5672> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3 (E-N) -<5673> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4 (E-N) -<5674> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5 (E-N) -<5675> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 2 (E-N) -<5676> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 3 (E-N) -<5677> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 4 (E-N) -<5678> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 5 (E-N) -<5679> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 1 (E-N) -<5680> +proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DB_REF / 3-degree Gauss-Kruger zone 2 (E-N) -<5682> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DB_REF / 3-degree Gauss-Kruger zone 3 (E-N) -<5683> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DB_REF / 3-degree Gauss-Kruger zone 4 (E-N) -<5684> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DB_REF / 3-degree Gauss-Kruger zone 5 (E-N) -<5685> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# NZGD2000 / UTM zone 1S -<5700> +proj=utm +zone=1 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# EPSG topocentric example A -# Unable to translate coordinate system EPSG:5819 into PROJ.4 format. -# -# EPSG topocentric example B -# Unable to translate coordinate system EPSG:5820 into PROJ.4 format. -# -# EPSG vertical perspective example -# Unable to translate coordinate system EPSG:5821 into PROJ.4 format. -# -# AGD66 / ACT Standard Grid -<5825> +proj=tmerc +lat_0=-35.31773627777778 +lon_0=149.0092948305555 +k=1.000086 +x_0=200000 +y_0=600000 +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# Yemen NGN96 / UTM zone 37N -<5836> +proj=utm +zone=37 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Yemen NGN96 / UTM zone 40N -<5837> +proj=utm +zone=40 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Peru96 / UTM zone 17S -<5839> +proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / TM 12 SE -<5842> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs <> -# RGRDC 2005 / Congo TM zone 30 -<5844> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 22S -<5858> +proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 18S -<5875> +proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 19S -<5876> +proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# SAD69(96) / UTM zone 20S -<5877> +proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs <> -# Cadastre 1997 / UTM zone 38S -<5879> +proj=utm +zone=38 +south +ellps=intl +towgs84=-381.788,-57.501,-256.673,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / Brazil Polyconic -<5880> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# TGD2005 / Tonga Map Grid -<5887> +proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs <> -# JAXA Snow Depth Polar Stereographic North -<5890> +proj=stere +lat_0=90 +lat_ts=70 +lon_0=90 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone A1 -<5921> +proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone A2 -<5922> +proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone A3 -<5923> +proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone A4 -<5924> +proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone A5 -<5925> +proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone B1 -<5926> +proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone B2 -<5927> +proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone B3 -<5928> +proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone B4 -<5929> +proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone B5 -<5930> +proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone C1 -<5931> +proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone C2 -<5932> +proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone C3 -<5933> +proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone C4 -<5934> +proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic Regional zone C5 -<5935> +proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Alaska Polar Stereographic -<5936> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=-150 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Canada Polar Stereographic -<5937> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=-100 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Greenland Polar Stereographic -<5938> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=-33 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Norway Polar Stereographic -<5939> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=18 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Russia Polar Stereographic -<5940> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=105 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 1-25 -<6050> +proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-30 +x_0=25500000 +y_0=1500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 2-18 -<6051> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-52 +x_0=18500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 2-20 -<6052> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-12 +x_0=20500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 3-29 -<6053> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-69 +x_0=29500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 3-31 -<6054> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-39 +x_0=31500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 3-33 -<6055> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-10 +x_0=33500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 4-20 -<6056> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-64 +x_0=20500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 4-22 -<6057> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-39 +x_0=22500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 4-24 -<6058> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-14 +x_0=24500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 5-41 -<6059> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-62 +x_0=41500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 5-43 -<6060> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-42 +x_0=43500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 5-45 -<6061> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-22 +x_0=45500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 6-26 -<6062> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-56 +x_0=26500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 6-28 -<6063> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-38 +x_0=28500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 6-30 -<6064> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-20 +x_0=30500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 7-11 -<6065> +proj=lcc +lat_1=67 +lat_2=63.66666666666666 +lat_0=65.35103930555555 +lon_0=-51 +x_0=11500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 7-13 -<6066> +proj=lcc +lat_1=67 +lat_2=63.66666666666666 +lat_0=65.35103930555555 +lon_0=-34 +x_0=13500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 8-20 -<6067> +proj=lcc +lat_1=63.66666666666666 +lat_2=60.33333333333334 +lat_0=62.01530688888889 +lon_0=-52 +x_0=20500000 +y_0=8500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GR96 / EPSG Arctic zone 8-22 -<6068> +proj=lcc +lat_1=63.66666666666666 +lat_2=60.33333333333334 +lat_0=62.01530688888889 +lon_0=-37 +x_0=22500000 +y_0=8500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / EPSG Arctic zone 2-22 -<6069> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=16 +x_0=22500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / EPSG Arctic zone 3-11 -<6070> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=21 +x_0=11500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / EPSG Arctic zone 4-26 -<6071> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=10 +x_0=26500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / EPSG Arctic zone 4-28 -<6072> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=34 +x_0=28500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / EPSG Arctic zone 5-11 -<6073> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=14 +x_0=11500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / EPSG Arctic zone 5-13 -<6074> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=34 +x_0=13500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 2-24 -<6075> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=53 +x_0=24500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 2-26 -<6076> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=93 +x_0=26500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 3-13 -<6077> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=52 +x_0=13500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 3-15 -<6078> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=83 +x_0=15500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 3-17 -<6079> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=114 +x_0=17500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 3-19 -<6080> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=145 +x_0=19500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 4-30 -<6081> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=58 +x_0=30500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 4-32 -<6082> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=82 +x_0=32500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 4-34 -<6083> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=106 +x_0=34500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 4-36 -<6084> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=130 +x_0=36500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 4-38 -<6085> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=154 +x_0=38500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 4-40 -<6086> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=179 +x_0=40500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 5-15 -<6087> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=54 +x_0=15500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 5-17 -<6088> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=74 +x_0=17500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 5-19 -<6089> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=95 +x_0=19500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 5-21 -<6090> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=116 +x_0=21500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 5-23 -<6091> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=137 +x_0=23500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 5-25 -<6092> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=158 +x_0=25500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 5-27 -<6093> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=179 +x_0=27500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs <> -# NAD83(NSRS2007) / EPSG Arctic zone 5-29 -<6094> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-163 +x_0=29500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / EPSG Arctic zone 5-31 -<6095> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-147 +x_0=31500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / EPSG Arctic zone 6-14 -<6096> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-165 +x_0=14500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / EPSG Arctic zone 6-16 -<6097> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-147 +x_0=16500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 1-23 -<6098> +proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-90 +x_0=23500000 +y_0=1500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 2-14 -<6099> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-115 +x_0=14500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 2-16 -<6100> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-75 +x_0=16500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 3-25 -<6101> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-129 +x_0=25500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 3-27 -<6102> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-99 +x_0=27500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 3-29 -<6103> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-69 +x_0=29500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 4-14 -<6104> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-129 +x_0=14500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 4-16 -<6105> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-104 +x_0=16500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 4-18 -<6106> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-79 +x_0=18500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 5-33 -<6107> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-131 +x_0=33500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 5-35 -<6108> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-111 +x_0=35500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 5-37 -<6109> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-91 +x_0=37500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 5-39 -<6110> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-71 +x_0=39500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 6-18 -<6111> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-132 +x_0=18500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 6-20 -<6112> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-113 +x_0=20500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 6-22 -<6113> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-94 +x_0=22500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / EPSG Arctic zone 6-24 -<6114> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-75 +x_0=24500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 1-27 -<6115> +proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=30 +x_0=27500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 1-29 -<6116> +proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=90 +x_0=29500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 1-31 -<6117> +proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=150 +x_0=31500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 1-21 -<6118> +proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-150 +x_0=21500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 2-28 -<6119> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=133 +x_0=28500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 2-10 -<6120> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=166 +x_0=10500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 2-12 -<6121> +proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-154 +x_0=12500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 3-21 -<6122> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=176 +x_0=21500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 3-23 -<6123> +proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-153 +x_0=23500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / EPSG Arctic zone 4-12 -<6124> +proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-155 +x_0=12500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs <> -# ETRS89 / EPSG Arctic zone 5-47 -<6125> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-5 +x_0=47500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Grand Cayman National Grid 1959 -<6128> +proj=utm +zone=17 +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +units=ft +no_defs <> -# Sister Islands National Grid 1961 -<6129> +proj=utm +zone=17 +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +units=ft +no_defs <> -# Cayman Islands National Grid 2011 (deprecated) -<6141> +proj=lcc +lat_1=19.33333333333333 +lat_2=19.7 +lat_0=19.33333333333333 +lon_0=80.56666666666666 +x_0=899160 +y_0=579120 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD27 / Michigan North (deprecated) -# Unable to translate coordinate system EPSG:6200 into PROJ.4 format. -# -# NAD27 / Michigan Central -# Unable to translate coordinate system EPSG:6201 into PROJ.4 format. -# -# NAD27 / Michigan South -# Unable to translate coordinate system EPSG:6202 into PROJ.4 format. -# -# Macedonia State Coordinate System -<6204> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 23N -<6210> +proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 24N -<6211> +proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# MAGNA-SIRGAS / Arauca urban grid -# Unable to translate coordinate system EPSG:6244 into PROJ.4 format. -# -# MAGNA-SIRGAS / Armenia urban grid -# Unable to translate coordinate system EPSG:6245 into PROJ.4 format. -# -# MAGNA-SIRGAS / Barranquilla urban grid -# Unable to translate coordinate system EPSG:6246 into PROJ.4 format. -# -# MAGNA-SIRGAS / Bogota urban grid -# Unable to translate coordinate system EPSG:6247 into PROJ.4 format. -# -# MAGNA-SIRGAS / Bucaramanga urban grid -# Unable to translate coordinate system EPSG:6248 into PROJ.4 format. -# -# MAGNA-SIRGAS / Cali urban grid -# Unable to translate coordinate system EPSG:6249 into PROJ.4 format. -# -# MAGNA-SIRGAS / Cartagena urban grid -# Unable to translate coordinate system EPSG:6250 into PROJ.4 format. -# -# MAGNA-SIRGAS / Cucuta urban grid -# Unable to translate coordinate system EPSG:6251 into PROJ.4 format. -# -# MAGNA-SIRGAS / Florencia urban grid -# Unable to translate coordinate system EPSG:6252 into PROJ.4 format. -# -# MAGNA-SIRGAS / Ibague urban grid -# Unable to translate coordinate system EPSG:6253 into PROJ.4 format. -# -# MAGNA-SIRGAS / Inirida urban grid -# Unable to translate coordinate system EPSG:6254 into PROJ.4 format. -# -# MAGNA-SIRGAS / Leticia urban grid -# Unable to translate coordinate system EPSG:6255 into PROJ.4 format. -# -# MAGNA-SIRGAS / Manizales urban grid -# Unable to translate coordinate system EPSG:6256 into PROJ.4 format. -# -# MAGNA-SIRGAS / Medellin urban grid -# Unable to translate coordinate system EPSG:6257 into PROJ.4 format. -# -# MAGNA-SIRGAS / Mitu urban grid -# Unable to translate coordinate system EPSG:6258 into PROJ.4 format. -# -# MAGNA-SIRGAS / Mocoa urban grid -# Unable to translate coordinate system EPSG:6259 into PROJ.4 format. -# -# MAGNA-SIRGAS / Monteria urban grid -# Unable to translate coordinate system EPSG:6260 into PROJ.4 format. -# -# MAGNA-SIRGAS / Neiva urban grid -# Unable to translate coordinate system EPSG:6261 into PROJ.4 format. -# -# MAGNA-SIRGAS / Pasto urban grid -# Unable to translate coordinate system EPSG:6262 into PROJ.4 format. -# -# MAGNA-SIRGAS / Pereira urban grid -# Unable to translate coordinate system EPSG:6263 into PROJ.4 format. -# -# MAGNA-SIRGAS / Popayan urban grid -# Unable to translate coordinate system EPSG:6264 into PROJ.4 format. -# -# MAGNA-SIRGAS / Puerto Carreno urban grid -# Unable to translate coordinate system EPSG:6265 into PROJ.4 format. -# -# MAGNA-SIRGAS / Quibdo urban grid -# Unable to translate coordinate system EPSG:6266 into PROJ.4 format. -# -# MAGNA-SIRGAS / Riohacha urban grid -# Unable to translate coordinate system EPSG:6267 into PROJ.4 format. -# -# MAGNA-SIRGAS / San Andres urban grid -# Unable to translate coordinate system EPSG:6268 into PROJ.4 format. -# -# MAGNA-SIRGAS / San Jose del Guaviare urban grid -# Unable to translate coordinate system EPSG:6269 into PROJ.4 format. -# -# MAGNA-SIRGAS / Santa Marta urban grid -# Unable to translate coordinate system EPSG:6270 into PROJ.4 format. -# -# MAGNA-SIRGAS / Sucre urban grid -# Unable to translate coordinate system EPSG:6271 into PROJ.4 format. -# -# MAGNA-SIRGAS / Tunja urban grid -# Unable to translate coordinate system EPSG:6272 into PROJ.4 format. -# -# MAGNA-SIRGAS / Valledupar urban grid -# Unable to translate coordinate system EPSG:6273 into PROJ.4 format. -# -# MAGNA-SIRGAS / Villavicencio urban grid -# Unable to translate coordinate system EPSG:6274 into PROJ.4 format. -# -# MAGNA-SIRGAS / Yopal urban grid -# Unable to translate coordinate system EPSG:6275 into PROJ.4 format. -# -# NAD83(CORS96) / Puerto Rico and Virgin Is. -<6307> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs <> -# CGRS93 / Cyprus Local Transverse Mercator -<6312> +proj=tmerc +lat_0=0 +lon_0=33 +k=0.99995 +x_0=200000 +y_0=-3500000 +ellps=WGS84 +towgs84=8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926 +units=m +no_defs <> -# Macedonia State Coordinate System zone 7 -<6316> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs <> -# NAD83(2011) / UTM zone 59N -<6328> +proj=utm +zone=59 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 60N -<6329> +proj=utm +zone=60 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 1N -<6330> +proj=utm +zone=1 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 2N -<6331> +proj=utm +zone=2 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 3N -<6332> +proj=utm +zone=3 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 4N -<6333> +proj=utm +zone=4 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 5N -<6334> +proj=utm +zone=5 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 6N -<6335> +proj=utm +zone=6 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 7N -<6336> +proj=utm +zone=7 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 8N -<6337> +proj=utm +zone=8 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 9N -<6338> +proj=utm +zone=9 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 10N -<6339> +proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 11N -<6340> +proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 12N -<6341> +proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 13N -<6342> +proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 14N -<6343> +proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 15N -<6344> +proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 16N -<6345> +proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 17N -<6346> +proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 18N -<6347> +proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / UTM zone 19N -<6348> +proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Conus Albers -<6350> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / EPSG Arctic zone 5-29 -<6351> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-163 +x_0=29500000 +y_0=5500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / EPSG Arctic zone 5-31 -<6352> +proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-147 +x_0=31500000 +y_0=5500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / EPSG Arctic zone 6-14 -<6353> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-165 +x_0=14500000 +y_0=6500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / EPSG Arctic zone 6-16 -<6354> +proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-147 +x_0=16500000 +y_0=6500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alabama East -<6355> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alabama West -<6356> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# Mexico ITRF92 / LCC -<6362> +proj=lcc +lat_1=17.5 +lat_2=29.5 +lat_0=12 +lon_0=-102 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF2008 / UTM zone 11N -<6366> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF2008 / UTM zone 12N -<6367> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF2008 / UTM zone 13N -<6368> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF2008 / UTM zone 14N -<6369> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF2008 / UTM zone 15N -<6370> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF2008 / UTM zone 16N -<6371> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Mexico ITRF2008 / LCC -<6372> +proj=lcc +lat_1=17.5 +lat_2=29.5 +lat_0=12 +lon_0=-102 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# UCS-2000 / Ukraine TM zone 7 -<6381> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=300000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Ukraine TM zone 8 -<6382> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=300000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Ukraine TM zone 9 -<6383> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=300000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Ukraine TM zone 10 -<6384> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=300000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Ukraine TM zone 11 -<6385> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=300000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Ukraine TM zone 12 -<6386> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=300000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# UCS-2000 / Ukraine TM zone 13 -<6387> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=300000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,0,0.35,0.736,0 +units=m +no_defs <> -# Cayman Islands National Grid 2011 -<6391> +proj=lcc +lat_1=19.33333333333333 +lat_2=19.7 +lat_0=19.33333333333333 +lon_0=-80.56666666666666 +x_0=899160 +y_0=579120 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> -# NAD83(2011) / Alaska Albers -<6393> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 1 -<6394> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 2 -<6395> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 3 -<6396> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 4 -<6397> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 5 -<6398> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 6 -<6399> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 7 -<6400> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 8 -<6401> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 9 -<6402> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Alaska zone 10 -<6403> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Arizona Central -<6404> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Arizona Central (ft) -<6405> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Arizona East -<6406> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Arizona East (ft) -<6407> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Arizona West -<6408> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Arizona West (ft) -<6409> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Arkansas North -<6410> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Arkansas North (ftUS) -<6411> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Arkansas South -<6412> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Arkansas South (ftUS) -<6413> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / California Albers -<6414> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / California zone 1 -<6415> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / California zone 1 (ftUS) -<6416> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / California zone 2 -<6417> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / California zone 2 (ftUS) -<6418> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / California zone 3 -<6419> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / California zone 3 (ftUS) -<6420> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / California zone 4 -<6421> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / California zone 4 (ftUS) -<6422> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / California zone 5 -<6423> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / California zone 5 (ftUS) -<6424> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / California zone 6 -<6425> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / California zone 6 (ftUS) -<6426> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Colorado Central -<6427> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Colorado Central (ftUS) -<6428> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Colorado North -<6429> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Colorado North (ftUS) -<6430> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Colorado South -<6431> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Colorado South (ftUS) -<6432> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Connecticut -<6433> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Connecticut (ftUS) -<6434> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Delaware -<6435> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Delaware (ftUS) -<6436> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Florida East -<6437> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Florida East (ftUS) -<6438> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Florida GDL Albers -<6439> +proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Florida North -<6440> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Florida North (ftUS) -<6441> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Florida West -<6442> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Florida West (ftUS) -<6443> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Georgia East -<6444> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Georgia East (ftUS) -<6445> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Georgia West -<6446> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Georgia West (ftUS) -<6447> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Idaho Central -<6448> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Idaho Central (ftUS) -<6449> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Idaho East -<6450> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Idaho East (ftUS) -<6451> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Idaho West -<6452> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Idaho West (ftUS) -<6453> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Illinois East -<6454> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Illinois East (ftUS) -<6455> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Illinois West -<6456> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Illinois West (ftUS) -<6457> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Indiana East -<6458> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Indiana East (ftUS) -<6459> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Indiana West -<6460> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Indiana West (ftUS) -<6461> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Iowa North -<6462> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Iowa North (ftUS) -<6463> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Iowa South -<6464> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Iowa South (ftUS) -<6465> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Kansas North -<6466> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Kansas North (ftUS) -<6467> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Kansas South -<6468> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Kansas South (ftUS) -<6469> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Kentucky North -<6470> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Kentucky North (ftUS) -<6471> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Kentucky Single Zone -<6472> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Kentucky Single Zone (ftUS) -<6473> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Kentucky South -<6474> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Kentucky South (ftUS) -<6475> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Louisiana North -<6476> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Louisiana North (ftUS) -<6477> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Louisiana South -<6478> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Louisiana South (ftUS) -<6479> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Maine CS2000 Central -<6480> +proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Maine CS2000 East -<6481> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Maine CS2000 West -<6482> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Maine East -<6483> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Maine East (ftUS) -<6484> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Maine West -<6485> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Maine West (ftUS) -<6486> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Maryland -<6487> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Maryland (ftUS) -<6488> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Massachusetts Island -<6489> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Massachusetts Island (ftUS) -<6490> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Massachusetts Mainland -<6491> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Massachusetts Mainland (ftUS) -<6492> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Michigan Central -<6493> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Michigan Central (ft) -<6494> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Michigan North -<6495> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Michigan North (ft) -<6496> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Michigan Oblique Mercator -<6497> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Michigan South -<6498> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Michigan South (ft) -<6499> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Minnesota Central -<6500> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Minnesota Central (ftUS) -<6501> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Minnesota North -<6502> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Minnesota North (ftUS) -<6503> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Minnesota South -<6504> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Minnesota South (ftUS) -<6505> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Mississippi East -<6506> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Mississippi East (ftUS) -<6507> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Mississippi TM -<6508> +proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Mississippi West -<6509> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Mississippi West (ftUS) -<6510> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Missouri Central -<6511> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Missouri East -<6512> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Missouri West -<6513> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Montana -<6514> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Montana (ft) -<6515> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Nebraska -<6516> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Nebraska (ftUS) (deprecated) -<6517> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(2011) / Nevada Central -<6518> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Nevada Central (ftUS) -<6519> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Nevada East -<6520> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Nevada East (ftUS) -<6521> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Nevada West -<6522> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Nevada West (ftUS) -<6523> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New Hampshire -<6524> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New Hampshire (ftUS) -<6525> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New Jersey -<6526> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New Jersey (ftUS) -<6527> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New Mexico Central -<6528> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New Mexico Central (ftUS) -<6529> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New Mexico East -<6530> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New Mexico East (ftUS) -<6531> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New Mexico West -<6532> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New Mexico West (ftUS) -<6533> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New York Central -<6534> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New York Central (ftUS) -<6535> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New York East -<6536> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New York East (ftUS) -<6537> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New York Long Island -<6538> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New York Long Island (ftUS) -<6539> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / New York West -<6540> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / New York West (ftUS) -<6541> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / North Carolina -<6542> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / North Carolina (ftUS) -<6543> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / North Dakota North -<6544> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / North Dakota North (ft) -<6545> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / North Dakota South -<6546> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / North Dakota South (ft) -<6547> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Ohio North -<6548> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Ohio North (ftUS) -<6549> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Ohio South -<6550> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Ohio South (ftUS) -<6551> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Oklahoma North -<6552> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oklahoma North (ftUS) -<6553> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Oklahoma South -<6554> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oklahoma South (ftUS) -<6555> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Oregon LCC (m) -<6556> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon GIC Lambert (ft) -<6557> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon North -<6558> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon North (ft) -<6559> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon South -<6560> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon South (ft) -<6561> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Pennsylvania North -<6562> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Pennsylvania North (ftUS) -<6563> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Pennsylvania South -<6564> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Pennsylvania South (ftUS) -<6565> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Puerto Rico and Virgin Is. -<6566> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Rhode Island -<6567> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Rhode Island (ftUS) -<6568> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / South Carolina -<6569> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / South Carolina (ft) -<6570> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / South Dakota North -<6571> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / South Dakota North (ftUS) -<6572> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / South Dakota South -<6573> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / South Dakota South (ftUS) -<6574> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Tennessee -<6575> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Tennessee (ftUS) -<6576> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Texas Central -<6577> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Texas Central (ftUS) -<6578> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Texas Centric Albers Equal Area -<6579> +proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Texas Centric Lambert Conformal -<6580> +proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Texas North -<6581> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Texas North (ftUS) -<6582> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Texas North Central -<6583> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Texas North Central (ftUS) -<6584> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Texas South -<6585> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Texas South (ftUS) -<6586> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Texas South Central -<6587> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Texas South Central (ftUS) -<6588> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Vermont -<6589> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Vermont (ftUS) -<6590> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Virginia Lambert -<6591> +proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Virginia North -<6592> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Virginia North (ftUS) -<6593> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Virginia South -<6594> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Virginia South (ftUS) -<6595> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Washington North -<6596> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Washington North (ftUS) -<6597> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Washington South -<6598> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Washington South (ftUS) -<6599> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / West Virginia North -<6600> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / West Virginia North (ftUS) -<6601> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / West Virginia South -<6602> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / West Virginia South (ftUS) -<6603> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Wisconsin Central (deprecated) -<6604> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(2011) / Wisconsin Central (ftUS) -<6605> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Wisconsin North -<6606> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Wisconsin North (ftUS) -<6607> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Wisconsin South -<6608> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Wisconsin South (ftUS) -<6609> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Wisconsin Transverse Mercator -<6610> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Wyoming East -<6611> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Wyoming East (ftUS) -<6612> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Wyoming East Central -<6613> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Wyoming East Central (ftUS) -<6614> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Wyoming West -<6615> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Wyoming West (ftUS) -<6616> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Wyoming West Central -<6617> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Wyoming West Central (ftUS) -<6618> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Utah Central -<6619> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Utah North -<6620> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Utah South -<6621> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS) / Quebec Lambert -<6622> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Quebec Albers -<6623> +proj=aea +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(CSRS) / Quebec Albers -<6624> +proj=aea +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(2011) / Utah Central (ftUS) -<6625> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Utah North (ftUS) -<6626> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / Utah South (ftUS) -<6627> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(PA11) / Hawaii zone 1 -<6628> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(PA11) / Hawaii zone 2 -<6629> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(PA11) / Hawaii zone 3 -<6630> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(PA11) / Hawaii zone 4 -<6631> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(PA11) / Hawaii zone 5 -<6632> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(PA11) / Hawaii zone 3 (ftUS) -<6633> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(PA11) / UTM zone 4N -<6634> +proj=utm +zone=4 +ellps=GRS80 +units=m +no_defs <> -# NAD83(PA11) / UTM zone 5N -<6635> +proj=utm +zone=5 +ellps=GRS80 +units=m +no_defs <> -# NAD83(PA11) / UTM zone 2S -<6636> +proj=utm +zone=2 +south +ellps=GRS80 +units=m +no_defs <> -# NAD83(MA11) / Guam Map Grid -<6637> +proj=tmerc +lat_0=13.5 +lon_0=144.75 +k=1 +x_0=100000 +y_0=200000 +ellps=GRS80 +units=m +no_defs <> -# Karbala 1979 / Iraq National Grid -<6646> +proj=tmerc +lat_0=29.02626833333333 +lon_0=46.5 +k=0.9994 +x_0=800000 +y_0=0 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS I -<6669> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS II -<6670> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS III -<6671> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS IV -<6672> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS V -<6673> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS VI -<6674> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS VII -<6675> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS VIII -<6676> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS IX -<6677> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS X -<6678> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XI -<6679> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XII -<6680> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XIII -<6681> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XIV -<6682> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XV -<6683> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XVI -<6684> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XVII -<6685> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XVIII -<6686> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / Japan Plane Rectangular CS XIX -<6687> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / UTM zone 51N -<6688> +proj=utm +zone=51 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / UTM zone 52N -<6689> +proj=utm +zone=52 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / UTM zone 53N -<6690> +proj=utm +zone=53 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / UTM zone 54N -<6691> +proj=utm +zone=54 +ellps=GRS80 +units=m +no_defs <> -# JGD2011 / UTM zone 55N -<6692> +proj=utm +zone=55 +ellps=GRS80 +units=m +no_defs <> -# WGS 84 / TM 60 SW -<6703> +proj=tmerc +lat_0=0 +lon_0=-60 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs <> -# RDN2008 / UTM zone 32N (N-E) -<6707> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RDN2008 / UTM zone 33N (N-E) -<6708> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RDN2008 / UTM zone 34N (N-E) -<6709> +proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / CIG92 -<6720> +proj=tmerc +lat_0=0 +lon_0=105.625 +k=1.000024 +x_0=50000 +y_0=1300000 +datum=WGS84 +units=m +no_defs <> -# GDA94 / CIG94 -<6721> +proj=tmerc +lat_0=0 +lon_0=105.625 +k=1.00002514 +x_0=50000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# WGS 84 / CKIG92 -<6722> +proj=tmerc +lat_0=0 +lon_0=96.875 +k=1 +x_0=50000 +y_0=1400000 +datum=WGS84 +units=m +no_defs <> -# GDA94 / CKIG94 -<6723> +proj=tmerc +lat_0=0 +lon_0=96.875 +k=0.99999387 +x_0=50000 +y_0=1500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 41 (deprecated) -<6732> +proj=utm +zone=41 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 42 (deprecated) -<6733> +proj=utm +zone=42 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 43 (deprecated) -<6734> +proj=utm +zone=43 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 44 (deprecated) -<6735> +proj=utm +zone=44 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 46 -<6736> +proj=utm +zone=46 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 47 -<6737> +proj=utm +zone=47 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 59 -<6738> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Baker zone (m) -<6784> +proj=tmerc +lat_0=44.5 +lon_0=-117.8333333333333 +k=1.00016 +x_0=40000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Baker zone (ft) -<6785> +proj=tmerc +lat_0=44.5 +lon_0=-117.8333333333333 +k=1.00016 +x_0=39999.99999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Baker zone (m) -<6786> +proj=tmerc +lat_0=44.5 +lon_0=-117.8333333333333 +k=1.00016 +x_0=40000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Baker zone (ft) -<6787> +proj=tmerc +lat_0=44.5 +lon_0=-117.8333333333333 +k=1.00016 +x_0=39999.99999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Bend-Klamath Falls zone (m) -<6788> +proj=tmerc +lat_0=41.75 +lon_0=-121.75 +k=1.0002 +x_0=80000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Bend-Klamath Falls zone (ft) -<6789> +proj=tmerc +lat_0=41.75 +lon_0=-121.75 +k=1.0002 +x_0=79999.99999968 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Bend-Klamath Falls zone (m) -<6790> +proj=tmerc +lat_0=41.75 +lon_0=-121.75 +k=1.0002 +x_0=80000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Bend-Klamath Falls zone (ft) -<6791> +proj=tmerc +lat_0=41.75 +lon_0=-121.75 +k=1.0002 +x_0=79999.99999968 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Bend-Redmond-Prineville zone (m) -<6792> +proj=lcc +lat_1=44.66666666666666 +lat_0=44.66666666666666 +lon_0=-121.25 +k_0=1.00012 +x_0=80000 +y_0=130000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Bend-Redmond-Prineville zone (ft) -<6793> +proj=lcc +lat_1=44.66666666666666 +lat_0=44.66666666666666 +lon_0=-121.25 +k_0=1.00012 +x_0=79999.99999968 +y_0=130000.00001472 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Bend-Redmond-Prineville zone (m) -<6794> +proj=lcc +lat_1=44.66666666666666 +lat_0=44.66666666666666 +lon_0=-121.25 +k_0=1.00012 +x_0=80000 +y_0=130000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Bend-Redmond-Prineville zone (ft) -<6795> +proj=lcc +lat_1=44.66666666666666 +lat_0=44.66666666666666 +lon_0=-121.25 +k_0=1.00012 +x_0=79999.99999968 +y_0=130000.00001472 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Bend-Burns zone (m) -<6796> +proj=lcc +lat_1=43.66666666666666 +lat_0=43.66666666666666 +lon_0=-119.75 +k_0=1.0002 +x_0=120000 +y_0=60000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Bend-Burns zone (ft) -<6797> +proj=lcc +lat_1=43.66666666666666 +lat_0=43.66666666666666 +lon_0=-119.75 +k_0=1.0002 +x_0=119999.99999952 +y_0=59999.99999976 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Bend-Burns zone (m) -<6798> +proj=lcc +lat_1=43.66666666666666 +lat_0=43.66666666666666 +lon_0=-119.75 +k_0=1.0002 +x_0=120000 +y_0=60000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Bend-Burns zone (ft) -<6799> +proj=lcc +lat_1=43.66666666666666 +lat_0=43.66666666666666 +lon_0=-119.75 +k_0=1.0002 +x_0=119999.99999952 +y_0=59999.99999976 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Canyonville-Grants Pass zone (m) -<6800> +proj=tmerc +lat_0=42.5 +lon_0=-123.3333333333333 +k=1.00007 +x_0=40000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Canyonville-Grants Pass zone (ft) -<6801> +proj=tmerc +lat_0=42.5 +lon_0=-123.3333333333333 +k=1.00007 +x_0=39999.99999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Canyonville-Grants Pass zone (m) -<6802> +proj=tmerc +lat_0=42.5 +lon_0=-123.3333333333333 +k=1.00007 +x_0=40000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Canyonville-Grants Pass zone (ft) -<6803> +proj=tmerc +lat_0=42.5 +lon_0=-123.3333333333333 +k=1.00007 +x_0=39999.99999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Columbia River East zone (m) -<6804> +proj=lcc +lat_1=45.66666666666666 +lat_0=45.66666666666666 +lon_0=-120.5 +k_0=1.000008 +x_0=150000 +y_0=30000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Columbia River East zone (ft) -<6805> +proj=lcc +lat_1=45.66666666666666 +lat_0=45.66666666666666 +lon_0=-120.5 +k_0=1.000008 +x_0=150000.00001464 +y_0=30000.00001512 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Columbia River East zone (m) -<6806> +proj=lcc +lat_1=45.66666666666666 +lat_0=45.66666666666666 +lon_0=-120.5 +k_0=1.000008 +x_0=150000 +y_0=30000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Columbia River East zone (ft) -<6807> +proj=lcc +lat_1=45.66666666666666 +lat_0=45.66666666666666 +lon_0=-120.5 +k_0=1.000008 +x_0=150000.00001464 +y_0=30000.00001512 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Columbia River West zone (m) -<6808> +proj=omerc +lat_0=45.91666666666666 +lonc=-123 +alpha=295 +k=1 +x_0=7000000 +y_0=-3000000 +no_uoff +gamma=295 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Columbia River West zone (ft) -<6809> +proj=omerc +lat_0=45.91666666666666 +lonc=-123 +alpha=295 +k=1 +x_0=7000000.00000248 +y_0=-2999999.999988 +no_uoff +gamma=295 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Columbia River West zone (m) -<6810> +proj=omerc +lat_0=45.91666666666666 +lonc=-123 +alpha=295 +k=1 +x_0=7000000 +y_0=-3000000 +no_uoff +gamma=295 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Columbia River West zone (ft) -<6811> +proj=omerc +lat_0=45.91666666666666 +lonc=-123 +alpha=295 +k=1 +x_0=7000000.00000248 +y_0=-2999999.999988 +no_uoff +gamma=295 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Cottage Grove-Canyonville zone (m) -<6812> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-123.3333333333333 +k=1.000023 +x_0=50000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Cottage Grove-Canyonville zone (ft) -<6813> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-123.3333333333333 +k=1.000023 +x_0=50000.00001504 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Cottage Grove-Canyonville zone (m) -<6814> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-123.3333333333333 +k=1.000023 +x_0=50000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Cottage Grove-Canyonville zone (ft) -<6815> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-123.3333333333333 +k=1.000023 +x_0=50000.00001504 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Dufur-Madras zone (m) -<6816> +proj=tmerc +lat_0=44.5 +lon_0=-121 +k=1.00011 +x_0=80000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Dufur-Madras zone (ft) -<6817> +proj=tmerc +lat_0=44.5 +lon_0=-121 +k=1.00011 +x_0=79999.99999968 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Dufur-Madras zone (m) -<6818> +proj=tmerc +lat_0=44.5 +lon_0=-121 +k=1.00011 +x_0=80000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Dufur-Madras zone (ft) -<6819> +proj=tmerc +lat_0=44.5 +lon_0=-121 +k=1.00011 +x_0=79999.99999968 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Eugene zone (m) -<6820> +proj=tmerc +lat_0=43.75 +lon_0=-123.1666666666667 +k=1.000015 +x_0=50000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Eugene zone (ft) -<6821> +proj=tmerc +lat_0=43.75 +lon_0=-123.1666666666667 +k=1.000015 +x_0=50000.00001504 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Eugene zone (m) -<6822> +proj=tmerc +lat_0=43.75 +lon_0=-123.1666666666667 +k=1.000015 +x_0=50000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Eugene zone (ft) -<6823> +proj=tmerc +lat_0=43.75 +lon_0=-123.1666666666667 +k=1.000015 +x_0=50000.00001504 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Grants Pass-Ashland zone (m) -<6824> +proj=tmerc +lat_0=41.75 +lon_0=-123.3333333333333 +k=1.000043 +x_0=50000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Grants Pass-Ashland zone (ft) -<6825> +proj=tmerc +lat_0=41.75 +lon_0=-123.3333333333333 +k=1.000043 +x_0=50000.00001504 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Grants Pass-Ashland zone (m) -<6826> +proj=tmerc +lat_0=41.75 +lon_0=-123.3333333333333 +k=1.000043 +x_0=50000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Grants Pass-Ashland zone (ft) -<6827> +proj=tmerc +lat_0=41.75 +lon_0=-123.3333333333333 +k=1.000043 +x_0=50000.00001504 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Gresham-Warm Springs zone (m) -<6828> +proj=tmerc +lat_0=45 +lon_0=-122.3333333333333 +k=1.00005 +x_0=10000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Gresham-Warm Springs zone (ft) -<6829> +proj=tmerc +lat_0=45 +lon_0=-122.3333333333333 +k=1.00005 +x_0=10000.0000152 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Gresham-Warm Springs zone (m) -<6830> +proj=tmerc +lat_0=45 +lon_0=-122.3333333333333 +k=1.00005 +x_0=10000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Gresham-Warm Springs zone (ft) -<6831> +proj=tmerc +lat_0=45 +lon_0=-122.3333333333333 +k=1.00005 +x_0=10000.0000152 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon La Grande zone (m) -<6832> +proj=tmerc +lat_0=45 +lon_0=-118 +k=1.00013 +x_0=40000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon La Grande zone (ft) -<6833> +proj=tmerc +lat_0=45 +lon_0=-118 +k=1.00013 +x_0=39999.99999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon La Grande zone (m) -<6834> +proj=tmerc +lat_0=45 +lon_0=-118 +k=1.00013 +x_0=40000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon La Grande zone (ft) -<6835> +proj=tmerc +lat_0=45 +lon_0=-118 +k=1.00013 +x_0=39999.99999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Ontario zone (m) -<6836> +proj=tmerc +lat_0=43.25 +lon_0=-117 +k=1.0001 +x_0=80000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Ontario zone (ft) -<6837> +proj=tmerc +lat_0=43.25 +lon_0=-117 +k=1.0001 +x_0=79999.99999968 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Ontario zone (m) -<6838> +proj=tmerc +lat_0=43.25 +lon_0=-117 +k=1.0001 +x_0=80000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Ontario zone (ft) -<6839> +proj=tmerc +lat_0=43.25 +lon_0=-117 +k=1.0001 +x_0=79999.99999968 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Coast zone (m) -<6840> +proj=omerc +lat_0=44.75 +lonc=-124.05 +alpha=5 +k=1 +x_0=-300000 +y_0=-4600000 +no_uoff +gamma=5 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Coast zone (ft) -<6841> +proj=omerc +lat_0=44.75 +lonc=-124.05 +alpha=5 +k=1 +x_0=-299999.9999988 +y_0=-4600000.00001208 +no_uoff +gamma=5 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Coast zone (m) -<6842> +proj=omerc +lat_0=44.75 +lonc=-124.05 +alpha=5 +k=1 +x_0=-300000 +y_0=-4600000 +no_uoff +gamma=5 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Coast zone (ft) -<6843> +proj=omerc +lat_0=44.75 +lonc=-124.05 +alpha=5 +k=1 +x_0=-299999.9999988 +y_0=-4600000.00001208 +no_uoff +gamma=5 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Pendleton zone (m) -<6844> +proj=tmerc +lat_0=45.25 +lon_0=-119.1666666666667 +k=1.000045 +x_0=60000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Pendleton zone (ft) -<6845> +proj=tmerc +lat_0=45.25 +lon_0=-119.1666666666667 +k=1.000045 +x_0=59999.99999976 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Pendleton zone (m) -<6846> +proj=tmerc +lat_0=45.25 +lon_0=-119.1666666666667 +k=1.000045 +x_0=60000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Pendleton zone (ft) -<6847> +proj=tmerc +lat_0=45.25 +lon_0=-119.1666666666667 +k=1.000045 +x_0=59999.99999976 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Pendleton-La Grande zone (m) -<6848> +proj=tmerc +lat_0=45.08333333333334 +lon_0=-118.3333333333333 +k=1.000175 +x_0=30000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Pendleton-La Grande zone (ft) -<6849> +proj=tmerc +lat_0=45.08333333333334 +lon_0=-118.3333333333333 +k=1.000175 +x_0=30000.00001512 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Pendleton-La Grande zone (m) -<6850> +proj=tmerc +lat_0=45.08333333333334 +lon_0=-118.3333333333333 +k=1.000175 +x_0=30000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Pendleton-La Grande zone (ft) -<6851> +proj=tmerc +lat_0=45.08333333333334 +lon_0=-118.3333333333333 +k=1.000175 +x_0=30000.00001512 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Portland zone (m) -<6852> +proj=lcc +lat_1=45.5 +lat_0=45.5 +lon_0=-122.75 +k_0=1.000002 +x_0=100000 +y_0=50000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Portland zone (ft) -<6853> +proj=lcc +lat_1=45.5 +lat_0=45.5 +lon_0=-122.75 +k_0=1.000002 +x_0=99999.99999960001 +y_0=50000.00001504 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Portland zone (m) -<6854> +proj=lcc +lat_1=45.5 +lat_0=45.5 +lon_0=-122.75 +k_0=1.000002 +x_0=100000 +y_0=50000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Portland zone (ft) -<6855> +proj=lcc +lat_1=45.5 +lat_0=45.5 +lon_0=-122.75 +k_0=1.000002 +x_0=99999.99999960001 +y_0=50000.00001504 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Salem zone (m) -<6856> +proj=tmerc +lat_0=44.33333333333334 +lon_0=-123.0833333333333 +k=1.00001 +x_0=50000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Salem zone (ft) -<6857> +proj=tmerc +lat_0=44.33333333333334 +lon_0=-123.0833333333333 +k=1.00001 +x_0=50000.00001504 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Salem zone (m) -<6858> +proj=tmerc +lat_0=44.33333333333334 +lon_0=-123.0833333333333 +k=1.00001 +x_0=50000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Salem zone (ft) -<6859> +proj=tmerc +lat_0=44.33333333333334 +lon_0=-123.0833333333333 +k=1.00001 +x_0=50000.00001504 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon Santiam Pass zone (m) -<6860> +proj=tmerc +lat_0=44.08333333333334 +lon_0=-122.5 +k=1.000155 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon Santiam Pass zone (ft) -<6861> +proj=tmerc +lat_0=44.08333333333334 +lon_0=-122.5 +k=1.000155 +x_0=0 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Santiam Pass zone (m) -<6862> +proj=tmerc +lat_0=44.08333333333334 +lon_0=-122.5 +k=1.000155 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Santiam Pass zone (ft) -<6863> +proj=tmerc +lat_0=44.08333333333334 +lon_0=-122.5 +k=1.000155 +x_0=0 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon LCC (m) -<6867> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon GIC Lambert (ft) -<6868> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# ETRS89 / Albania TM 2010 -<6870> +proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RDN2008 / Italy zone (N-E) -<6875> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9985000000000001 +x_0=7000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RDN2008 / Zone 12 (N-E) -<6876> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=3000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(2011) / Wisconsin Central -<6879> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Nebraska (ftUS) -<6880> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(CORS96) / Oregon North -<6884> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon North (ft) -<6885> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CORS96) / Oregon South -<6886> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) / Oregon South (ft) -<6887> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# South East Island 1943 / UTM zone 40N -<6915> +proj=utm +zone=40 +ellps=clrk80 +towgs84=-43.685,-179.785,-267.721,0,0,0,0 +units=m +no_defs <> -# NAD83 / Kansas LCC -<6922> +proj=lcc +lat_1=39.5 +lat_2=37.5 +lat_0=36 +lon_0=-98.25 +x_0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kansas LCC (ftUS) -<6923> +proj=lcc +lat_1=39.5 +lat_2=37.5 +lat_0=36 +lon_0=-98.25 +x_0=399999.99998984 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(2011) / Kansas LCC -<6924> +proj=lcc +lat_1=39.5 +lat_2=37.5 +lat_0=36 +lon_0=-98.25 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Kansas LCC (ftUS) -<6925> +proj=lcc +lat_1=39.5 +lat_2=37.5 +lat_0=36 +lon_0=-98.25 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# WGS 84 / NSIDC EASE-Grid 2.0 North -<6931> +proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / NSIDC EASE-Grid 2.0 South -<6932> +proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / NSIDC EASE-Grid 2.0 Global -<6933> +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# VN-2000 / TM-3 zone 481 -<6956> +proj=tmerc +lat_0=0 +lon_0=102 +k=0.9999 +x_0=0 +y_0=500000 +ellps=WGS84 +towgs84=-191.90441429,-39.30318279,-111.45032835,0.00928836,-0.01975479,0.00427372,0.252906278 +units=m +no_defs <> -# VN-2000 / TM-3 zone 482 -<6957> +proj=tmerc +lat_0=0 +lon_0=105 +k=0.9999 +x_0=0 +y_0=500000 +ellps=WGS84 +towgs84=-191.90441429,-39.30318279,-111.45032835,0.00928836,-0.01975479,0.00427372,0.252906278 +units=m +no_defs <> -# VN-2000 / TM-3 zone 491 -<6958> +proj=tmerc +lat_0=0 +lon_0=108 +k=0.9999 +x_0=0 +y_0=500000 +ellps=WGS84 +towgs84=-191.90441429,-39.30318279,-111.45032835,0.00928836,-0.01975479,0.00427372,0.252906278 +units=m +no_defs <> -# VN-2000 / TM-3 Da Nang zone -<6959> +proj=tmerc +lat_0=0 +lon_0=107.75 +k=0.9999 +x_0=0 +y_0=500000 +ellps=WGS84 +towgs84=-191.90441429,-39.30318279,-111.45032835,0.00928836,-0.01975479,0.00427372,0.252906278 +units=m +no_defs <> -# ETRS89 / Albania LCC 2010 -<6962> +proj=lcc +lat_1=39 +lat_2=43 +lat_0=41 +lon_0=20 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Michigan North -# Unable to translate coordinate system EPSG:6966 into PROJ.4 format. -# -# Israeli Grid 05 -<6984> +proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +units=m +no_defs <> -# Israeli Grid 05/12 -<6991> +proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / San Francisco CS13 (deprecated) -<6996> +proj=tmerc +lat_0=37.75 +lon_0=-122.45 +k=1.000007 +x_0=48000 +y_0=24000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / San Francisco CS13 (ftUS) (deprecated) -<6997> +proj=tmerc +lat_0=37.75 +lon_0=-122.45 +k=1.000007 +x_0=48000 +y_0=24000 +ellps=GRS80 +units=us-ft +no_defs <> -# Nahrwan 1934 / UTM zone 37N -<7005> +proj=utm +zone=37 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs <> -# Nahrwan 1934 / UTM zone 38N -<7006> +proj=utm +zone=38 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs <> -# Nahrwan 1934 / UTM zone 39N -<7007> +proj=utm +zone=39 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs <> -# NAD83(2011) / IaRCS zone 1 -<7057> +proj=lcc +lat_1=43.2 +lat_0=43.2 +lon_0=-95.25 +k_0=1.000052 +x_0=3505207.010414021 +y_0=2926085.852171705 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 2 -<7058> +proj=lcc +lat_1=43.16666666666666 +lat_0=43.16666666666666 +lon_0=-92.75 +k_0=1.000043 +x_0=3810007.62001524 +y_0=2987045.974091948 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 3 -<7059> +proj=tmerc +lat_0=40.25 +lon_0=-91.2 +k=1.000035 +x_0=4114808.229616459 +y_0=2529845.05969012 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 4 -<7060> +proj=lcc +lat_1=42.53333333333333 +lat_0=42.53333333333333 +lon_0=-94.83333333333333 +k_0=1.000045 +x_0=4419608.839217679 +y_0=2621285.242570485 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 5 -<7061> +proj=lcc +lat_1=42.65 +lat_0=42.65 +lon_0=-92.25 +k_0=1.000032 +x_0=4724409.448818898 +y_0=2712725.425450851 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 6 -<7062> +proj=tmerc +lat_0=40.25 +lon_0=-95.73333333333333 +k=1.000039 +x_0=5029210.058420117 +y_0=2011684.023368047 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 7 -<7063> +proj=tmerc +lat_0=40.25 +lon_0=-94.63333333333334 +k=1.000045 +x_0=5334010.668021336 +y_0=2072644.145288291 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 8 -<7064> +proj=tmerc +lat_0=40.25 +lon_0=-93.71666666666667 +k=1.000033 +x_0=5638811.277622555 +y_0=2133604.267208535 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 9 -<7065> +proj=tmerc +lat_0=40.25 +lon_0=-92.81666666666666 +k=1.000027 +x_0=5943611.887223775 +y_0=2194564.389128779 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 10 -<7066> +proj=lcc +lat_1=41.83333333333334 +lat_0=41.83333333333334 +lon_0=-91.66666666666667 +k_0=1.00002 +x_0=6248412.496824994 +y_0=2438404.876809754 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 11 -<7067> +proj=tmerc +lat_0=40.25 +lon_0=-90.53333333333333 +k=1.000027 +x_0=6553213.106426213 +y_0=2316484.632969266 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 12 -<7068> +proj=lcc +lat_1=40.91666666666666 +lat_0=40.91666666666666 +lon_0=-93.75 +k_0=1.000037 +x_0=6858013.716027432 +y_0=1889763.779527559 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 13 -<7069> +proj=tmerc +lat_0=40.25 +lon_0=-91.91666666666667 +k=1.00002 +x_0=7162814.325628651 +y_0=1950723.901447803 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / IaRCS zone 14 -<7070> +proj=tmerc +lat_0=40.25 +lon_0=-91.25 +k=1.000018 +x_0=7467614.93522987 +y_0=1889763.779527559 +ellps=GRS80 +units=us-ft +no_defs <> -# RGTAAF07 / UTM zone 37S -<7074> +proj=utm +zone=37 +south +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 / UTM zone 38S -<7075> +proj=utm +zone=38 +south +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 / UTM zone 39S -<7076> +proj=utm +zone=39 +south +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 / UTM zone 40S -<7077> +proj=utm +zone=40 +south +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 / UTM zone 41S -<7078> +proj=utm +zone=41 +south +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 / UTM zone 42S -<7079> +proj=utm +zone=42 +south +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 / UTM zone 43S -<7080> +proj=utm +zone=43 +south +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 / UTM zone 44S -<7081> +proj=utm +zone=44 +south +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 / Terre Adelie Polar Stereographic -# Unable to translate coordinate system EPSG:7082 into PROJ.4 format. -# -# NAD83(2011) / RMTCRS St Mary (m) -<7109> +proj=tmerc +lat_0=48.5 +lon_0=-112.5 +k=1.00016 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Blackfeet (m) -<7110> +proj=tmerc +lat_0=48 +lon_0=-112.5 +k=1.00019 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Milk River (m) -<7111> +proj=lcc +lat_1=48.5 +lat_0=48.5 +lon_0=-111 +k_0=1.000145 +x_0=150000 +y_0=200000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Fort Belknap (m) -<7112> +proj=lcc +lat_1=48.5 +lat_0=48.5 +lon_0=-108.5 +k_0=1.00012 +x_0=200000 +y_0=150000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Fort Peck Assiniboine (m) -<7113> +proj=lcc +lat_1=48.33333333333334 +lat_0=48.33333333333334 +lon_0=-105.5 +k_0=1.00012 +x_0=200000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Fort Peck Sioux (m) -<7114> +proj=lcc +lat_1=48.33333333333334 +lat_0=48.33333333333334 +lon_0=-105.5 +k_0=1.00009 +x_0=100000 +y_0=50000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Crow (m) -<7115> +proj=tmerc +lat_0=44.75 +lon_0=-107.75 +k=1.000148 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Bobcat (m) -<7116> +proj=lcc +lat_1=46.25 +lat_0=46.25 +lon_0=-111.25 +k_0=1.000185 +x_0=100000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Billings (m) -<7117> +proj=lcc +lat_1=45.78333333333333 +lat_0=45.78333333333333 +lon_0=-108.4166666666667 +k_0=1.0001515 +x_0=200000 +y_0=50000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS Wind River (m) -<7118> +proj=tmerc +lat_0=42.66666666666666 +lon_0=-108.3333333333333 +k=1.00024 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / RMTCRS St Mary (ft) -<7119> +proj=tmerc +lat_0=48.5 +lon_0=-112.5 +k=1.00016 +x_0=150000.00001464 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Blackfeet (ft) -<7120> +proj=tmerc +lat_0=48 +lon_0=-112.5 +k=1.00019 +x_0=99999.99999960001 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Milk River (ft) -<7121> +proj=lcc +lat_1=48.5 +lat_0=48.5 +lon_0=-111 +k_0=1.000145 +x_0=150000.00001464 +y_0=199999.9999992 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Fort Belknap (ft) -<7122> +proj=lcc +lat_1=48.5 +lat_0=48.5 +lon_0=-108.5 +k_0=1.00012 +x_0=199999.9999992 +y_0=150000.00001464 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Fort Peck Assiniboine (ft) -<7123> +proj=lcc +lat_1=48.33333333333334 +lat_0=48.33333333333334 +lon_0=-105.5 +k_0=1.00012 +x_0=199999.9999992 +y_0=99999.99999960001 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Fort Peck Sioux (ft) -<7124> +proj=lcc +lat_1=48.33333333333334 +lat_0=48.33333333333334 +lon_0=-105.5 +k_0=1.00009 +x_0=99999.99999960001 +y_0=49999.99971024 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Crow (ft) -<7125> +proj=tmerc +lat_0=44.75 +lon_0=-107.75 +k=1.000148 +x_0=199999.9999992 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Bobcat (ft) -<7126> +proj=lcc +lat_1=46.25 +lat_0=46.25 +lon_0=-111.25 +k_0=1.000185 +x_0=99999.99999960001 +y_0=99999.99999960001 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Billings (ft) -<7127> +proj=lcc +lat_1=45.78333333333333 +lat_0=45.78333333333333 +lon_0=-108.4166666666667 +k_0=1.0001515 +x_0=199999.9999992 +y_0=50000.00001504 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / RMTCRS Wind River (ftUS) -<7128> +proj=tmerc +lat_0=42.66666666666666 +lon_0=-108.3333333333333 +k=1.00024 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / San Francisco CS13 -<7131> +proj=tmerc +lat_0=37.75 +lon_0=-122.45 +k=1.000007 +x_0=48000 +y_0=24000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / San Francisco CS13 (ftUS) -<7132> +proj=tmerc +lat_0=37.75 +lon_0=-122.45 +k=1.000007 +x_0=48000 +y_0=24000 +ellps=GRS80 +units=us-ft +no_defs <> -# Palestine 1923 / Palestine Grid modified -<7142> +proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,1 +units=m +no_defs <> -# NAD83(2011) / InGCS Adams (m) -<7257> +proj=tmerc +lat_0=40.55 +lon_0=-84.95 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Adams (ftUS) -<7258> +proj=tmerc +lat_0=40.55 +lon_0=-84.95 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Allen (m) -<7259> +proj=tmerc +lat_0=40.9 +lon_0=-85.05 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Allen (ftUS) -<7260> +proj=tmerc +lat_0=40.9 +lon_0=-85.05 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Bartholomew (m) -<7261> +proj=tmerc +lat_0=39 +lon_0=-85.84999999999999 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Bartholomew (ftUS) -<7262> +proj=tmerc +lat_0=39 +lon_0=-85.84999999999999 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Benton (m) -<7263> +proj=tmerc +lat_0=40.45 +lon_0=-87.3 +k=1.000029 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Benton (ftUS) -<7264> +proj=tmerc +lat_0=40.45 +lon_0=-87.3 +k=1.000029 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Blackford-Delaware (m) -<7265> +proj=tmerc +lat_0=40.05 +lon_0=-85.40000000000001 +k=1.000038 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Blackford-Delaware (ftUS) -<7266> +proj=tmerc +lat_0=40.05 +lon_0=-85.40000000000001 +k=1.000038 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Boone-Hendricks (m) -<7267> +proj=tmerc +lat_0=39.6 +lon_0=-86.5 +k=1.000036 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Boone-Hendricks (ftUS) -<7268> +proj=tmerc +lat_0=39.6 +lon_0=-86.5 +k=1.000036 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Brown (m) -<7269> +proj=tmerc +lat_0=39 +lon_0=-86.3 +k=1.00003 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Brown (ftUS) -<7270> +proj=tmerc +lat_0=39 +lon_0=-86.3 +k=1.00003 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Carroll (m) -<7271> +proj=tmerc +lat_0=40.4 +lon_0=-86.65000000000001 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Carroll (ftUS) -<7272> +proj=tmerc +lat_0=40.4 +lon_0=-86.65000000000001 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Cass (m) -<7273> +proj=tmerc +lat_0=40.55 +lon_0=-86.40000000000001 +k=1.000028 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Cass (ftUS) -<7274> +proj=tmerc +lat_0=40.55 +lon_0=-86.40000000000001 +k=1.000028 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Clark-Floyd-Scott (m) -<7275> +proj=tmerc +lat_0=38.15 +lon_0=-85.59999999999999 +k=1.000021 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Clark-Floyd-Scott (ftUS) -<7276> +proj=tmerc +lat_0=38.15 +lon_0=-85.59999999999999 +k=1.000021 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Clay (m) -<7277> +proj=tmerc +lat_0=39.15 +lon_0=-87.15000000000001 +k=1.000024 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Clay (ftUS) -<7278> +proj=tmerc +lat_0=39.15 +lon_0=-87.15000000000001 +k=1.000024 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Clinton (m) -<7279> +proj=tmerc +lat_0=40.15 +lon_0=-86.59999999999999 +k=1.000032 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Clinton (ftUS) -<7280> +proj=tmerc +lat_0=40.15 +lon_0=-86.59999999999999 +k=1.000032 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Crawford-Lawrence-Orange (m) -<7281> +proj=tmerc +lat_0=38.1 +lon_0=-86.5 +k=1.000025 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Crawford-Lawrence-Orange (ftUS) -<7282> +proj=tmerc +lat_0=38.1 +lon_0=-86.5 +k=1.000025 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Daviess-Greene (m) -<7283> +proj=tmerc +lat_0=38.45 +lon_0=-87.09999999999999 +k=1.000018 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Daviess-Greene (ftUS) -<7284> +proj=tmerc +lat_0=38.45 +lon_0=-87.09999999999999 +k=1.000018 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Dearborn-Ohio-Switzerland (m) -<7285> +proj=tmerc +lat_0=38.65 +lon_0=-84.90000000000001 +k=1.000029 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Dearborn-Ohio-Switzerland (ftUS) -<7286> +proj=tmerc +lat_0=38.65 +lon_0=-84.90000000000001 +k=1.000029 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Decatur-Rush (m) -<7287> +proj=tmerc +lat_0=39.1 +lon_0=-85.65000000000001 +k=1.000036 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Decatur-Rush (ftUS) -<7288> +proj=tmerc +lat_0=39.1 +lon_0=-85.65000000000001 +k=1.000036 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS DeKalb (m) -<7289> +proj=tmerc +lat_0=41.25 +lon_0=-84.95 +k=1.000036 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS DeKalb (ftUS) -<7290> +proj=tmerc +lat_0=41.25 +lon_0=-84.95 +k=1.000036 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Dubois-Martin (m) -<7291> +proj=tmerc +lat_0=38.2 +lon_0=-86.95 +k=1.00002 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Dubois-Martin (ftUS) -<7292> +proj=tmerc +lat_0=38.2 +lon_0=-86.95 +k=1.00002 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Elkhart-Kosciusko-Wabash (m) -<7293> +proj=tmerc +lat_0=40.65 +lon_0=-85.84999999999999 +k=1.000033 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Elkhart-Kosciusko-Wabash (ftUS) -<7294> +proj=tmerc +lat_0=40.65 +lon_0=-85.84999999999999 +k=1.000033 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Fayette-Franklin-Union (m) -<7295> +proj=tmerc +lat_0=39.25 +lon_0=-85.05 +k=1.000038 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Fayette-Franklin-Union (ftUS) -<7296> +proj=tmerc +lat_0=39.25 +lon_0=-85.05 +k=1.000038 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Fountain-Warren (m) -<7297> +proj=tmerc +lat_0=39.95 +lon_0=-87.3 +k=1.000025 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Fountain-Warren (ftUS) -<7298> +proj=tmerc +lat_0=39.95 +lon_0=-87.3 +k=1.000025 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Fulton-Marshall-St. Joseph (m) -<7299> +proj=tmerc +lat_0=40.9 +lon_0=-86.3 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Fulton-Marshall-St. Joseph (ftUS) -<7300> +proj=tmerc +lat_0=40.9 +lon_0=-86.3 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Gibson (m) -<7301> +proj=tmerc +lat_0=38.15 +lon_0=-87.65000000000001 +k=1.000013 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Gibson (ftUS) -<7302> +proj=tmerc +lat_0=38.15 +lon_0=-87.65000000000001 +k=1.000013 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Grant (m) -<7303> +proj=tmerc +lat_0=40.35 +lon_0=-85.7 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Grant (ftUS) -<7304> +proj=tmerc +lat_0=40.35 +lon_0=-85.7 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Hamilton-Tipton (m) -<7305> +proj=tmerc +lat_0=39.9 +lon_0=-86 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Hamilton-Tipton (ftUS) -<7306> +proj=tmerc +lat_0=39.9 +lon_0=-86 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Hancock-Madison (m) -<7307> +proj=tmerc +lat_0=39.65 +lon_0=-85.8 +k=1.000036 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Hancock-Madison (ftUS) -<7308> +proj=tmerc +lat_0=39.65 +lon_0=-85.8 +k=1.000036 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Harrison-Washington (m) -<7309> +proj=tmerc +lat_0=37.95 +lon_0=-86.15000000000001 +k=1.000027 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Harrison-Washington (ftUS) -<7310> +proj=tmerc +lat_0=37.95 +lon_0=-86.15000000000001 +k=1.000027 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Henry (m) -<7311> +proj=tmerc +lat_0=39.75 +lon_0=-85.45 +k=1.000043 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Henry (ftUS) -<7312> +proj=tmerc +lat_0=39.75 +lon_0=-85.45 +k=1.000043 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Howard-Miami (m) -<7313> +proj=tmerc +lat_0=40.35 +lon_0=-86.15000000000001 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Howard-Miami (ftUS) -<7314> +proj=tmerc +lat_0=40.35 +lon_0=-86.15000000000001 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Huntington-Whitley (m) -<7315> +proj=tmerc +lat_0=40.65 +lon_0=-85.5 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Huntington-Whitley (ftUS) -<7316> +proj=tmerc +lat_0=40.65 +lon_0=-85.5 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Jackson (m) -<7317> +proj=tmerc +lat_0=38.7 +lon_0=-85.95 +k=1.000022 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Jackson (ftUS) -<7318> +proj=tmerc +lat_0=38.7 +lon_0=-85.95 +k=1.000022 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Jasper-Porter (m) -<7319> +proj=tmerc +lat_0=40.7 +lon_0=-87.09999999999999 +k=1.000027 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Jasper-Porter (ftUS) -<7320> +proj=tmerc +lat_0=40.7 +lon_0=-87.09999999999999 +k=1.000027 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Jay (m) -<7321> +proj=tmerc +lat_0=40.3 +lon_0=-85 +k=1.000038 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Jay (ftUS) -<7322> +proj=tmerc +lat_0=40.3 +lon_0=-85 +k=1.000038 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Jefferson (m) -<7323> +proj=tmerc +lat_0=38.55 +lon_0=-85.34999999999999 +k=1.000028 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Jefferson (ftUS) -<7324> +proj=tmerc +lat_0=38.55 +lon_0=-85.34999999999999 +k=1.000028 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Jennings (m) -<7325> +proj=tmerc +lat_0=38.8 +lon_0=-85.8 +k=1.000025 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Jennings (ftUS) -<7326> +proj=tmerc +lat_0=38.8 +lon_0=-85.8 +k=1.000025 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Johnson-Marion (m) -<7327> +proj=tmerc +lat_0=39.3 +lon_0=-86.15000000000001 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Johnson-Marion (ftUS) -<7328> +proj=tmerc +lat_0=39.3 +lon_0=-86.15000000000001 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Knox (m) -<7329> +proj=tmerc +lat_0=38.4 +lon_0=-87.45 +k=1.000015 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Knox (ftUS) -<7330> +proj=tmerc +lat_0=38.4 +lon_0=-87.45 +k=1.000015 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS LaGrange-Noble (m) -<7331> +proj=tmerc +lat_0=41.25 +lon_0=-85.45 +k=1.000037 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS LaGrange-Noble (ftUS) -<7332> +proj=tmerc +lat_0=41.25 +lon_0=-85.45 +k=1.000037 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Lake-Newton (m) -<7333> +proj=tmerc +lat_0=40.7 +lon_0=-87.40000000000001 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Lake-Newton (ftUS) -<7334> +proj=tmerc +lat_0=40.7 +lon_0=-87.40000000000001 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS LaPorte-Pulaski-Starke (m) -<7335> +proj=tmerc +lat_0=40.9 +lon_0=-86.75 +k=1.000027 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS LaPorte-Pulaski-Starke (ftUS) -<7336> +proj=tmerc +lat_0=40.9 +lon_0=-86.75 +k=1.000027 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Monroe-Morgan (m) -<7337> +proj=tmerc +lat_0=38.95 +lon_0=-86.5 +k=1.000028 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Monroe-Morgan (ftUS) -<7338> +proj=tmerc +lat_0=38.95 +lon_0=-86.5 +k=1.000028 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Montgomery-Putnam (m) -<7339> +proj=tmerc +lat_0=39.45 +lon_0=-86.95 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Montgomery-Putnam (ftUS) -<7340> +proj=tmerc +lat_0=39.45 +lon_0=-86.95 +k=1.000031 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Owen (m) -<7341> +proj=tmerc +lat_0=39.15 +lon_0=-86.90000000000001 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Owen (ftUS) -<7342> +proj=tmerc +lat_0=39.15 +lon_0=-86.90000000000001 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Parke-Vermillion (m) -<7343> +proj=tmerc +lat_0=39.6 +lon_0=-87.34999999999999 +k=1.000022 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Parke-Vermillion (ftUS) -<7344> +proj=tmerc +lat_0=39.6 +lon_0=-87.34999999999999 +k=1.000022 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Perry (m) -<7345> +proj=tmerc +lat_0=37.8 +lon_0=-86.7 +k=1.00002 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Perry (ftUS) -<7346> +proj=tmerc +lat_0=37.8 +lon_0=-86.7 +k=1.00002 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Pike-Warrick (m) -<7347> +proj=tmerc +lat_0=37.85 +lon_0=-87.3 +k=1.000015 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Pike-Warrick (ftUS) -<7348> +proj=tmerc +lat_0=37.85 +lon_0=-87.3 +k=1.000015 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Posey (m) -<7349> +proj=tmerc +lat_0=37.75 +lon_0=-87.95 +k=1.000013 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Posey (ftUS) -<7350> +proj=tmerc +lat_0=37.75 +lon_0=-87.95 +k=1.000013 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Randolph-Wayne (m) -<7351> +proj=tmerc +lat_0=39.7 +lon_0=-85.05 +k=1.000044 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Randolph-Wayne (ftUS) -<7352> +proj=tmerc +lat_0=39.7 +lon_0=-85.05 +k=1.000044 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Ripley (m) -<7353> +proj=tmerc +lat_0=38.9 +lon_0=-85.3 +k=1.000038 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Ripley (ftUS) -<7354> +proj=tmerc +lat_0=38.9 +lon_0=-85.3 +k=1.000038 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Shelby (m) -<7355> +proj=tmerc +lat_0=39.3 +lon_0=-85.90000000000001 +k=1.00003 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Shelby (ftUS) -<7356> +proj=tmerc +lat_0=39.3 +lon_0=-85.90000000000001 +k=1.00003 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Spencer (m) -<7357> +proj=tmerc +lat_0=37.75 +lon_0=-87.05 +k=1.000014 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Spencer (ftUS) -<7358> +proj=tmerc +lat_0=37.75 +lon_0=-87.05 +k=1.000014 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Steuben (m) -<7359> +proj=tmerc +lat_0=41.5 +lon_0=-85 +k=1.000041 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Steuben (ftUS) -<7360> +proj=tmerc +lat_0=41.5 +lon_0=-85 +k=1.000041 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Sullivan (m) -<7361> +proj=tmerc +lat_0=38.9 +lon_0=-87.5 +k=1.000017 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Sullivan (ftUS) -<7362> +proj=tmerc +lat_0=38.9 +lon_0=-87.5 +k=1.000017 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Tippecanoe-White (m) -<7363> +proj=tmerc +lat_0=40.2 +lon_0=-86.90000000000001 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Tippecanoe-White (ftUS) -<7364> +proj=tmerc +lat_0=40.2 +lon_0=-86.90000000000001 +k=1.000026 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Vanderburgh (m) -<7365> +proj=tmerc +lat_0=37.8 +lon_0=-87.55 +k=1.000015 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Vanderburgh (ftUS) -<7366> +proj=tmerc +lat_0=37.8 +lon_0=-87.55 +k=1.000015 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Vigo (m) -<7367> +proj=tmerc +lat_0=39.25 +lon_0=-87.45 +k=1.00002 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Vigo (ftUS) -<7368> +proj=tmerc +lat_0=39.25 +lon_0=-87.45 +k=1.00002 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / InGCS Wells (m) -<7369> +proj=tmerc +lat_0=40.55 +lon_0=-85.25 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / InGCS Wells (ftUS) -<7370> +proj=tmerc +lat_0=40.55 +lon_0=-85.25 +k=1.000034 +x_0=240000 +y_0=36000 +ellps=GRS80 +units=us-ft +no_defs <> -# ONGD14 / UTM zone 39N -<7374> +proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ONGD14 / UTM zone 40N -<7375> +proj=utm +zone=40 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ONGD14 / UTM zone 41N -<7376> +proj=utm +zone=41 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(2011) / WISCRS Adams and Juneau (m) -<7528> +proj=tmerc +lat_0=43.36666666666667 +lon_0=-90 +k=1.0000365285 +x_0=147218.6942 +y_0=0.0037 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Ashland (m) -<7529> +proj=tmerc +lat_0=45.70611111111111 +lon_0=-90.62222222222222 +k=1.0000495683 +x_0=172821.9461 +y_0=0.0017 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Barron (m) -<7530> +proj=tmerc +lat_0=45.13333333333333 +lon_0=-91.84999999999999 +k=1.0000486665 +x_0=93150 +y_0=0.0029 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Bayfield (m) -<7531> +proj=lcc +lat_1=46.66964837722222 +lat_0=46.66964837722222 +lon_0=-91.15277777777779 +k_0=1.0000331195 +x_0=228600.4575 +y_0=148551.4837 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Brown (m) -<7532> +proj=tmerc +lat_0=43 +lon_0=-88 +k=1.00002 +x_0=31600 +y_0=4600 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Buffalo (m) -<7533> +proj=tmerc +lat_0=43.48138888888889 +lon_0=-91.79722222222222 +k=1.0000382778 +x_0=175260.3502 +y_0=0.0048 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Burnett (m) -<7534> +proj=lcc +lat_1=45.89871486583333 +lat_0=45.89871486583333 +lon_0=-92.45777777777778 +k_0=1.0000383841 +x_0=64008.1276 +y_0=59445.9043 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (m) -<7535> +proj=tmerc +lat_0=42.71944444444445 +lon_0=-88.5 +k=1.0000286569 +x_0=244754.8893 +y_0=0.0049 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Chippewa (m) -<7536> +proj=lcc +lat_1=44.97785689861112 +lat_0=44.97785689861112 +lon_0=-91.29444444444444 +k_0=1.0000391127 +x_0=60045.72 +y_0=44091.4346 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Clark (m) -<7537> +proj=tmerc +lat_0=43.6 +lon_0=-90.70833333333334 +k=1.0000463003 +x_0=199949.1989 +y_0=0.0086 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Columbia (m) -<7538> +proj=lcc +lat_1=43.46254664583333 +lat_0=43.46254664583333 +lon_0=-89.39444444444445 +k_0=1.00003498 +x_0=169164.3381 +y_0=111569.6134 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Crawford (m) -<7539> +proj=lcc +lat_1=43.200055605 +lat_0=43.200055605 +lon_0=-90.9388888888889 +k_0=1.0000349151 +x_0=113690.6274 +y_0=53703.1201 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Dane (m) -<7540> +proj=lcc +lat_1=43.0695160375 +lat_0=43.0695160375 +lon_0=-89.42222222222223 +k_0=1.0000384786 +x_0=247193.2944 +y_0=146591.9896 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Dodge and Jefferson (m) -<7541> +proj=tmerc +lat_0=41.47222222222222 +lon_0=-88.77500000000001 +k=1.0000346418 +x_0=263347.7263 +y_0=0.0076 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Door (m) -<7542> +proj=tmerc +lat_0=44.4 +lon_0=-87.27222222222223 +k=1.0000187521 +x_0=158801.1176 +y_0=0.0023 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Douglas (m) -<7543> +proj=tmerc +lat_0=45.88333333333333 +lon_0=-91.91666666666667 +k=1.0000385418 +x_0=59131.3183 +y_0=0.0041 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Dunn (m) -<7544> +proj=tmerc +lat_0=44.40833333333333 +lon_0=-91.89444444444445 +k=1.0000410324 +x_0=51816.104 +y_0=0.003 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Eau Claire (m) -<7545> +proj=lcc +lat_1=44.87228112638889 +lat_0=44.87228112638889 +lon_0=-91.28888888888889 +k_0=1.000035079 +x_0=120091.4402 +y_0=91687.92389999999 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Florence (m) -<7546> +proj=tmerc +lat_0=45.43888888888888 +lon_0=-88.14166666666668 +k=1.0000552095 +x_0=133502.6683 +y_0=0.0063 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Forest (m) -<7547> +proj=tmerc +lat_0=44.00555555555555 +lon_0=-88.63333333333334 +k=1.0000673004 +x_0=275844.5533 +y_0=0.0157 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Grant (m) -<7548> +proj=tmerc +lat_0=41.41111111111111 +lon_0=-90.8 +k=1.0000349452 +x_0=242316.4841 +y_0=0.01 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Green and Lafayette (m) -<7549> +proj=lcc +lat_1=42.63756227694444 +lat_0=42.63756227694444 +lon_0=-89.83888888888889 +k_0=1.0000390487 +x_0=170078.7403 +y_0=45830.2947 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Green Lake and Marquette (m) -<7550> +proj=lcc +lat_1=43.80700011777778 +lat_0=43.80700011777778 +lon_0=-89.24166666666667 +k_0=1.0000344057 +x_0=150876.3018 +y_0=79170.7795 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Iowa (m) -<7551> +proj=tmerc +lat_0=42.53888888888888 +lon_0=-90.16111111111111 +k=1.0000394961 +x_0=113081.0261 +y_0=0.0045 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Iron (m) -<7552> +proj=tmerc +lat_0=45.43333333333333 +lon_0=-90.25555555555556 +k=1.0000677153 +x_0=220980.4419 +y_0=0.008500000000000001 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Jackson (m) -<7553> +proj=tmerc +lat_0=44.25333512777778 +lon_0=-90.84429651944444 +k=1.0000353 +x_0=27000 +y_0=25000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (m) -<7554> +proj=tmerc +lat_0=42.21666666666667 +lon_0=-87.89444444444445 +k=1.0000260649 +x_0=185928.3728 +y_0=0.0009 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Kewaunee, Manitowoc and Sheboygan (m) -<7555> +proj=tmerc +lat_0=43.26666666666667 +lon_0=-87.55 +k=1.0000233704 +x_0=79857.7614 +y_0=0.0012 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS La Crosse (m) -<7556> +proj=tmerc +lat_0=43.45111111111111 +lon_0=-91.31666666666666 +k=1.0000319985 +x_0=130454.6598 +y_0=0.0033 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Langlade (m) -<7557> +proj=lcc +lat_1=45.15423710527778 +lat_0=45.15423710527778 +lon_0=-89.03333333333333 +k_0=1.0000627024 +x_0=198425.197 +y_0=105279.7829 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Lincoln (m) -<7558> +proj=tmerc +lat_0=44.84444444444445 +lon_0=-89.73333333333333 +k=1.0000599003 +x_0=116129.0323 +y_0=0.0058 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Marathon (m) -<7559> +proj=lcc +lat_1=44.90090442361111 +lat_0=44.90090442361111 +lon_0=-89.77 +k_0=1.000053289 +x_0=74676.1493 +y_0=55049.2669 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Marinette (m) -<7560> +proj=tmerc +lat_0=44.69166666666666 +lon_0=-87.71111111111111 +k=1.0000234982 +x_0=238658.8794 +y_0=0.0032 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Menominee (m) -<7561> +proj=tmerc +lat_0=44.71666666666667 +lon_0=-88.41666666666667 +k=1.0000362499 +x_0=105461.0121 +y_0=0.0029 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Monroe (m) -<7562> +proj=lcc +lat_1=44.00007392861111 +lat_0=44.00007392861111 +lon_0=-90.64166666666668 +k_0=1.0000434122 +x_0=204521.209 +y_0=121923.9861 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Oconto (m) -<7563> +proj=tmerc +lat_0=44.39722222222222 +lon_0=-87.90833333333335 +k=1.0000236869 +x_0=182880.3676 +y_0=0.0033 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Oneida (m) -<7564> +proj=lcc +lat_1=45.70422377027778 +lat_0=45.70422377027778 +lon_0=-89.54444444444444 +k_0=1.0000686968 +x_0=70104.1401 +y_0=57588.0346 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Pepin and Pierce (m) -<7565> +proj=lcc +lat_1=44.63614887194444 +lat_0=44.63614887194444 +lon_0=-92.22777777777777 +k_0=1.0000362977 +x_0=167640.3354 +y_0=86033.0876 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Polk (m) -<7566> +proj=tmerc +lat_0=44.66111111111111 +lon_0=-92.63333333333334 +k=1.0000433849 +x_0=141732.2823 +y_0=0.0059 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Portage (m) -<7567> +proj=lcc +lat_1=44.41682397527777 +lat_0=44.41682397527777 +lon_0=-89.5 +k_0=1.000039936 +x_0=56388.1128 +y_0=50022.1874 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Price (m) -<7568> +proj=tmerc +lat_0=44.55555555555555 +lon_0=-90.48888888888889 +k=1.0000649554 +x_0=227990.8546 +y_0=0.0109 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Richland (m) -<7569> +proj=lcc +lat_1=43.3223129275 +lat_0=43.3223129275 +lon_0=-90.43055555555556 +k_0=1.0000375653 +x_0=202387.6048 +y_0=134255.4253 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Rock (m) -<7570> +proj=tmerc +lat_0=41.94444444444444 +lon_0=-89.07222222222222 +k=1.0000337311 +x_0=146304.2926 +y_0=0.0068 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Rusk (m) -<7571> +proj=tmerc +lat_0=43.91944444444444 +lon_0=-91.06666666666666 +k=1.0000495976 +x_0=250546.1013 +y_0=0.0234 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Sauk (m) -<7572> +proj=tmerc +lat_0=42.81944444444445 +lon_0=-89.90000000000001 +k=1.0000373868 +x_0=185623.5716 +y_0=0.0051 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Sawyer (m) -<7573> +proj=lcc +lat_1=45.90009913138888 +lat_0=45.90009913138888 +lon_0=-91.11666666666666 +k_0=1.0000573461 +x_0=216713.2336 +y_0=120734.1631 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Shawano (m) -<7574> +proj=tmerc +lat_0=44.03611111111111 +lon_0=-88.60555555555555 +k=1.000032144 +x_0=262433.3253 +y_0=0.009599999999999999 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS St. Croix (m) -<7575> +proj=tmerc +lat_0=44.03611111111111 +lon_0=-92.63333333333334 +k=1.0000381803 +x_0=165506.7302 +y_0=0.0103 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Taylor (m) -<7576> +proj=lcc +lat_1=45.17782208583333 +lat_0=45.17782208583333 +lon_0=-90.48333333333333 +k_0=1.0000597566 +x_0=187147.5744 +y_0=107746.7522 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Trempealeau (m) -<7577> +proj=tmerc +lat_0=43.16111111111111 +lon_0=-91.36666666666666 +k=1.0000361538 +x_0=256946.9138 +y_0=0.0041 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Vernon (m) -<7578> +proj=lcc +lat_1=43.57503293972223 +lat_0=43.57503293972223 +lon_0=-90.78333333333333 +k_0=1.0000408158 +x_0=222504.4451 +y_0=47532.0602 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Vilas (m) -<7579> +proj=lcc +lat_1=46.07784409055556 +lat_0=46.07784409055556 +lon_0=-89.48888888888889 +k_0=1.0000730142 +x_0=134417.0689 +y_0=50337.1092 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Walworth (m) -<7580> +proj=lcc +lat_1=42.66946209694444 +lat_0=42.66946209694444 +lon_0=-88.54166666666667 +k_0=1.0000367192 +x_0=232562.8651 +y_0=111088.2224 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Washburn (m) -<7581> +proj=lcc +lat_1=45.96121983333334 +lat_0=45.96121983333334 +lon_0=-91.78333333333333 +k_0=1.0000475376 +x_0=234086.8682 +y_0=188358.6058 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Washington (m) -<7582> +proj=tmerc +lat_0=42.91805555555555 +lon_0=-88.06388888888888 +k=1.00003738 +x_0=120091.4415 +y_0=0.003 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Waukesha (m) -<7583> +proj=tmerc +lat_0=42.56944444444445 +lon_0=-88.22499999999999 +k=1.0000346179 +x_0=208788.418 +y_0=0.0034 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Waupaca (m) -<7584> +proj=tmerc +lat_0=43.42027777777778 +lon_0=-88.81666666666666 +k=1.0000333645 +x_0=185013.9709 +y_0=0.007 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Waushara (m) -<7585> +proj=lcc +lat_1=44.11394404583334 +lat_0=44.11394404583334 +lon_0=-89.24166666666667 +k_0=1.0000392096 +x_0=120091.4402 +y_0=45069.7587 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Wood (m) -<7586> +proj=lcc +lat_1=44.36259546944444 +lat_0=44.36259546944444 +lon_0=-90 +k_0=1.0000421209 +x_0=208483.6173 +y_0=134589.754 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / WISCRS Adams and Juneau (ftUS) -<7587> +proj=tmerc +lat_0=43.36666666666667 +lon_0=-90 +k=1.0000365285 +x_0=147218.6941325883 +y_0=0.00365760731521463 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Ashland (ftUS) -<7588> +proj=tmerc +lat_0=45.70611111111111 +lon_0=-90.62222222222222 +k=1.0000495683 +x_0=172821.945948692 +y_0=0.001828803657607315 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Barron (ftUS) -<7589> +proj=tmerc +lat_0=45.13333333333333 +lon_0=-91.84999999999999 +k=1.0000486665 +x_0=93150 +y_0=0.003048006096012192 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Bayfield (ftUS) -<7590> +proj=lcc +lat_1=46.66964837722222 +lat_0=46.66964837722222 +lon_0=-91.15277777777779 +k_0=1.0000331195 +x_0=228600.4575057151 +y_0=148551.4835661671 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Brown (ftUS) -<7591> +proj=tmerc +lat_0=43 +lon_0=-88 +k=1.00002 +x_0=31599.99989839979 +y_0=4599.999898399797 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Buffalo (ftUS) -<7592> +proj=tmerc +lat_0=43.48138888888889 +lon_0=-91.79722222222222 +k=1.0000382778 +x_0=175260.3502159004 +y_0=0.004876809753619507 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Burnett (ftUS) -<7593> +proj=lcc +lat_1=45.89871486583333 +lat_0=45.89871486583333 +lon_0=-92.45777777777778 +k_0=1.0000383841 +x_0=64008.12771145543 +y_0=59445.90419100838 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (ftUS) -<7594> +proj=tmerc +lat_0=42.71944444444445 +lon_0=-88.5 +k=1.0000286569 +x_0=244754.8892049784 +y_0=0.004876809753619507 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Chippewa (ftUS) -<7595> +proj=lcc +lat_1=44.97785689861112 +lat_0=44.97785689861112 +lon_0=-91.29444444444444 +k_0=1.0000391127 +x_0=60045.72009144018 +y_0=44091.43449326898 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Clark (ftUS) -<7596> +proj=tmerc +lat_0=43.6 +lon_0=-90.70833333333334 +k=1.0000463003 +x_0=199949.198983998 +y_0=0.008534417068834137 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Columbia (ftUS) -<7597> +proj=lcc +lat_1=43.46254664583333 +lat_0=43.46254664583333 +lon_0=-89.39444444444445 +k_0=1.00003498 +x_0=169164.338023876 +y_0=111569.613512827 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Crawford (ftUS) -<7598> +proj=lcc +lat_1=43.200055605 +lat_0=43.200055605 +lon_0=-90.9388888888889 +k_0=1.0000349151 +x_0=113690.6273812548 +y_0=53703.12024384048 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Dane (ftUS) -<7599> +proj=lcc +lat_1=43.0695160375 +lat_0=43.0695160375 +lon_0=-89.42222222222223 +k_0=1.0000384786 +x_0=247193.2943865888 +y_0=146591.9896367793 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Dodge and Jefferson (ftUS) -<7600> +proj=tmerc +lat_0=41.47222222222222 +lon_0=-88.77500000000001 +k=1.0000346418 +x_0=263347.7263906528 +y_0=0.00762001524003048 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Door (ftUS) -<7601> +proj=tmerc +lat_0=44.4 +lon_0=-87.27222222222223 +k=1.0000187521 +x_0=158801.1176022352 +y_0=0.002438404876809754 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Douglas (ftUS) -<7602> +proj=tmerc +lat_0=45.88333333333333 +lon_0=-91.91666666666667 +k=1.0000385418 +x_0=59131.31826263652 +y_0=0.003962407924815849 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Dunn (ftUS) -<7603> +proj=tmerc +lat_0=44.40833333333333 +lon_0=-91.89444444444445 +k=1.0000410324 +x_0=51816.10393700787 +y_0=0.003048006096012192 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Eau Claire (ftUS) -<7604> +proj=lcc +lat_1=44.87228112638889 +lat_0=44.87228112638889 +lon_0=-91.28888888888889 +k_0=1.000035079 +x_0=120091.4401828804 +y_0=91687.92390144781 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Florence (ftUS) -<7605> +proj=tmerc +lat_0=45.43888888888888 +lon_0=-88.14166666666668 +k=1.0000552095 +x_0=133502.6682245364 +y_0=0.006400812801625603 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Forest (ftUS) -<7606> +proj=tmerc +lat_0=44.00555555555555 +lon_0=-88.63333333333334 +k=1.0000673004 +x_0=275844.5532131065 +y_0=0.0158496316992634 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Grant (ftUS) -<7607> +proj=tmerc +lat_0=41.41111111111111 +lon_0=-90.8 +k=1.0000349452 +x_0=242316.484023368 +y_0=0.01005842011684023 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Green and Lafayette (ftUS) -<7608> +proj=lcc +lat_1=42.63756227694444 +lat_0=42.63756227694444 +lon_0=-89.83888888888889 +k_0=1.0000390487 +x_0=170078.7401574803 +y_0=45830.29484378968 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Green Lake and Marquette (ftUS) -<7609> +proj=lcc +lat_1=43.80700011777778 +lat_0=43.80700011777778 +lon_0=-89.24166666666667 +k_0=1.0000344057 +x_0=150876.3017526035 +y_0=79170.77937515875 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Iowa (ftUS) -<7610> +proj=tmerc +lat_0=42.53888888888888 +lon_0=-90.16111111111111 +k=1.0000394961 +x_0=113081.0261620523 +y_0=0.004572009144018288 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Iron (ftUS) -<7611> +proj=tmerc +lat_0=45.43333333333333 +lon_0=-90.25555555555556 +k=1.0000677153 +x_0=220980.4419608839 +y_0=0.008534417068834137 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Jackson (ftUS) -<7612> +proj=tmerc +lat_0=44.25333512777778 +lon_0=-90.84429651944444 +k=1.0000353 +x_0=27000 +y_0=24999.99989839979 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (ftUS) -<7613> +proj=tmerc +lat_0=42.21666666666667 +lon_0=-87.89444444444445 +k=1.0000260649 +x_0=185928.3727711455 +y_0=0.0009144018288036576 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Kewaunee, Manitowoc and Sheboygan (ftUS) -<7614> +proj=tmerc +lat_0=43.26666666666667 +lon_0=-87.55 +k=1.0000233704 +x_0=79857.76154432308 +y_0=0.001219202438404877 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS La Crosse (ftUS) -<7615> +proj=tmerc +lat_0=43.45111111111111 +lon_0=-91.31666666666666 +k=1.0000319985 +x_0=130454.6596901194 +y_0=0.003352806705613411 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Langlade (ftUS) -<7616> +proj=lcc +lat_1=45.15423710527778 +lat_0=45.15423710527778 +lon_0=-89.03333333333333 +k_0=1.0000627024 +x_0=198425.1968503937 +y_0=105279.7828803657 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Lincoln (ftUS) -<7617> +proj=tmerc +lat_0=44.84444444444445 +lon_0=-89.73333333333333 +k=1.0000599003 +x_0=116129.0322580645 +y_0=0.005791211582423164 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Marathon (ftUS) -<7618> +proj=lcc +lat_1=44.90090442361111 +lat_0=44.90090442361111 +lon_0=-89.77 +k_0=1.000053289 +x_0=74676.1493522987 +y_0=55049.26695453391 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Marinette (ftUS) -<7619> +proj=tmerc +lat_0=44.69166666666666 +lon_0=-87.71111111111111 +k=1.0000234982 +x_0=238658.8794513589 +y_0=0.003048006096012192 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Menominee (ftUS) -<7620> +proj=tmerc +lat_0=44.71666666666667 +lon_0=-88.41666666666667 +k=1.0000362499 +x_0=105461.0121412243 +y_0=0.003048006096012192 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Monroe (ftUS) -<7621> +proj=lcc +lat_1=44.00007392861111 +lat_0=44.00007392861111 +lon_0=-90.64166666666668 +k_0=1.0000434122 +x_0=204521.2090424181 +y_0=121923.9861823724 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Oconto (ftUS) -<7622> +proj=tmerc +lat_0=44.39722222222222 +lon_0=-87.90833333333335 +k=1.0000236869 +x_0=182880.3675895352 +y_0=0.003352806705613411 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Oneida (ftUS) -<7623> +proj=lcc +lat_1=45.70422377027778 +lat_0=45.70422377027778 +lon_0=-89.54444444444444 +k_0=1.0000686968 +x_0=70104.14020828041 +y_0=57588.03474726949 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Pepin and Pierce (ftUS) -<7624> +proj=lcc +lat_1=44.63614887194444 +lat_0=44.63614887194444 +lon_0=-92.22777777777777 +k_0=1.0000362977 +x_0=167640.3352806706 +y_0=86033.08773177546 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Polk (ftUS) -<7625> +proj=tmerc +lat_0=44.66111111111111 +lon_0=-92.63333333333334 +k=1.0000433849 +x_0=141732.2822453645 +y_0=0.005791211582423164 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Portage (ftUS) -<7626> +proj=lcc +lat_1=44.41682397527777 +lat_0=44.41682397527777 +lon_0=-89.5 +k_0=1.000039936 +x_0=56388.11277622555 +y_0=50022.1874523749 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Price (ftUS) -<7627> +proj=tmerc +lat_0=44.55555555555555 +lon_0=-90.48888888888889 +k=1.0000649554 +x_0=227990.8544577089 +y_0=0.01097282194564389 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Richland (ftUS) -<7628> +proj=lcc +lat_1=43.3223129275 +lat_0=43.3223129275 +lon_0=-90.43055555555556 +k_0=1.0000375653 +x_0=202387.6047752095 +y_0=134255.4254508509 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Rock (ftUS) -<7629> +proj=tmerc +lat_0=41.94444444444444 +lon_0=-89.07222222222222 +k=1.0000337311 +x_0=146304.2926085852 +y_0=0.006705613411226822 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Rusk (ftUS) -<7630> +proj=tmerc +lat_0=43.91944444444444 +lon_0=-91.06666666666666 +k=1.0000495976 +x_0=250546.1013970028 +y_0=0.02346964693929388 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Sauk (ftUS) -<7631> +proj=tmerc +lat_0=42.81944444444445 +lon_0=-89.90000000000001 +k=1.0000373868 +x_0=185623.5715519431 +y_0=0.005181610363220727 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Sawyer (ftUS) -<7632> +proj=lcc +lat_1=45.90009913138888 +lat_0=45.90009913138888 +lon_0=-91.11666666666666 +k_0=1.0000573461 +x_0=216713.2337312675 +y_0=120734.1631699263 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Shawano (ftUS) -<7633> +proj=tmerc +lat_0=44.03611111111111 +lon_0=-88.60555555555555 +k=1.000032144 +x_0=262433.3251714504 +y_0=0.009448818897637795 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS St. Croix (ftUS) -<7634> +proj=tmerc +lat_0=44.03611111111111 +lon_0=-92.63333333333334 +k=1.0000381803 +x_0=165506.7300990602 +y_0=0.01036322072644145 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Taylor (ftUS) -<7635> +proj=lcc +lat_1=45.17782208583333 +lat_0=45.17782208583333 +lon_0=-90.48333333333333 +k_0=1.0000597566 +x_0=187147.5742951486 +y_0=107746.7521463043 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Trempealeau (ftUS) -<7636> +proj=tmerc +lat_0=43.16111111111111 +lon_0=-91.36666666666666 +k=1.0000361538 +x_0=256946.9138938278 +y_0=0.003962407924815849 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Vernon (ftUS) -<7637> +proj=lcc +lat_1=43.57503293972223 +lat_0=43.57503293972223 +lon_0=-90.78333333333333 +k_0=1.0000408158 +x_0=222504.44500889 +y_0=47532.0603505207 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Vilas (ftUS) -<7638> +proj=lcc +lat_1=46.07784409055556 +lat_0=46.07784409055556 +lon_0=-89.48888888888889 +k_0=1.0000730142 +x_0=134417.0688341377 +y_0=50337.10927101854 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Walworth (ftUS) -<7639> +proj=lcc +lat_1=42.66946209694444 +lat_0=42.66946209694444 +lon_0=-88.54166666666667 +k_0=1.0000367192 +x_0=232562.8651257302 +y_0=111088.2224028448 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Washburn (ftUS) -<7640> +proj=lcc +lat_1=45.96121983333334 +lat_0=45.96121983333334 +lon_0=-91.78333333333333 +k_0=1.0000475376 +x_0=234086.8681737363 +y_0=188358.6059436119 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Washington (ftUS) -<7641> +proj=tmerc +lat_0=42.91805555555555 +lon_0=-88.06388888888888 +k=1.00003738 +x_0=120091.4414020828 +y_0=0.003048006096012192 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Waukesha (ftUS) -<7642> +proj=tmerc +lat_0=42.56944444444445 +lon_0=-88.22499999999999 +k=1.0000346179 +x_0=208788.4178816358 +y_0=0.003352806705613411 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Waupaca (ftUS) -<7643> +proj=tmerc +lat_0=43.42027777777778 +lon_0=-88.81666666666666 +k=1.0000333645 +x_0=185013.9709423419 +y_0=0.007010414020828041 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Waushara (ftUS) -<7644> +proj=lcc +lat_1=44.11394404583334 +lat_0=44.11394404583334 +lon_0=-89.24166666666667 +k_0=1.0000392096 +x_0=120091.4401828804 +y_0=45069.7588011176 +ellps=GRS80 +units=us-ft +no_defs <> -# NAD83(2011) / WISCRS Wood (ftUS) -<7645> +proj=lcc +lat_1=44.36259546944444 +lat_0=44.36259546944444 +lon_0=-90 +k_0=1.0000421209 +x_0=208483.6172720346 +y_0=134589.7539243078 +ellps=GRS80 +units=us-ft +no_defs <> -# Kyrg-06 / zone 1 -<7692> +proj=tmerc +lat_0=0 +lon_0=68.51666666666667 +k=1 +x_0=1300000 +y_0=14743.5 +ellps=GRS80 +units=m +no_defs <> -# Kyrg-06 / zone 2 -<7693> +proj=tmerc +lat_0=0 +lon_0=71.51666666666667 +k=1 +x_0=2300000 +y_0=14743.5 +ellps=GRS80 +units=m +no_defs <> -# Kyrg-06 / zone 3 -<7694> +proj=tmerc +lat_0=0 +lon_0=74.51666666666667 +k=1 +x_0=3300000 +y_0=14743.5 +ellps=GRS80 +units=m +no_defs <> -# Kyrg-06 / zone 4 -<7695> +proj=tmerc +lat_0=0 +lon_0=77.51666666666667 +k=1 +x_0=4300000 +y_0=14743.5 +ellps=GRS80 +units=m +no_defs <> -# Kyrg-06 / zone 5 -<7696> +proj=tmerc +lat_0=0 +lon_0=80.51666666666667 +k=1 +x_0=5300000 +y_0=14743.5 +ellps=GRS80 +units=m +no_defs <> -# WGS 84 / India NSF LCC -<7755> +proj=lcc +lat_1=12.472955 +lat_2=35.17280444444444 +lat_0=24 +lon_0=80 +x_0=4000000 +y_0=4000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Andhra Pradesh -<7756> +proj=lcc +lat_1=13.75 +lat_2=18.75 +lat_0=16.25543298 +lon_0=80.875 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Arunachal Pradesh -<7757> +proj=lcc +lat_1=27 +lat_2=29 +lat_0=28.00157897 +lon_0=94.5 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Assam -<7758> +proj=lcc +lat_1=24.66666666666667 +lat_2=27.33333333333333 +lat_0=26.00257703 +lon_0=92.75 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Bihar -<7759> +proj=lcc +lat_1=24.625 +lat_2=27.125 +lat_0=25.87725247 +lon_0=85.875 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Delhi -<7760> +proj=lcc +lat_1=28.375 +lat_2=28.875 +lat_0=28.62510126 +lon_0=77 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Gujarat -<7761> +proj=lcc +lat_1=20.79166666666667 +lat_2=23.95833333333333 +lat_0=22.37807121 +lon_0=71.375 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Haryana -<7762> +proj=lcc +lat_1=28.08333333333333 +lat_2=30.41666666666667 +lat_0=29.25226266 +lon_0=76 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Himachal Pradesh -<7763> +proj=lcc +lat_1=30.75 +lat_2=32.75 +lat_0=31.75183497 +lon_0=77.375 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Jammu and Kashmir -<7764> +proj=lcc +lat_1=33.08333333333334 +lat_2=36.41666666666666 +lat_0=34.75570874 +lon_0=76.5 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Jharkhand -<7765> +proj=lcc +lat_1=22.54166666666667 +lat_2=24.70833333333333 +lat_0=23.62652682 +lon_0=85.625 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Madhya Pradesh -<7766> +proj=lcc +lat_1=22 +lat_2=26 +lat_0=24.00529821 +lon_0=78.375 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Maharashtra -<7767> +proj=lcc +lat_1=16.625 +lat_2=21.125 +lat_0=18.88015774 +lon_0=76.75 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Manipur -<7768> +proj=lcc +lat_1=24.08333333333333 +lat_2=25.41666666666667 +lat_0=24.75060911 +lon_0=94 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Meghalaya -<7769> +proj=lcc +lat_1=25.20833333333333 +lat_2=26.04166666666667 +lat_0=25.62524747 +lon_0=91.375 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Nagaland -<7770> +proj=lcc +lat_1=25.375 +lat_2=26.875 +lat_0=26.12581974 +lon_0=94.375 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / India Northeast -<7771> +proj=lcc +lat_1=23.04166666666667 +lat_2=28.20833333333333 +lat_0=25.63452135 +lon_0=93.5 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Orissa -<7772> +proj=lcc +lat_1=18.58333333333333 +lat_2=21.91666666666667 +lat_0=20.25305174 +lon_0=84.375 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Punjab -<7773> +proj=lcc +lat_1=30 +lat_2=32 +lat_0=31.00178226 +lon_0=75.375 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Rajasthan -<7774> +proj=lcc +lat_1=24.29166666666667 +lat_2=29.45833333333333 +lat_0=26.88505546 +lon_0=73.875 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Uttar Pradesh -<7775> +proj=lcc +lat_1=24.875 +lat_2=29.375 +lat_0=27.13270823 +lon_0=80.875 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Uttaranchal -<7776> +proj=lcc +lat_1=29 +lat_2=31 +lat_0=30.0017132 +lon_0=79.375 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Andaman and Nicobar -<7777> +proj=tmerc +lat_0=10.25 +lon_0=93.25 +k=0.9999428 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Chhattisgarh -<7778> +proj=tmerc +lat_0=21 +lon_0=82.25 +k=0.9998332 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Goa -<7779> +proj=tmerc +lat_0=15.375 +lon_0=74 +k=0.9999913 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Karnataka -<7780> +proj=tmerc +lat_0=15.125 +lon_0=76.375 +k=0.9998011999999999 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Kerala -<7781> +proj=tmerc +lat_0=10.5 +lon_0=76 +k=0.9999177 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Lakshadweep -<7782> +proj=tmerc +lat_0=10 +lon_0=73.125 +k=0.9999536 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Mizoram -<7783> +proj=tmerc +lat_0=23.125 +lon_0=92.75 +k=0.9999821 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Sikkim -<7784> +proj=tmerc +lat_0=27.625 +lon_0=88.5 +k=0.9999926 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Tamil Nadu -<7785> +proj=tmerc +lat_0=10.875 +lon_0=78.375 +k=0.9997942 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Tripura -<7786> +proj=tmerc +lat_0=23.75 +lon_0=91.75 +k=0.9999822 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / West Bengal -<7787> +proj=tmerc +lat_0=24.375 +lon_0=87.875 +k=0.9998584 +x_0=1000000 +y_0=1000000 +datum=WGS84 +units=m +no_defs <> -# RDN2008 / UTM zone 32N -<7791> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RDN2008 / UTM zone 33N -<7792> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RDN2008 / UTM zone 34N -<7793> +proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RDN2008 / Italy zone (E-N) -<7794> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9985000000000001 +x_0=7000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RDN2008 / Zone 12 (E-N) -<7795> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=3000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# BGS2005 / UTM zone 34N (N-E) -<7799> +proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs <> -# BGS2005 / UTM zone 35N (N-E) -<7800> +proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs <> -# BGS2005 / CCS2005 -<7801> +proj=lcc +lat_1=42 +lat_2=43.33333333333334 +lat_0=42.66787568333333 +lon_0=25.5 +x_0=500000 +y_0=4725824.3591 +ellps=GRS80 +units=m +no_defs <> -# BGS2005 / UTM zone 34N -<7803> +proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs <> -# BGS2005 / UTM zone 35N -<7804> +proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs <> -# BGS2005 / UTM zone 36N -<7805> +proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone X1 -<7825> +proj=tmerc +lat_0=0.08333333333333333 +lon_0=23.5 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone X2 -<7826> +proj=tmerc +lat_0=0.08333333333333333 +lon_0=26.5 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone X3 -<7827> +proj=tmerc +lat_0=0.08333333333333333 +lon_0=29.5 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone X4 -<7828> +proj=tmerc +lat_0=0.08333333333333333 +lon_0=32.5 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone X5 -<7829> +proj=tmerc +lat_0=0.08333333333333333 +lon_0=35.5 +k=1 +x_0=5300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone X6 -<7830> +proj=tmerc +lat_0=0.08333333333333333 +lon_0=38.5 +k=1 +x_0=6300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone X7 -<7831> +proj=tmerc +lat_0=0.08333333333333333 +lon_0=41.5 +k=1 +x_0=7300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# GDA2020 / GA LCC -<7845> +proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 46 -<7846> +proj=utm +zone=46 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 47 -<7847> +proj=utm +zone=47 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 48 -<7848> +proj=utm +zone=48 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 49 -<7849> +proj=utm +zone=49 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 50 -<7850> +proj=utm +zone=50 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 51 -<7851> +proj=utm +zone=51 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 52 -<7852> +proj=utm +zone=52 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 53 -<7853> +proj=utm +zone=53 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 54 -<7854> +proj=utm +zone=54 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 55 -<7855> +proj=utm +zone=55 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 56 -<7856> +proj=utm +zone=56 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 57 -<7857> +proj=utm +zone=57 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 58 -<7858> +proj=utm +zone=58 +south +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MGA zone 59 -<7859> +proj=utm +zone=59 +south +ellps=GRS80 +units=m +no_defs <> -# Astro DOS 71 / SHLG71 -<7877> +proj=tmerc +lat_0=-15.96666666666667 +lon_0=-5.716666666666667 +k=1 +x_0=300000 +y_0=2000000 +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +units=m +no_defs <> -# Astro DOS 71 / UTM zone 30S -<7878> +proj=utm +zone=30 +south +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +units=m +no_defs <> -# St. Helena Tritan / SHLG(Tritan) -<7882> +proj=tmerc +lat_0=-15.96666666666667 +lon_0=-5.716666666666667 +k=1 +x_0=299483.737 +y_0=2000527.879 +ellps=WGS84 +towgs84=-0.077,0.079,0.086,0,0,0,0 +units=m +no_defs <> -# St. Helena Tritan / UTM zone 30S -<7883> +proj=utm +zone=30 +south +ellps=WGS84 +towgs84=-0.077,0.079,0.086,0,0,0,0 +units=m +no_defs <> -# SHMG2015 -<7887> +proj=utm +zone=30 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA2020 / Vicgrid -<7899> +proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +units=m +no_defs <> -# NAD27 / MTM zone 10 -<7991> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# Malongo 1987 / UTM zone 33S -<7992> +proj=utm +zone=33 +south +ellps=intl +towgs84=-254.1,-5.36,-100.29,0,0,0,0 +units=m +no_defs <> -# GDA2020 / ALB2020 -<8013> +proj=tmerc +lat_0=0 +lon_0=117.8833333333333 +k=1.0000044 +x_0=50000 +y_0=4100000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / BIO2020 -<8014> +proj=tmerc +lat_0=0 +lon_0=115.25 +k=1.0000022 +x_0=60000 +y_0=2700000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / BRO2020 -<8015> +proj=tmerc +lat_0=0 +lon_0=122.3333333333333 +k=1.00000298 +x_0=50000 +y_0=2300000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / BCG2020 -<8016> +proj=tmerc +lat_0=0 +lon_0=115.4333333333333 +k=0.99999592 +x_0=50000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / CARN2020 -<8017> +proj=tmerc +lat_0=0 +lon_0=113.6666666666667 +k=0.99999796 +x_0=50000 +y_0=3050000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / CIG2020 -<8018> +proj=tmerc +lat_0=0 +lon_0=105.625 +k=1.00002514 +x_0=50000 +y_0=1400000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / CKIG2020 -<8019> +proj=tmerc +lat_0=0 +lon_0=96.875 +k=0.99999387 +x_0=50000 +y_0=1600000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / COL2020 -<8020> +proj=tmerc +lat_0=0 +lon_0=115.9333333333333 +k=1.000019 +x_0=40000 +y_0=4100000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / ESP2020 -<8021> +proj=tmerc +lat_0=0 +lon_0=121.8833333333333 +k=1.0000055 +x_0=50000 +y_0=4050000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / EXM2020 -<8022> +proj=tmerc +lat_0=0 +lon_0=114.0666666666667 +k=1.00000236 +x_0=50000 +y_0=2750000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / GCG2020 -<8023> +proj=tmerc +lat_0=0 +lon_0=114.5833333333333 +k=1.00000628 +x_0=50000 +y_0=3450000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / GOLD2020 -<8024> +proj=tmerc +lat_0=0 +lon_0=121.5 +k=1.00004949 +x_0=60000 +y_0=3800000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / JCG2020 -<8025> +proj=tmerc +lat_0=0 +lon_0=114.9833333333333 +k=1.00000314 +x_0=50000 +y_0=3650000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / KALB2020 -<8026> +proj=tmerc +lat_0=0 +lon_0=114.3152777777778 +k=1.000014 +x_0=55000 +y_0=3700000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / KAR2020 -<8027> +proj=tmerc +lat_0=0 +lon_0=116.9333333333333 +k=0.9999989 +x_0=50000 +y_0=2550000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / KUN2020 -<8028> +proj=tmerc +lat_0=0 +lon_0=128.75 +k=1.0000165 +x_0=50000 +y_0=2100000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / LCG2020 -<8029> +proj=tmerc +lat_0=0 +lon_0=115.3666666666667 +k=1.00000157 +x_0=50000 +y_0=3750000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / MRCG2020 -<8030> +proj=tmerc +lat_0=0 +lon_0=115.1666666666667 +k=1.0000055 +x_0=50000 +y_0=4050000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / PCG2020 -<8031> +proj=tmerc +lat_0=0 +lon_0=115.8166666666667 +k=0.9999990600000001 +x_0=50000 +y_0=3900000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / PHG2020 -<8032> +proj=tmerc +lat_0=0 +lon_0=118.6 +k=1.00000135 +x_0=50000 +y_0=2500000 +ellps=GRS80 +units=m +no_defs <> -# WGS 84 / TM Zone 20N (ftUS) -<8035> +proj=utm +zone=20 +datum=WGS84 +units=us-ft +no_defs <> -# WGS 84 / TM Zone 21N (ftUS) -<8036> +proj=utm +zone=21 +datum=WGS84 +units=us-ft +no_defs <> -# Gusterberg Grid (Ferro) -<8044> +proj=cass +lat_0=48.03846388888888 +lon_0=31.80418055555556 +x_0=0 +y_0=0 +a=6376045 +b=6355477.112903226 +pm=ferro +units=m +no_defs <> -# St. Stephen Grid (Ferro) -<8045> +proj=cass +lat_0=48.20876111111112 +lon_0=34.04092222222222 +x_0=0 +y_0=0 +a=6376045 +b=6355477.112903226 +pm=ferro +units=m +no_defs <> -# GDA2020 / NSW Lambert -<8058> +proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +units=m +no_defs <> -# GDA2020 / SA Lambert -<8059> +proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / PCCS zone 1 (ft) -<8065> +proj=omerc +lat_0=32.25 +lonc=-111.4 +alpha=45 +k=1.00011 +x_0=48768 +y_0=243840 +gamma=45 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / PCCS zone 2 (ft) -<8066> +proj=tmerc +lat_0=31.25 +lon_0=-112.1666666666667 +k=1.00009 +x_0=548640 +y_0=304800 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / PCCS zone 3 (ft) -<8067> +proj=tmerc +lat_0=31.5 +lon_0=-113.1666666666667 +k=1.000055 +x_0=182880 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / PCCS zone 4 (ft) -<8068> +proj=lcc +lat_1=30.5 +lat_0=30.5 +lon_0=-110.75 +k_0=0.9998 +x_0=9144 +y_0=-188976 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(CSRS)v6 / MTM Nova Scotia zone 4 -<8082> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=24500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS)v6 / MTM Nova Scotia zone 5 -<8083> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=25500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# ISN2016 / Lambert 2016 -<8088> +proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=2700000 +y_0=300000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Florence (m) -<8090> +proj=tmerc +lat_0=45.43888888888888 +lon_0=-88.14166666666668 +k=1.0000552095 +x_0=133502.6683 +y_0=0.0063 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Florence (ftUS) -<8091> +proj=tmerc +lat_0=45.43888888888888 +lon_0=-88.14166666666668 +k=1.0000552095 +x_0=133502.6682245364 +y_0=0.006400812801625603 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Eau Claire (m) -<8092> +proj=lcc +lat_1=44.87228112638889 +lat_0=44.87228112638889 +lon_0=-91.28888888888889 +k_0=1.000035079 +x_0=120091.4402 +y_0=91687.92389999999 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Eau Claire (ftUS) -<8093> +proj=lcc +lat_1=44.87228112638889 +lat_0=44.87228112638889 +lon_0=-91.28888888888889 +k_0=1.000035079 +x_0=120091.4401828804 +y_0=91687.92390144781 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Wood (m) -<8095> +proj=lcc +lat_1=44.36259546944444 +lat_0=44.36259546944444 +lon_0=-90 +k_0=1.0000421209 +x_0=208483.6173 +y_0=134589.754 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Wood (ftUS) -<8096> +proj=lcc +lat_1=44.36259546944444 +lat_0=44.36259546944444 +lon_0=-90 +k_0=1.0000421209 +x_0=208483.6172720346 +y_0=134589.7539243078 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Waushara (m) -<8097> +proj=lcc +lat_1=44.11394404583334 +lat_0=44.11394404583334 +lon_0=-89.24166666666667 +k_0=1.0000392096 +x_0=120091.4402 +y_0=45069.7587 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Waushara (ftUS) -<8098> +proj=lcc +lat_1=44.11394404583334 +lat_0=44.11394404583334 +lon_0=-89.24166666666667 +k_0=1.0000392096 +x_0=120091.4401828804 +y_0=45069.7588011176 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Waupaca (m) -<8099> +proj=tmerc +lat_0=43.42027777777778 +lon_0=-88.81666666666666 +k=1.0000333645 +x_0=185013.9709 +y_0=0.007 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Waupaca (ftUS) -<8100> +proj=tmerc +lat_0=43.42027777777778 +lon_0=-88.81666666666666 +k=1.0000333645 +x_0=185013.9709423419 +y_0=0.007010414020828041 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Waukesha (m) -<8101> +proj=tmerc +lat_0=42.56944444444445 +lon_0=-88.22499999999999 +k=1.0000346179 +x_0=208788.418 +y_0=0.0034 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Waukesha (ftUS) -<8102> +proj=tmerc +lat_0=42.56944444444445 +lon_0=-88.22499999999999 +k=1.0000346179 +x_0=208788.4178816358 +y_0=0.003352806705613411 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Washington (m) -<8103> +proj=tmerc +lat_0=42.91805555555555 +lon_0=-88.06388888888888 +k=1.00003738 +x_0=120091.4415 +y_0=0.003 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Washington (ftUS) -<8104> +proj=tmerc +lat_0=42.91805555555555 +lon_0=-88.06388888888888 +k=1.00003738 +x_0=120091.4414020828 +y_0=0.003048006096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Washburn (m) -<8105> +proj=lcc +lat_1=45.96121983333334 +lat_0=45.96121983333334 +lon_0=-91.78333333333333 +k_0=1.0000475376 +x_0=234086.8682 +y_0=188358.6058 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Washburn (ftUS) -<8106> +proj=lcc +lat_1=45.96121983333334 +lat_0=45.96121983333334 +lon_0=-91.78333333333333 +k_0=1.0000475376 +x_0=234086.8681737363 +y_0=188358.6059436119 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Walworth (m) -<8107> +proj=lcc +lat_1=42.66946209694444 +lat_0=42.66946209694444 +lon_0=-88.54166666666667 +k_0=1.0000367192 +x_0=232562.8651 +y_0=111088.2224 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Walworth (ftUS) -<8108> +proj=lcc +lat_1=42.66946209694444 +lat_0=42.66946209694444 +lon_0=-88.54166666666667 +k_0=1.0000367192 +x_0=232562.8651257302 +y_0=111088.2224028448 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Vilas (m) -<8109> +proj=lcc +lat_1=46.07784409055556 +lat_0=46.07784409055556 +lon_0=-89.48888888888889 +k_0=1.0000730142 +x_0=134417.0689 +y_0=50337.1092 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Vilas (ftUS) -<8110> +proj=lcc +lat_1=46.07784409055556 +lat_0=46.07784409055556 +lon_0=-89.48888888888889 +k_0=1.0000730142 +x_0=134417.0688341377 +y_0=50337.10927101854 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Vernon (m) -<8111> +proj=lcc +lat_1=43.57503293972223 +lat_0=43.57503293972223 +lon_0=-90.78333333333333 +k_0=1.0000408158 +x_0=222504.4451 +y_0=47532.0602 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Vernon (ftUS) -<8112> +proj=lcc +lat_1=43.57503293972223 +lat_0=43.57503293972223 +lon_0=-90.78333333333333 +k_0=1.0000408158 +x_0=222504.44500889 +y_0=47532.0603505207 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Trempealeau (m) -<8113> +proj=tmerc +lat_0=43.16111111111111 +lon_0=-91.36666666666666 +k=1.0000361538 +x_0=256946.9138 +y_0=0.0041 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Trempealeau (ftUS) -<8114> +proj=tmerc +lat_0=43.16111111111111 +lon_0=-91.36666666666666 +k=1.0000361538 +x_0=256946.9138938278 +y_0=0.003962407924815849 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Taylor (m) -<8115> +proj=lcc +lat_1=45.17782208583333 +lat_0=45.17782208583333 +lon_0=-90.48333333333333 +k_0=1.0000597566 +x_0=187147.5744 +y_0=107746.7522 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Taylor (ftUS) -<8116> +proj=lcc +lat_1=45.17782208583333 +lat_0=45.17782208583333 +lon_0=-90.48333333333333 +k_0=1.0000597566 +x_0=187147.5742951486 +y_0=107746.7521463043 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS St. Croix (m) -<8117> +proj=tmerc +lat_0=44.03611111111111 +lon_0=-92.63333333333334 +k=1.0000381803 +x_0=165506.7302 +y_0=0.0103 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS St. Croix (ftUS) -<8118> +proj=tmerc +lat_0=44.03611111111111 +lon_0=-92.63333333333334 +k=1.0000381803 +x_0=165506.7300990602 +y_0=0.01036322072644145 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Shawano (m) -<8119> +proj=tmerc +lat_0=44.03611111111111 +lon_0=-88.60555555555555 +k=1.000032144 +x_0=262433.3253 +y_0=0.009599999999999999 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Shawano (ftUS) -<8120> +proj=tmerc +lat_0=44.03611111111111 +lon_0=-88.60555555555555 +k=1.000032144 +x_0=262433.3251714504 +y_0=0.009448818897637795 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Sawyer (m) -<8121> +proj=lcc +lat_1=45.90009913138888 +lat_0=45.90009913138888 +lon_0=-91.11666666666666 +k_0=1.0000573461 +x_0=216713.2336 +y_0=120734.1631 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Sawyer (ftUS) -<8122> +proj=lcc +lat_1=45.90009913138888 +lat_0=45.90009913138888 +lon_0=-91.11666666666666 +k_0=1.0000573461 +x_0=216713.2337312675 +y_0=120734.1631699263 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Sauk (m) -<8123> +proj=tmerc +lat_0=42.81944444444445 +lon_0=-89.90000000000001 +k=1.0000373868 +x_0=185623.5716 +y_0=0.0051 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Sauk (ftUS) -<8124> +proj=tmerc +lat_0=42.81944444444445 +lon_0=-89.90000000000001 +k=1.0000373868 +x_0=185623.5715519431 +y_0=0.005181610363220727 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Rusk (m) -<8125> +proj=tmerc +lat_0=43.91944444444444 +lon_0=-91.06666666666666 +k=1.0000495976 +x_0=250546.1013 +y_0=0.0234 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Rusk (ftUS) -<8126> +proj=tmerc +lat_0=43.91944444444444 +lon_0=-91.06666666666666 +k=1.0000495976 +x_0=250546.1013970028 +y_0=0.02346964693929388 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Rock (m) -<8127> +proj=tmerc +lat_0=41.94444444444444 +lon_0=-89.07222222222222 +k=1.0000337311 +x_0=146304.2926 +y_0=0.0068 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Rock (ftUS) -<8128> +proj=tmerc +lat_0=41.94444444444444 +lon_0=-89.07222222222222 +k=1.0000337311 +x_0=146304.2926085852 +y_0=0.006705613411226822 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Richland (m) -<8129> +proj=lcc +lat_1=43.3223129275 +lat_0=43.3223129275 +lon_0=-90.43055555555556 +k_0=1.0000375653 +x_0=202387.6048 +y_0=134255.4253 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Richland (ftUS) -<8130> +proj=lcc +lat_1=43.3223129275 +lat_0=43.3223129275 +lon_0=-90.43055555555556 +k_0=1.0000375653 +x_0=202387.6047752095 +y_0=134255.4254508509 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Price (m) -<8131> +proj=tmerc +lat_0=44.55555555555555 +lon_0=-90.48888888888889 +k=1.0000649554 +x_0=227990.8546 +y_0=0.0109 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Price (ftUS) -<8132> +proj=tmerc +lat_0=44.55555555555555 +lon_0=-90.48888888888889 +k=1.0000649554 +x_0=227990.8544577089 +y_0=0.01097282194564389 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Portage (m) -<8133> +proj=lcc +lat_1=44.41682397527777 +lat_0=44.41682397527777 +lon_0=-89.5 +k_0=1.000039936 +x_0=56388.1128 +y_0=50022.1874 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Portage (ftUS) -<8134> +proj=lcc +lat_1=44.41682397527777 +lat_0=44.41682397527777 +lon_0=-89.5 +k_0=1.000039936 +x_0=56388.11277622555 +y_0=50022.1874523749 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Polk (m) -<8135> +proj=tmerc +lat_0=44.66111111111111 +lon_0=-92.63333333333334 +k=1.0000433849 +x_0=141732.2823 +y_0=0.0059 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Polk (ftUS) -<8136> +proj=tmerc +lat_0=44.66111111111111 +lon_0=-92.63333333333334 +k=1.0000433849 +x_0=141732.2822453645 +y_0=0.005791211582423164 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Pepin and Pierce (m) -<8137> +proj=lcc +lat_1=44.63614887194444 +lat_0=44.63614887194444 +lon_0=-92.22777777777777 +k_0=1.0000362977 +x_0=167640.3354 +y_0=86033.0876 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Pepin and Pierce (ftUS) -<8138> +proj=lcc +lat_1=44.63614887194444 +lat_0=44.63614887194444 +lon_0=-92.22777777777777 +k_0=1.0000362977 +x_0=167640.3352806706 +y_0=86033.08773177546 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Oneida (m) -<8139> +proj=lcc +lat_1=45.70422377027778 +lat_0=45.70422377027778 +lon_0=-89.54444444444444 +k_0=1.0000686968 +x_0=70104.1401 +y_0=57588.0346 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Oneida (ftUS) -<8140> +proj=lcc +lat_1=45.70422377027778 +lat_0=45.70422377027778 +lon_0=-89.54444444444444 +k_0=1.0000686968 +x_0=70104.14020828041 +y_0=57588.03474726949 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Oconto (m) -<8141> +proj=tmerc +lat_0=44.39722222222222 +lon_0=-87.90833333333335 +k=1.0000236869 +x_0=182880.3676 +y_0=0.0033 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Oconto (ftUS) -<8142> +proj=tmerc +lat_0=44.39722222222222 +lon_0=-87.90833333333335 +k=1.0000236869 +x_0=182880.3675895352 +y_0=0.003352806705613411 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Monroe (m) -<8143> +proj=lcc +lat_1=44.00007392861111 +lat_0=44.00007392861111 +lon_0=-90.64166666666668 +k_0=1.0000434122 +x_0=204521.209 +y_0=121923.9861 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Monroe (ftUS) -<8144> +proj=lcc +lat_1=44.00007392861111 +lat_0=44.00007392861111 +lon_0=-90.64166666666668 +k_0=1.0000434122 +x_0=204521.2090424181 +y_0=121923.9861823724 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Menominee (m) -<8145> +proj=tmerc +lat_0=44.71666666666667 +lon_0=-88.41666666666667 +k=1.0000362499 +x_0=105461.0121 +y_0=0.0029 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Menominee (ftUS) -<8146> +proj=tmerc +lat_0=44.71666666666667 +lon_0=-88.41666666666667 +k=1.0000362499 +x_0=105461.0121412243 +y_0=0.003048006096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Marinette (m) -<8147> +proj=tmerc +lat_0=44.69166666666666 +lon_0=-87.71111111111111 +k=1.0000234982 +x_0=238658.8794 +y_0=0.0032 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Marinette (ftUS) -<8148> +proj=tmerc +lat_0=44.69166666666666 +lon_0=-87.71111111111111 +k=1.0000234982 +x_0=238658.8794513589 +y_0=0.003048006096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Marathon (m) -<8149> +proj=lcc +lat_1=44.90090442361111 +lat_0=44.90090442361111 +lon_0=-89.77 +k_0=1.000053289 +x_0=74676.1493 +y_0=55049.2669 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Marathon (ftUS) -<8150> +proj=lcc +lat_1=44.90090442361111 +lat_0=44.90090442361111 +lon_0=-89.77 +k_0=1.000053289 +x_0=74676.1493522987 +y_0=55049.26695453391 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Lincoln (m) -<8151> +proj=tmerc +lat_0=44.84444444444445 +lon_0=-89.73333333333333 +k=1.0000599003 +x_0=116129.0323 +y_0=0.0058 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Lincoln (ftUS) -<8152> +proj=tmerc +lat_0=44.84444444444445 +lon_0=-89.73333333333333 +k=1.0000599003 +x_0=116129.0322580645 +y_0=0.005791211582423164 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Langlade (m) -<8153> +proj=lcc +lat_1=45.15423710527778 +lat_0=45.15423710527778 +lon_0=-89.03333333333333 +k_0=1.0000627024 +x_0=198425.197 +y_0=105279.7829 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Langlade (ftUS) -<8154> +proj=lcc +lat_1=45.15423710527778 +lat_0=45.15423710527778 +lon_0=-89.03333333333333 +k_0=1.0000627024 +x_0=198425.1968503937 +y_0=105279.7828803657 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS La Crosse (m) -<8155> +proj=tmerc +lat_0=43.45111111111111 +lon_0=-91.31666666666666 +k=1.0000319985 +x_0=130454.6598 +y_0=0.0033 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS La Crosse (ftUS) -<8156> +proj=tmerc +lat_0=43.45111111111111 +lon_0=-91.31666666666666 +k=1.0000319985 +x_0=130454.6596901194 +y_0=0.003352806705613411 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Kewaunee, Manitowoc and Sheboygan (m) -<8157> +proj=tmerc +lat_0=43.26666666666667 +lon_0=-87.55 +k=1.0000233704 +x_0=79857.7614 +y_0=0.0012 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Kewaunee, Manitowoc and Sheboygan (ftUS) -<8158> +proj=tmerc +lat_0=43.26666666666667 +lon_0=-87.55 +k=1.0000233704 +x_0=79857.76154432308 +y_0=0.001219202438404877 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (m) -<8159> +proj=tmerc +lat_0=42.21666666666667 +lon_0=-87.89444444444445 +k=1.0000260649 +x_0=185928.3728 +y_0=0.0009 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (ftUS) -<8160> +proj=tmerc +lat_0=42.21666666666667 +lon_0=-87.89444444444445 +k=1.0000260649 +x_0=185928.3727711455 +y_0=0.0009144018288036576 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Jackson (m) -<8161> +proj=tmerc +lat_0=44.25333512777778 +lon_0=-90.84429651944444 +k=1.0000353 +x_0=27000 +y_0=25000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Jackson (ftUS) -<8162> +proj=tmerc +lat_0=44.25333512777778 +lon_0=-90.84429651944444 +k=1.0000353 +x_0=27000 +y_0=24999.99989839979 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Iron (m) -<8163> +proj=tmerc +lat_0=45.43333333333333 +lon_0=-90.25555555555556 +k=1.0000677153 +x_0=220980.4419 +y_0=0.008500000000000001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Iron (ftUS) -<8164> +proj=tmerc +lat_0=45.43333333333333 +lon_0=-90.25555555555556 +k=1.0000677153 +x_0=220980.4419608839 +y_0=0.008534417068834137 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Iowa (m) -<8165> +proj=tmerc +lat_0=42.53888888888888 +lon_0=-90.16111111111111 +k=1.0000394961 +x_0=113081.0261 +y_0=0.0045 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Iowa (ftUS) -<8166> +proj=tmerc +lat_0=42.53888888888888 +lon_0=-90.16111111111111 +k=1.0000394961 +x_0=113081.0261620523 +y_0=0.004572009144018288 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Green Lake and Marquette (m) -<8167> +proj=lcc +lat_1=43.80700011777778 +lat_0=43.80700011777778 +lon_0=-89.24166666666667 +k_0=1.0000344057 +x_0=150876.3018 +y_0=79170.7795 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Green Lake and Marquette (ftUS) -<8168> +proj=lcc +lat_1=43.80700011777778 +lat_0=43.80700011777778 +lon_0=-89.24166666666667 +k_0=1.0000344057 +x_0=150876.3017526035 +y_0=79170.77937515875 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Green and Lafayette (m) -<8169> +proj=lcc +lat_1=42.63756227694444 +lat_0=42.63756227694444 +lon_0=-89.83888888888889 +k_0=1.0000390487 +x_0=170078.7403 +y_0=45830.2947 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Green and Lafayette (ftUS) -<8170> +proj=lcc +lat_1=42.63756227694444 +lat_0=42.63756227694444 +lon_0=-89.83888888888889 +k_0=1.0000390487 +x_0=170078.7401574803 +y_0=45830.29484378968 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Grant (m) -<8171> +proj=tmerc +lat_0=41.41111111111111 +lon_0=-90.8 +k=1.0000349452 +x_0=242316.4841 +y_0=0.01 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Grant (ftUS) -<8172> +proj=tmerc +lat_0=41.41111111111111 +lon_0=-90.8 +k=1.0000349452 +x_0=242316.484023368 +y_0=0.01005842011684023 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Forest (m) -<8173> +proj=tmerc +lat_0=44.00555555555555 +lon_0=-88.63333333333334 +k=1.0000673004 +x_0=275844.5533 +y_0=0.0157 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Forest (ftUS) -<8177> +proj=tmerc +lat_0=44.00555555555555 +lon_0=-88.63333333333334 +k=1.0000673004 +x_0=275844.5532131065 +y_0=0.0158496316992634 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Dunn (m) -<8179> +proj=tmerc +lat_0=44.40833333333333 +lon_0=-91.89444444444445 +k=1.0000410324 +x_0=51816.104 +y_0=0.003 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Dunn (ftUS) -<8180> +proj=tmerc +lat_0=44.40833333333333 +lon_0=-91.89444444444445 +k=1.0000410324 +x_0=51816.10393700787 +y_0=0.003048006096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Douglas (m) -<8181> +proj=tmerc +lat_0=45.88333333333333 +lon_0=-91.91666666666667 +k=1.0000385418 +x_0=59131.3183 +y_0=0.0041 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Douglas (ftUS) -<8182> +proj=tmerc +lat_0=45.88333333333333 +lon_0=-91.91666666666667 +k=1.0000385418 +x_0=59131.31826263652 +y_0=0.003962407924815849 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Door (m) -<8184> +proj=tmerc +lat_0=44.4 +lon_0=-87.27222222222223 +k=1.0000187521 +x_0=158801.1176 +y_0=0.0023 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Door (ftUS) -<8185> +proj=tmerc +lat_0=44.4 +lon_0=-87.27222222222223 +k=1.0000187521 +x_0=158801.1176022352 +y_0=0.002438404876809754 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Dodge and Jefferson (m) -<8187> +proj=tmerc +lat_0=41.47222222222222 +lon_0=-88.77500000000001 +k=1.0000346418 +x_0=263347.7263 +y_0=0.0076 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Dodge and Jefferson (ftUS) -<8189> +proj=tmerc +lat_0=41.47222222222222 +lon_0=-88.77500000000001 +k=1.0000346418 +x_0=263347.7263906528 +y_0=0.00762001524003048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Dane (m) -<8191> +proj=lcc +lat_1=43.0695160375 +lat_0=43.0695160375 +lon_0=-89.42222222222223 +k_0=1.0000384786 +x_0=247193.2944 +y_0=146591.9896 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Dane (ftUS) -<8193> +proj=lcc +lat_1=43.0695160375 +lat_0=43.0695160375 +lon_0=-89.42222222222223 +k_0=1.0000384786 +x_0=247193.2943865888 +y_0=146591.9896367793 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Crawford (m) -<8196> +proj=lcc +lat_1=43.200055605 +lat_0=43.200055605 +lon_0=-90.9388888888889 +k_0=1.0000349151 +x_0=113690.6274 +y_0=53703.1201 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Crawford (ftUS) -<8197> +proj=lcc +lat_1=43.200055605 +lat_0=43.200055605 +lon_0=-90.9388888888889 +k_0=1.0000349151 +x_0=113690.6273812548 +y_0=53703.12024384048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Columbia (m) -<8198> +proj=lcc +lat_1=43.46254664583333 +lat_0=43.46254664583333 +lon_0=-89.39444444444445 +k_0=1.00003498 +x_0=169164.3381 +y_0=111569.6134 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Columbia (ftUS) -<8200> +proj=lcc +lat_1=43.46254664583333 +lat_0=43.46254664583333 +lon_0=-89.39444444444445 +k_0=1.00003498 +x_0=169164.338023876 +y_0=111569.613512827 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Clark (m) -<8201> +proj=tmerc +lat_0=43.6 +lon_0=-90.70833333333334 +k=1.0000463003 +x_0=199949.1989 +y_0=0.0086 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Clark (ftUS) -<8202> +proj=tmerc +lat_0=43.6 +lon_0=-90.70833333333334 +k=1.0000463003 +x_0=199949.198983998 +y_0=0.008534417068834137 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Chippewa (m) -<8203> +proj=lcc +lat_1=44.97785689861112 +lat_0=44.97785689861112 +lon_0=-91.29444444444444 +k_0=1.0000391127 +x_0=60045.72 +y_0=44091.4346 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Chippewa (ftUS) -<8204> +proj=lcc +lat_1=44.97785689861112 +lat_0=44.97785689861112 +lon_0=-91.29444444444444 +k_0=1.0000391127 +x_0=60045.72009144018 +y_0=44091.43449326898 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (m) -<8205> +proj=tmerc +lat_0=42.71944444444445 +lon_0=-88.5 +k=1.0000286569 +x_0=244754.8893 +y_0=0.0049 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (ftUS) -<8206> +proj=tmerc +lat_0=42.71944444444445 +lon_0=-88.5 +k=1.0000286569 +x_0=244754.8892049784 +y_0=0.004876809753619507 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Burnett (m) -<8207> +proj=lcc +lat_1=45.89871486583333 +lat_0=45.89871486583333 +lon_0=-92.45777777777778 +k_0=1.0000383841 +x_0=64008.1276 +y_0=59445.9043 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Burnett (ftUS) -<8208> +proj=lcc +lat_1=45.89871486583333 +lat_0=45.89871486583333 +lon_0=-92.45777777777778 +k_0=1.0000383841 +x_0=64008.12771145543 +y_0=59445.90419100838 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Buffalo (m) -<8209> +proj=tmerc +lat_0=43.48138888888889 +lon_0=-91.79722222222222 +k=1.0000382778 +x_0=175260.3502 +y_0=0.0048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Buffalo (ftUS) -<8210> +proj=tmerc +lat_0=43.48138888888889 +lon_0=-91.79722222222222 +k=1.0000382778 +x_0=175260.3502159004 +y_0=0.004876809753619507 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Brown (m) -<8212> +proj=tmerc +lat_0=43 +lon_0=-88 +k=1.00002 +x_0=31600 +y_0=4600 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Brown (ftUS) -<8213> +proj=tmerc +lat_0=43 +lon_0=-88 +k=1.00002 +x_0=31599.99989839979 +y_0=4599.999898399797 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Bayfield (m) -<8214> +proj=lcc +lat_1=46.66964837722222 +lat_0=46.66964837722222 +lon_0=-91.15277777777779 +k_0=1.0000331195 +x_0=228600.4575 +y_0=148551.4837 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Bayfield (ftUS) -<8216> +proj=lcc +lat_1=46.66964837722222 +lat_0=46.66964837722222 +lon_0=-91.15277777777779 +k_0=1.0000331195 +x_0=228600.4575057151 +y_0=148551.4835661671 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Barron (m) -<8218> +proj=tmerc +lat_0=45.13333333333333 +lon_0=-91.84999999999999 +k=1.0000486665 +x_0=93150 +y_0=0.0029 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Barron (ftUS) -<8220> +proj=tmerc +lat_0=45.13333333333333 +lon_0=-91.84999999999999 +k=1.0000486665 +x_0=93150 +y_0=0.003048006096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Ashland (m) -<8222> +proj=tmerc +lat_0=45.70611111111111 +lon_0=-90.62222222222222 +k=1.0000495683 +x_0=172821.9461 +y_0=0.0017 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Ashland (ftUS) -<8224> +proj=tmerc +lat_0=45.70611111111111 +lon_0=-90.62222222222222 +k=1.0000495683 +x_0=172821.945948692 +y_0=0.001828803657607315 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / WISCRS Adams and Juneau (m) -<8225> +proj=tmerc +lat_0=43.36666666666667 +lon_0=-90 +k=1.0000365285 +x_0=147218.6942 +y_0=0.0037 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / WISCRS Adams and Juneau (ftUS) -<8226> +proj=tmerc +lat_0=43.36666666666667 +lon_0=-90 +k=1.0000365285 +x_0=147218.6941325883 +y_0=0.00365760731521463 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(2011) / Oregon Burns-Harper zone (m) -<8311> +proj=tmerc +lat_0=43.5 +lon_0=-117.6666666666667 +k=1.00014 +x_0=90000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Burns-Harper zone (ft) -<8312> +proj=tmerc +lat_0=43.5 +lon_0=-117.6666666666667 +k=1.00014 +x_0=90000.00001488 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Canyon City-Burns zone (m) -<8313> +proj=tmerc +lat_0=43.5 +lon_0=-119 +k=1.00022 +x_0=20000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Canyon City-Burns zone (ft) -<8314> +proj=tmerc +lat_0=43.5 +lon_0=-119 +k=1.00022 +x_0=19999.99999992 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Coast Range North zone (m) -<8315> +proj=lcc +lat_1=45.58333333333334 +lat_0=45.58333333333334 +lon_0=-123.4166666666667 +k_0=1.000045 +x_0=30000 +y_0=20000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Coast Range North zone (ft) -<8316> +proj=lcc +lat_1=45.58333333333334 +lat_0=45.58333333333334 +lon_0=-123.4166666666667 +k_0=1.000045 +x_0=30000.00001512 +y_0=19999.99999992 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Dayville-Prairie City zone (m) -<8317> +proj=tmerc +lat_0=44.25 +lon_0=-119.6333333333333 +k=1.00012 +x_0=20000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Dayville-Prairie City zone (ft) -<8318> +proj=tmerc +lat_0=44.25 +lon_0=-119.6333333333333 +k=1.00012 +x_0=19999.99999992 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Denio-Burns zone (m) -<8319> +proj=tmerc +lat_0=41.75 +lon_0=-118.4166666666667 +k=1.00019 +x_0=80000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Denio-Burns zone (ft) -<8320> +proj=tmerc +lat_0=41.75 +lon_0=-118.4166666666667 +k=1.00019 +x_0=79999.99999968 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Halfway zone (m) -<8321> +proj=lcc +lat_1=45.25 +lat_0=45.25 +lon_0=-117.25 +k_0=1.000085 +x_0=40000 +y_0=70000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Halfway zone (ft) -<8322> +proj=lcc +lat_1=45.25 +lat_0=45.25 +lon_0=-117.25 +k_0=1.000085 +x_0=39999.99999984 +y_0=70000.00001495999 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Medford-Diamond Lake zone (m) -<8323> +proj=lcc +lat_1=42 +lat_0=42 +lon_0=-122.25 +k_0=1.00004 +x_0=60000 +y_0=-60000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Medford-Diamond Lake zone (ft) -<8324> +proj=lcc +lat_1=42 +lat_0=42 +lon_0=-122.25 +k_0=1.00004 +x_0=59999.99999976 +y_0=-59999.99999976 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Mitchell zone (m) -<8325> +proj=lcc +lat_1=47 +lat_0=47 +lon_0=-120.25 +k_0=0.99927 +x_0=30000 +y_0=290000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Mitchell zone (ft) -<8326> +proj=lcc +lat_1=47 +lat_0=47 +lon_0=-120.25 +k_0=0.99927 +x_0=30000.00001512 +y_0=290000.00001408 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon North Central zone (m) -<8327> +proj=lcc +lat_1=46.16666666666666 +lat_0=46.16666666666666 +lon_0=-120.5 +k_0=1 +x_0=100000 +y_0=140000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon North Central zone (ft) -<8328> +proj=lcc +lat_1=46.16666666666666 +lat_0=46.16666666666666 +lon_0=-120.5 +k_0=1 +x_0=99999.99999960001 +y_0=139999.99999944 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Ochoco Summit zone (m) -<8329> +proj=lcc +lat_1=43.5 +lat_0=43.5 +lon_0=-120.5 +k_0=1.00006 +x_0=40000 +y_0=-80000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Ochoco Summit zone (ft) -<8330> +proj=lcc +lat_1=43.5 +lat_0=43.5 +lon_0=-120.5 +k_0=1.00006 +x_0=39999.99999984 +y_0=-79999.99999968 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Owyhee zone (m) -<8331> +proj=tmerc +lat_0=41.75 +lon_0=-117.5833333333333 +k=1.00018 +x_0=70000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Owyhee zone (ft) -<8332> +proj=tmerc +lat_0=41.75 +lon_0=-117.5833333333333 +k=1.00018 +x_0=70000.00001495999 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Pilot Rock-Ukiah zone (m) -<8333> +proj=lcc +lat_1=46.16666666666666 +lat_0=46.16666666666666 +lon_0=-119 +k_0=1.000025 +x_0=50000 +y_0=130000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Pilot Rock-Ukiah zone (ft) -<8334> +proj=lcc +lat_1=46.16666666666666 +lat_0=46.16666666666666 +lon_0=-119 +k_0=1.000025 +x_0=50000.00001504 +y_0=130000.00001472 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Prairie City-Brogan zone (m) -<8335> +proj=lcc +lat_1=44 +lat_0=44 +lon_0=-118 +k_0=1.00017 +x_0=60000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Prairie City-Brogan zone (ft) -<8336> +proj=lcc +lat_1=44 +lat_0=44 +lon_0=-118 +k_0=1.00017 +x_0=59999.99999976 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Riley-Lakeview zone (m) -<8337> +proj=tmerc +lat_0=41.75 +lon_0=-120.3333333333333 +k=1.000215 +x_0=70000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Riley-Lakeview zone (ft) -<8338> +proj=tmerc +lat_0=41.75 +lon_0=-120.3333333333333 +k=1.000215 +x_0=70000.00001495999 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Siskiyou Pass zone (m) -<8339> +proj=lcc +lat_1=42.5 +lat_0=42.5 +lon_0=-122.5833333333333 +k_0=1.00015 +x_0=10000 +y_0=60000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Siskiyou Pass zone (ft) -<8340> +proj=lcc +lat_1=42.5 +lat_0=42.5 +lon_0=-122.5833333333333 +k_0=1.00015 +x_0=10000.0000152 +y_0=59999.99999976 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Ukiah-Fox zone (m) -<8341> +proj=lcc +lat_1=45.25 +lat_0=45.25 +lon_0=-119 +k_0=1.00014 +x_0=30000 +y_0=90000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Ukiah-Fox zone (ft) -<8342> +proj=lcc +lat_1=45.25 +lat_0=45.25 +lon_0=-119 +k_0=1.00014 +x_0=30000.00001512 +y_0=90000.00001488 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Wallowa zone (m) -<8343> +proj=tmerc +lat_0=45.25 +lon_0=-117.5 +k=1.000195 +x_0=60000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Wallowa zone (ft) -<8344> +proj=tmerc +lat_0=45.25 +lon_0=-117.5 +k=1.000195 +x_0=59999.99999976 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Warner Highway zone (m) -<8345> +proj=lcc +lat_1=42.5 +lat_0=42.5 +lon_0=-120 +k_0=1.000245 +x_0=40000 +y_0=60000 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Warner Highway zone (ft) -<8346> +proj=lcc +lat_1=42.5 +lat_0=42.5 +lon_0=-120 +k_0=1.000245 +x_0=39999.99999984 +y_0=59999.99999976 +ellps=GRS80 +units=ft +no_defs <> -# NAD83(2011) / Oregon Willamette Pass zone (m) -<8347> +proj=tmerc +lat_0=43 +lon_0=-122 +k=1.000223 +x_0=20000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD83(2011) / Oregon Willamette Pass zone (ft) -<8348> +proj=tmerc +lat_0=43 +lon_0=-122 +k=1.000223 +x_0=19999.99999992 +y_0=0 +ellps=GRS80 +units=ft +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 4 -<20004> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 5 -<20005> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 6 -<20006> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 7 -<20007> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 8 -<20008> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 9 -<20009> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 10 -<20010> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 11 -<20011> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 12 -<20012> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 13 -<20013> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 14 -<20014> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 15 -<20015> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 16 -<20016> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 17 -<20017> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 18 -<20018> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 19 -<20019> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 20 -<20020> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 21 -<20021> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 22 -<20022> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 23 -<20023> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 24 -<20024> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 25 -<20025> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 26 -<20026> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 27 -<20027> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 28 -<20028> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 29 -<20029> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 30 -<20030> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 31 -<20031> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 32 -<20032> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 4N (deprecated) -<20064> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 5N (deprecated) -<20065> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 6N (deprecated) -<20066> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 7N (deprecated) -<20067> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 8N (deprecated) -<20068> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 9N (deprecated) -<20069> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 10N (deprecated) -<20070> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 11N (deprecated) -<20071> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 12N (deprecated) -<20072> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 13N (deprecated) -<20073> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 14N (deprecated) -<20074> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 15N (deprecated) -<20075> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 16N (deprecated) -<20076> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 17N (deprecated) -<20077> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 18N (deprecated) -<20078> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 19N (deprecated) -<20079> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 20N (deprecated) -<20080> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 21N (deprecated) -<20081> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 22N (deprecated) -<20082> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 23N (deprecated) -<20083> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 24N (deprecated) -<20084> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 25N (deprecated) -<20085> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 26N (deprecated) -<20086> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 27N (deprecated) -<20087> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 28N (deprecated) -<20088> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 29N (deprecated) -<20089> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 30N (deprecated) -<20090> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 31N (deprecated) -<20091> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 32N (deprecated) -<20092> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,0,0,0.13,-0.22 +units=m +no_defs <> -# Adindan / UTM zone 35N -<20135> +proj=utm +zone=35 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs <> -# Adindan / UTM zone 36N -<20136> +proj=utm +zone=36 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs <> -# Adindan / UTM zone 37N -<20137> +proj=utm +zone=37 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs <> -# Adindan / UTM zone 38N -<20138> +proj=utm +zone=38 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs <> -# AGD66 / AMG zone 48 (deprecated) -<20248> +proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 49 -<20249> +proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 50 -<20250> +proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 51 -<20251> +proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 52 -<20252> +proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 53 -<20253> +proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 54 -<20254> +proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 55 -<20255> +proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 56 -<20256> +proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 57 -<20257> +proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD66 / AMG zone 58 -<20258> +proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs <> -# AGD84 / AMG zone 48 (deprecated) -<20348> +proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 49 -<20349> +proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 50 -<20350> +proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 51 -<20351> +proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 52 -<20352> +proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 53 -<20353> +proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 54 -<20354> +proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 55 -<20355> +proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 56 -<20356> +proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 57 (deprecated) -<20357> +proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# AGD84 / AMG zone 58 (deprecated) -<20358> +proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs <> -# Ain el Abd / UTM zone 36N -<20436> +proj=utm +zone=36 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs <> -# Ain el Abd / UTM zone 37N -<20437> +proj=utm +zone=37 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs <> -# Ain el Abd / UTM zone 38N -<20438> +proj=utm +zone=38 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs <> -# Ain el Abd / UTM zone 39N -<20439> +proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs <> -# Ain el Abd / UTM zone 40N -<20440> +proj=utm +zone=40 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs <> -# Ain el Abd / Bahrain Grid -<20499> +proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs <> -# Afgooye / UTM zone 38N -<20538> +proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs <> -# Afgooye / UTM zone 39N -<20539> +proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs <> -# Lisbon (Lisbon) / Portuguese National Grid -<20790> +proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs <> -# Lisbon (Lisbon) / Portuguese Grid -<20791> +proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs <> -# Aratu / UTM zone 22S -<20822> +proj=utm +zone=22 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs <> -# Aratu / UTM zone 23S -<20823> +proj=utm +zone=23 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs <> -# Aratu / UTM zone 24S -<20824> +proj=utm +zone=24 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs <> -# Arc 1950 / UTM zone 34S -<20934> +proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs <> -# Arc 1950 / UTM zone 35S -<20935> +proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs <> -# Arc 1950 / UTM zone 36S -<20936> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs <> -# Arc 1960 / UTM zone 35S -<21035> +proj=utm +zone=35 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs <> -# Arc 1960 / UTM zone 36S -<21036> +proj=utm +zone=36 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs <> -# Arc 1960 / UTM zone 37S -<21037> +proj=utm +zone=37 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs <> -# Arc 1960 / UTM zone 35N -<21095> +proj=utm +zone=35 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs <> -# Arc 1960 / UTM zone 36N -<21096> +proj=utm +zone=36 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs <> -# Arc 1960 / UTM zone 37N -<21097> +proj=utm +zone=37 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs <> -# Batavia (Jakarta) / NEIEZ (deprecated) -<21100> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +units=m +no_defs <> -# Batavia / UTM zone 48S -<21148> +proj=utm +zone=48 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs <> -# Batavia / UTM zone 49S -<21149> +proj=utm +zone=49 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs <> -# Batavia / UTM zone 50S -<21150> +proj=utm +zone=50 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs <> -# Barbados 1938 / British West Indies Grid -<21291> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs <> -# Barbados 1938 / Barbados National Grid -<21292> +proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 13 -<21413> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 14 -<21414> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 15 -<21415> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 16 -<21416> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 17 -<21417> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 18 -<21418> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 19 -<21419> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 20 -<21420> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 21 -<21421> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 22 -<21422> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 23 -<21423> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 75E -<21453> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 81E -<21454> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 87E -<21455> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 93E -<21456> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 99E -<21457> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 105E -<21458> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 111E -<21459> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 117E -<21460> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 123E -<21461> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 129E -<21462> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 135E -<21463> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 13N (deprecated) -<21473> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 14N (deprecated) -<21474> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 15N (deprecated) -<21475> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 16N (deprecated) -<21476> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 17N (deprecated) -<21477> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 18N (deprecated) -<21478> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 19N (deprecated) -<21479> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 20N (deprecated) -<21480> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 21N (deprecated) -<21481> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 22N (deprecated) -<21482> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 23N (deprecated) -<21483> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs <> -# Belge 1950 (Brussels) / Belge Lambert 50 -<21500> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs <> -# Bern 1898 (Bern) / LV03C -<21780> +proj=somerc +lat_0=46.95240555555556 +lon_0=0 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +pm=bern +units=m +no_defs <> -# CH1903 / LV03 -<21781> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs <> -# CH1903 / LV03C-G -<21782> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / UTM zone 17N (deprecated) -<21817> +proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / UTM zone 18N -<21818> +proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / Colombia West zone (deprecated) -<21891> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / Colombia Bogota zone (deprecated) -<21892> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / Colombia East Central zone (deprecated) -<21893> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / Colombia East (deprecated) -<21894> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / Colombia West zone -<21896> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / Colombia Bogota zone -<21897> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / Colombia East Central zone -<21898> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Bogota 1975 / Colombia East -<21899> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> -# Camacupa / UTM zone 32S -<22032> +proj=utm +zone=32 +south +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs <> -# Camacupa / UTM zone 33S -<22033> +proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs <> -# Camacupa / TM 11.30 SE -<22091> +proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs <> -# Camacupa / TM 12 SE -<22092> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs <> -# POSGAR 98 / Argentina 1 -<22171> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 98 / Argentina 2 -<22172> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 98 / Argentina 3 -<22173> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 98 / Argentina 4 -<22174> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 98 / Argentina 5 -<22175> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 98 / Argentina 6 -<22176> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 98 / Argentina 7 -<22177> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 94 / Argentina 1 -<22181> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 94 / Argentina 2 -<22182> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 94 / Argentina 3 -<22183> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 94 / Argentina 4 -<22184> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 94 / Argentina 5 -<22185> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 94 / Argentina 6 -<22186> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# POSGAR 94 / Argentina 7 -<22187> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Campo Inchauspe / Argentina 1 -<22191> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# Campo Inchauspe / Argentina 2 -<22192> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# Campo Inchauspe / Argentina 3 -<22193> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# Campo Inchauspe / Argentina 4 -<22194> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# Campo Inchauspe / Argentina 5 -<22195> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# Campo Inchauspe / Argentina 6 -<22196> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# Campo Inchauspe / Argentina 7 -<22197> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs <> -# Cape / UTM zone 34S -<22234> +proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / UTM zone 35S -<22235> +proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / UTM zone 36S (deprecated) -<22236> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo15 -<22275> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo17 -<22277> +proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo19 -<22279> +proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo21 -<22281> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo23 -<22283> +proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo25 -<22285> +proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo27 -<22287> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo29 -<22289> +proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo31 -<22291> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Cape / Lo33 -<22293> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs <> -# Carthage (Paris) / Tunisia Mining Grid -# Unable to translate coordinate system EPSG:22300 into PROJ.4 format. -# -# Carthage / UTM zone 32N -<22332> +proj=utm +zone=32 +datum=carthage +units=m +no_defs <> -# Carthage / Nord Tunisie -<22391> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +datum=carthage +units=m +no_defs <> -# Carthage / Sud Tunisie -<22392> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +datum=carthage +units=m +no_defs <> -# Corrego Alegre 1970-72 / UTM zone 21S -<22521> +proj=utm +zone=21 +south +ellps=intl +towgs84=-205.57,168.77,-4.12,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre 1970-72 / UTM zone 22S -<22522> +proj=utm +zone=22 +south +ellps=intl +towgs84=-205.57,168.77,-4.12,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre 1970-72 / UTM zone 23S -<22523> +proj=utm +zone=23 +south +ellps=intl +towgs84=-205.57,168.77,-4.12,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre 1970-72 / UTM zone 24S -<22524> +proj=utm +zone=24 +south +ellps=intl +towgs84=-205.57,168.77,-4.12,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre 1970-72 / UTM zone 25S -<22525> +proj=utm +zone=25 +south +ellps=intl +towgs84=-205.57,168.77,-4.12,0,0,0,0 +units=m +no_defs <> -# Deir ez Zor / Levant Zone -<22700> +proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs <> -# Deir ez Zor / Syria Lambert -<22770> +proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs <> -# Deir ez Zor / Levant Stereographic -<22780> +proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs <> -# Douala / UTM zone 32N (deprecated) -<22832> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Egypt 1907 / Blue Belt -<22991> +proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs <> -# Egypt 1907 / Red Belt -<22992> +proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs <> -# Egypt 1907 / Purple Belt -<22993> +proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs <> -# Egypt 1907 / Extended Purple Belt -<22994> +proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 28N -<23028> +proj=utm +zone=28 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 29N -<23029> +proj=utm +zone=29 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 30N -<23030> +proj=utm +zone=30 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 31N -<23031> +proj=utm +zone=31 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 32N -<23032> +proj=utm +zone=32 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 33N -<23033> +proj=utm +zone=33 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 34N -<23034> +proj=utm +zone=34 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 35N -<23035> +proj=utm +zone=35 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 36N -<23036> +proj=utm +zone=36 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 37N -<23037> +proj=utm +zone=37 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / UTM zone 38N -<23038> +proj=utm +zone=38 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / TM 0 N -<23090> +proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# ED50 / TM 5 NE -<23095> +proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs <> -# Fahud / UTM zone 39N -<23239> +proj=utm +zone=39 +ellps=clrk80 +towgs84=-333.102,-11.02,230.69,0,0,0.554,0.219 +units=m +no_defs <> -# Fahud / UTM zone 40N -<23240> +proj=utm +zone=40 +ellps=clrk80 +towgs84=-333.102,-11.02,230.69,0,0,0.554,0.219 +units=m +no_defs <> -# Garoua / UTM zone 33N (deprecated) -<23433> +proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# HD72 / EOV -<23700> +proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 46.2 -<23830> +proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 47.1 -<23831> +proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 47.2 -<23832> +proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 48.1 -<23833> +proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 48.2 -<23834> +proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 49.1 -<23835> +proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 49.2 -<23836> +proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 50.1 -<23837> +proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 50.2 -<23838> +proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 51.1 -<23839> +proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 51.2 -<23840> +proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 52.1 -<23841> +proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 52.2 -<23842> +proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 53.1 -<23843> +proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 53.2 -<23844> +proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / Indonesia TM-3 zone 54.1 -<23845> +proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 46N -<23846> +proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 47N -<23847> +proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 48N -<23848> +proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 49N -<23849> +proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 50N -<23850> +proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 51N -<23851> +proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 52N -<23852> +proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 53N (deprecated) -<23853> +proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 46N -<23866> +proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 47N -<23867> +proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 48N -<23868> +proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 49N -<23869> +proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 50N -<23870> +proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 51N -<23871> +proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 52N -<23872> +proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 47S -<23877> +proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 48S -<23878> +proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 49S -<23879> +proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 50S -<23880> +proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 51S -<23881> +proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 52S -<23882> +proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 53S -<23883> +proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# DGN95 / UTM zone 54S -<23884> +proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 46S (deprecated) -<23886> +proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 47S -<23887> +proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 48S -<23888> +proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 49S -<23889> +proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 50S -<23890> +proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 51S -<23891> +proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 52S -<23892> +proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 53S -<23893> +proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# ID74 / UTM zone 54S -<23894> +proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs <> -# Indian 1954 / UTM zone 46N -<23946> +proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> -# Indian 1954 / UTM zone 47N -<23947> +proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> -# Indian 1954 / UTM zone 48N -<23948> +proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> -# Indian 1975 / UTM zone 47N -<24047> +proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +units=m +no_defs <> -# Indian 1975 / UTM zone 48N -<24048> +proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +units=m +no_defs <> -# Jamaica 1875 / Jamaica (Old Grid) -<24100> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +a=6378249.144808011 +b=6356514.966204134 +to_meter=0.3047972654 +no_defs <> -# JAD69 / Jamaica National Grid -<24200> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +towgs84=70,207,389.5,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1937 / UTM zone 45N -<24305> +proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1937 / UTM zone 46N -<24306> +proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1962 / UTM zone 41N -<24311> +proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1962 / UTM zone 42N -<24312> +proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1962 / UTM zone 43N -<24313> +proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 42N -<24342> +proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 43N -<24343> +proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 44N -<24344> +proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 45N -<24345> +proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 46N -<24346> +proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 47N -<24347> +proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1880 / India zone 0 -<24370> +proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1880 / India zone I -<24371> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1880 / India zone IIa -<24372> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1880 / India zone IIIa -<24373> +proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1880 / India zone IVa -<24374> +proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1937 / India zone IIb -<24375> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1962 / India zone I -<24376> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1962 / India zone IIa -<24377> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / India zone I -<24378> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / India zone IIa -<24379> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / India zone IIb -<24380> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / India zone IIIa -<24381> +proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1880 / India zone IIb -<24382> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1975 / India zone IVa -<24383> +proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / Singapore Grid -<24500> +proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / UTM zone 47N -<24547> +proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau 1968 / UTM zone 48N -<24548> +proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau / R.S.O. Malaya (ch) (deprecated) -<24571> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs <> -# KOC Lambert -<24600> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs <> -# La Canoa / UTM zone 18N -<24718> +proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> -# La Canoa / UTM zone 19N -<24719> +proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> -# La Canoa / UTM zone 20N -<24720> +proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 17N -<24817> +proj=utm +zone=17 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 18N -<24818> +proj=utm +zone=18 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 19N -<24819> +proj=utm +zone=19 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 20N -<24820> +proj=utm +zone=20 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 21N -<24821> +proj=utm +zone=21 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 17S -<24877> +proj=utm +zone=17 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 18S -<24878> +proj=utm +zone=18 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 19S -<24879> +proj=utm +zone=19 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 20S -<24880> +proj=utm +zone=20 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 21S -<24881> +proj=utm +zone=21 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 22S -<24882> +proj=utm +zone=22 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / Peru west zone -<24891> +proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / Peru central zone -<24892> +proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# PSAD56 / Peru east zone -<24893> +proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0=1324000 +y_0=1040084.558 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs <> -# Leigon / Ghana Metre Grid -<25000> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs <> -# Lome / UTM zone 31N -<25231> +proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Luzon 1911 / Philippines zone I -<25391> +proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs <> -# Luzon 1911 / Philippines zone II -<25392> +proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs <> -# Luzon 1911 / Philippines zone III -<25393> +proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs <> -# Luzon 1911 / Philippines zone IV -<25394> +proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs <> -# Luzon 1911 / Philippines zone V -<25395> +proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs <> -# Makassar (Jakarta) / NEIEZ (deprecated) -<25700> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs <> -# ETRS89 / UTM zone 28N -<25828> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 29N -<25829> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 30N -<25830> +proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 31N -<25831> +proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 32N -<25832> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 33N -<25833> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 34N -<25834> +proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 35N -<25835> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 36N -<25836> +proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 37N -<25837> +proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / UTM zone 38N (deprecated) -<25838> +proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / TM Baltic93 -<25884> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Malongo 1987 / UTM zone 32S -<25932> +proj=utm +zone=32 +south +ellps=intl +towgs84=-254.1,-5.36,-100.29,0,0,0,0 +units=m +no_defs <> -# Merchich / Nord Maroc -<26191> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> -# Merchich / Sud Maroc -<26192> +proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> -# Merchich / Sahara (deprecated) -<26193> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> -# Merchich / Sahara Nord -<26194> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> -# Merchich / Sahara Sud -<26195> +proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> -# Massawa / UTM zone 37N -<26237> +proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs <> -# Minna / UTM zone 31N -<26331> +proj=utm +zone=31 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs <> -# Minna / UTM zone 32N -<26332> +proj=utm +zone=32 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs <> -# Minna / Nigeria West Belt -<26391> +proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs <> -# Minna / Nigeria Mid Belt -<26392> +proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs <> -# Minna / Nigeria East Belt -<26393> +proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs <> -# Mhast / UTM zone 32S (deprecated) -<26432> +proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs <> -# Monte Mario (Rome) / Italy zone 1 (deprecated) -<26591> +proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs <> -# Monte Mario (Rome) / Italy zone 2 (deprecated) -<26592> +proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs <> -# M'poraloko / UTM zone 32N -<26632> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +units=m +no_defs <> -# M'poraloko / UTM zone 32S -<26692> +proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +units=m +no_defs <> -# NAD27 / UTM zone 1N -<26701> +proj=utm +zone=1 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 2N -<26702> +proj=utm +zone=2 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 3N -<26703> +proj=utm +zone=3 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 4N -<26704> +proj=utm +zone=4 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 5N -<26705> +proj=utm +zone=5 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 6N -<26706> +proj=utm +zone=6 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 7N -<26707> +proj=utm +zone=7 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 8N -<26708> +proj=utm +zone=8 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 9N -<26709> +proj=utm +zone=9 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 10N -<26710> +proj=utm +zone=10 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 11N -<26711> +proj=utm +zone=11 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 12N -<26712> +proj=utm +zone=12 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 13N -<26713> +proj=utm +zone=13 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 14N -<26714> +proj=utm +zone=14 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 15N -<26715> +proj=utm +zone=15 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 16N -<26716> +proj=utm +zone=16 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 17N -<26717> +proj=utm +zone=17 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 18N -<26718> +proj=utm +zone=18 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 19N -<26719> +proj=utm +zone=19 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 20N -<26720> +proj=utm +zone=20 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 21N -<26721> +proj=utm +zone=21 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 22N -<26722> +proj=utm +zone=22 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Alabama East -<26729> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alabama West -<26730> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 1 -<26731> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +no_uoff +gamma=323.1301023611111 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 2 -<26732> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 3 -<26733> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 4 -<26734> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 5 -<26735> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 6 -<26736> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 7 -<26737> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 8 -<26738> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 9 -<26739> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Alaska zone 10 -<26740> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / California zone I -<26741> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / California zone II -<26742> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / California zone III -<26743> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / California zone IV -<26744> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / California zone V -<26745> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / California zone VI -<26746> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / California zone VII (deprecated) -<26747> +proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Arizona East -<26748> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Arizona Central -<26749> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Arizona West -<26750> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Arkansas North -<26751> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Arkansas South -<26752> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Colorado North -<26753> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Colorado Central -<26754> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Colorado South -<26755> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Connecticut -<26756> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Delaware -<26757> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Florida East -<26758> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Florida West -<26759> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Florida North -<26760> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Georgia East -<26766> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Georgia West -<26767> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Idaho East -<26768> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Idaho Central -<26769> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Idaho West -<26770> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Illinois East -<26771> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Illinois West -<26772> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Indiana East -<26773> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Indiana West -<26774> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Iowa North -<26775> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Iowa South -<26776> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Kansas North -<26777> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Kansas South -<26778> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Kentucky North -<26779> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Kentucky South -<26780> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Louisiana North -<26781> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Louisiana South -<26782> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Maine East -<26783> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Maine West -<26784> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Maryland -<26785> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Massachusetts Mainland -<26786> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Massachusetts Island -<26787> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Minnesota North -<26791> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Minnesota Central -<26792> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Minnesota South -<26793> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Mississippi East -<26794> +proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Mississippi West -<26795> +proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Missouri East -<26796> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Missouri Central -<26797> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Missouri West -<26798> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / California zone VII -<26799> +proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +datum=NAD27 +units=us-ft +no_defs <> -# NAD Michigan / Michigan East (deprecated) -<26801> +proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs <> -# NAD Michigan / Michigan Old Central (deprecated) -<26802> +proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs <> -# NAD Michigan / Michigan West (deprecated) -<26803> +proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs <> -# NAD Michigan / Michigan North (deprecated) -<26811> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs <> -# NAD Michigan / Michigan Central (deprecated) -<26812> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs <> -# NAD Michigan / Michigan South (deprecated) -<26813> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs <> -# NAD83 / Maine East (ftUS) (deprecated) -<26814> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maine West (ftUS) (deprecated) -<26815> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota North (ftUS) (deprecated) -<26819> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota Central (ftUS) (deprecated) -<26820> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota South (ftUS) (deprecated) -<26821> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nebraska (ftUS) (deprecated) -<26822> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / West Virginia North (ftUS) (deprecated) -<26823> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / West Virginia South (ftUS) (deprecated) -<26824> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83(HARN) / Maine East (ftUS) (deprecated) -<26825> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maine West (ftUS) (deprecated) -<26826> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota North (ftUS) (deprecated) -<26830> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota Central (ftUS) (deprecated) -<26831> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota South (ftUS) (deprecated) -<26832> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nebraska (ftUS) (deprecated) -<26833> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / West Virginia North (ftUS) (deprecated) -<26834> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / West Virginia South (ftUS) (deprecated) -<26835> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Maine East (ftUS) (deprecated) -<26836> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Maine West (ftUS) (deprecated) -<26837> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Minnesota North (ftUS) (deprecated) -<26841> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Minnesota Central (ftUS) (deprecated) -<26842> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Minnesota South (ftUS) (deprecated) -<26843> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / Nebraska (ftUS) (deprecated) -<26844> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / West Virginia North (ftUS) (deprecated) -<26845> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(NSRS2007) / West Virginia South (ftUS) (deprecated) -<26846> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / Maine East (ftUS) -<26847> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Maine West (ftUS) -<26848> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Minnesota North (ftUS) -<26849> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Minnesota Central (ftUS) -<26850> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Minnesota South (ftUS) -<26851> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / Nebraska (ftUS) -<26852> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / West Virginia North (ftUS) -<26853> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / West Virginia South (ftUS) -<26854> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83(HARN) / Maine East (ftUS) -<26855> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Maine West (ftUS) -<26856> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Minnesota North (ftUS) -<26857> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Minnesota Central (ftUS) -<26858> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Minnesota South (ftUS) -<26859> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / Nebraska (ftUS) -<26860> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / West Virginia North (ftUS) -<26861> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(HARN) / West Virginia South (ftUS) -<26862> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Maine East (ftUS) -<26863> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Maine West (ftUS) -<26864> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Minnesota North (ftUS) -<26865> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Minnesota Central (ftUS) -<26866> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Minnesota South (ftUS) -<26867> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / Nebraska (ftUS) -<26868> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / West Virginia North (ftUS) -<26869> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(NSRS2007) / West Virginia South (ftUS) -<26870> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> -# NAD83(CSRS) / MTM zone 11 -<26891> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 12 -<26892> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 13 -<26893> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 14 -<26894> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 15 -<26895> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 16 -<26896> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 17 -<26897> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 1 -<26898> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 2 -<26899> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83 / UTM zone 1N -<26901> +proj=utm +zone=1 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 2N -<26902> +proj=utm +zone=2 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 3N -<26903> +proj=utm +zone=3 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 4N -<26904> +proj=utm +zone=4 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 5N -<26905> +proj=utm +zone=5 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 6N -<26906> +proj=utm +zone=6 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 7N -<26907> +proj=utm +zone=7 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 8N -<26908> +proj=utm +zone=8 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 9N -<26909> +proj=utm +zone=9 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 10N -<26910> +proj=utm +zone=10 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 11N -<26911> +proj=utm +zone=11 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 12N -<26912> +proj=utm +zone=12 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 13N -<26913> +proj=utm +zone=13 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 14N -<26914> +proj=utm +zone=14 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 15N -<26915> +proj=utm +zone=15 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 16N -<26916> +proj=utm +zone=16 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 17N -<26917> +proj=utm +zone=17 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 18N -<26918> +proj=utm +zone=18 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 19N -<26919> +proj=utm +zone=19 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 20N -<26920> +proj=utm +zone=20 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 21N -<26921> +proj=utm +zone=21 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 22N -<26922> +proj=utm +zone=22 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 23N -<26923> +proj=utm +zone=23 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alabama East -<26929> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alabama West -<26930> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 1 -<26931> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no_uoff +gamma=323.1301023611111 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 2 -<26932> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 3 -<26933> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 4 -<26934> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 5 -<26935> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 6 -<26936> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 7 -<26937> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 8 -<26938> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 9 -<26939> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 10 -<26940> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 1 -<26941> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 2 -<26942> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 3 -<26943> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 4 -<26944> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 5 -<26945> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 6 -<26946> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arizona East -<26948> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arizona Central -<26949> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arizona West -<26950> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arkansas North -<26951> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arkansas South -<26952> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Colorado North -<26953> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Colorado Central -<26954> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Colorado South -<26955> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Connecticut -<26956> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Delaware -<26957> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Florida East -<26958> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Florida West -<26959> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Florida North -<26960> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 1 -<26961> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 2 -<26962> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 3 -<26963> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 4 -<26964> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 5 -<26965> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Georgia East -<26966> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Georgia West -<26967> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Idaho East -<26968> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Idaho Central -<26969> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Idaho West -<26970> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Illinois East -<26971> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Illinois West -<26972> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Indiana East -<26973> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Indiana West -<26974> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Iowa North -<26975> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Iowa South -<26976> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kansas North -<26977> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kansas South -<26978> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kentucky North (deprecated) -<26979> +proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kentucky South -<26980> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Louisiana North -<26981> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Louisiana South -<26982> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maine East -<26983> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maine West -<26984> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maryland -<26985> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Massachusetts Mainland -<26986> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Massachusetts Island -<26987> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Michigan North -<26988> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Michigan Central -<26989> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Michigan South -<26990> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota North -<26991> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota Central -<26992> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota South -<26993> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Mississippi East -<26994> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Mississippi West -<26995> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Missouri East -<26996> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Missouri Central -<26997> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Missouri West -<26998> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# Nahrwan 1967 / UTM zone 37N (deprecated) -<27037> +proj=utm +zone=37 +ellps=clrk80 +towgs84=-249,-156,381,0,0,0,0 +units=m +no_defs <> -# Nahrwan 1967 / UTM zone 38N (deprecated) -<27038> +proj=utm +zone=38 +ellps=clrk80 +towgs84=-249,-156,381,0,0,0,0 +units=m +no_defs <> -# Nahrwan 1967 / UTM zone 39N -<27039> +proj=utm +zone=39 +ellps=clrk80 +towgs84=-249,-156,381,0,0,0,0 +units=m +no_defs <> -# Nahrwan 1967 / UTM zone 40N -<27040> +proj=utm +zone=40 +ellps=clrk80 +towgs84=-249,-156,381,0,0,0,0 +units=m +no_defs <> -# Naparima 1972 / UTM zone 20N -<27120> +proj=utm +zone=20 +ellps=intl +towgs84=-10,375,165,0,0,0,0 +units=m +no_defs <> -# NZGD49 / New Zealand Map Grid -<27200> +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Mount Eden Circuit -<27205> +proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Bay of Plenty Circuit -<27206> +proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Poverty Bay Circuit -<27207> +proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Hawkes Bay Circuit -<27208> +proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Taranaki Circuit -<27209> +proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Tuhirangi Circuit -<27210> +proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Wanganui Circuit -<27211> +proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Wairarapa Circuit -<27212> +proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Wellington Circuit -<27213> +proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Collingwood Circuit -<27214> +proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Nelson Circuit -<27215> +proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Karamea Circuit -<27216> +proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Buller Circuit -<27217> +proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Grey Circuit -<27218> +proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Amuri Circuit -<27219> +proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Marlborough Circuit -<27220> +proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Hokitika Circuit -<27221> +proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Okarito Circuit -<27222> +proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Jacksons Bay Circuit -<27223> +proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Mount Pleasant Circuit -<27224> +proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Gawler Circuit -<27225> +proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Timaru Circuit -<27226> +proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Lindis Peak Circuit -<27227> +proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Mount Nicholas Circuit -<27228> +proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Mount York Circuit -<27229> +proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Observation Point Circuit -<27230> +proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / North Taieri Circuit -<27231> +proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.99996 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / Bluff Circuit -<27232> +proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / UTM zone 58S -<27258> +proj=utm +zone=58 +south +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / UTM zone 59S -<27259> +proj=utm +zone=59 +south +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / UTM zone 60S -<27260> +proj=utm +zone=60 +south +datum=nzgd49 +units=m +no_defs <> -# NZGD49 / North Island Grid -<27291> +proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114 +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs <> -# NZGD49 / South Island Grid -<27292> +proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143 +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs <> -# NGO 1948 (Oslo) / NGO zone I -<27391> +proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone II -<27392> +proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone III -<27393> +proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone IV -<27394> +proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone V -<27395> +proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone VI -<27396> +proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone VII -<27397> +proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone VIII -<27398> +proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# Datum 73 / UTM zone 29N -<27429> +proj=utm +zone=29 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs <> -# Datum 73 / Modified Portuguese Grid (deprecated) -<27492> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs <> -# Datum 73 / Modified Portuguese Grid -<27493> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs <> -# ATF (Paris) / Nord de Guerre -<27500> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=5.399999999999999 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.337208333333333 +units=m +no_defs <> -# NTF (Paris) / Lambert Nord France -<27561> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert Centre France -<27562> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert Sud France -<27563> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert Corse -<27564> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert zone I -<27571> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert zone II -<27572> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert zone III -<27573> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert zone IV -<27574> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / France I (deprecated) -<27581> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / France II (deprecated) -<27582> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / France III (deprecated) -<27583> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / France IV (deprecated) -<27584> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Nord France (deprecated) -<27591> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Centre France (deprecated) -<27592> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Sud France (deprecated) -<27593> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Corse (deprecated) -<27594> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# OSGB 1936 / British National Grid -<27700> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs <> -# Palestine 1923 / Palestine Grid -<28191> +proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,1 +units=m +no_defs <> -# Palestine 1923 / Palestine Belt -<28192> +proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,1 +units=m +no_defs <> -# Palestine 1923 / Israeli CS Grid -<28193> +proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,1 +units=m +no_defs <> -# Pointe Noire / UTM zone 32S -<28232> +proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs84=-148,51,-291,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 48 -<28348> +proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 49 -<28349> +proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 50 -<28350> +proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 51 -<28351> +proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 52 -<28352> +proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 53 -<28353> +proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 54 -<28354> +proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 55 -<28355> +proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 56 -<28356> +proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 57 -<28357> +proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 58 -<28358> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 2 (deprecated) -<28402> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 3 (deprecated) -<28403> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 4 -<28404> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 5 -<28405> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 6 -<28406> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 7 -<28407> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 8 -<28408> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 9 -<28409> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 10 -<28410> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 11 -<28411> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 12 -<28412> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 13 -<28413> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 14 -<28414> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 15 -<28415> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 16 -<28416> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 17 -<28417> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 18 -<28418> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 19 -<28419> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 20 -<28420> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 21 -<28421> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 22 -<28422> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 23 -<28423> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 24 -<28424> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 25 -<28425> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 26 -<28426> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 27 -<28427> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 28 -<28428> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 29 -<28429> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 30 -<28430> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 31 -<28431> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 32 -<28432> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 2N (deprecated) -<28462> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 3N (deprecated) -<28463> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 4N (deprecated) -<28464> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 5N (deprecated) -<28465> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 6N (deprecated) -<28466> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 7N (deprecated) -<28467> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 8N (deprecated) -<28468> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 9N (deprecated) -<28469> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 10N (deprecated) -<28470> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 11N (deprecated) -<28471> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 12N (deprecated) -<28472> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 13N (deprecated) -<28473> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 14N (deprecated) -<28474> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 15N (deprecated) -<28475> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 16N (deprecated) -<28476> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 17N (deprecated) -<28477> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 18N (deprecated) -<28478> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 19N (deprecated) -<28479> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 20N (deprecated) -<28480> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 21N (deprecated) -<28481> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 22N (deprecated) -<28482> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 23N (deprecated) -<28483> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 24N (deprecated) -<28484> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 25N (deprecated) -<28485> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 26N (deprecated) -<28486> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 27N (deprecated) -<28487> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 28N (deprecated) -<28488> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 29N (deprecated) -<28489> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 30N (deprecated) -<28490> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 31N (deprecated) -<28491> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 32N (deprecated) -<28492> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12 +units=m +no_defs <> -# Qatar 1974 / Qatar National Grid -<28600> +proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-128.16,-282.42,21.93,0,0,0,0 +units=m +no_defs <> -# Amersfoort / RD Old -<28991> +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +towgs84=565.2369,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +units=m +no_defs <> -# Amersfoort / RD New -<28992> +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.2369,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +units=m +no_defs <> -# SAD69 / Brazil Polyconic (deprecated) -<29100> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / Brazil Polyconic -<29101> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 18N (deprecated) -<29118> +proj=utm +zone=18 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 19N (deprecated) -<29119> +proj=utm +zone=19 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 20N (deprecated) -<29120> +proj=utm +zone=20 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 21N (deprecated) -<29121> +proj=utm +zone=21 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 22N (deprecated) -<29122> +proj=utm +zone=22 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 18N -<29168> +proj=utm +zone=18 +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 19N -<29169> +proj=utm +zone=19 +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 20N -<29170> +proj=utm +zone=20 +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 21N -<29171> +proj=utm +zone=21 +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 22N -<29172> +proj=utm +zone=22 +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 17S (deprecated) -<29177> +proj=utm +zone=17 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 18S (deprecated) -<29178> +proj=utm +zone=18 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 19S (deprecated) -<29179> +proj=utm +zone=19 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 20S (deprecated) -<29180> +proj=utm +zone=20 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 21S (deprecated) -<29181> +proj=utm +zone=21 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 22S (deprecated) -<29182> +proj=utm +zone=22 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 23S (deprecated) -<29183> +proj=utm +zone=23 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 24S (deprecated) -<29184> +proj=utm +zone=24 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 25S (deprecated) -<29185> +proj=utm +zone=25 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 17S -<29187> +proj=utm +zone=17 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 18S -<29188> +proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 19S -<29189> +proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 20S -<29190> +proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 21S -<29191> +proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 22S -<29192> +proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 23S -<29193> +proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 24S -<29194> +proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# SAD69 / UTM zone 25S -<29195> +proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-66.87,4.37,-38.52,0,0,0,0 +units=m +no_defs <> -# Sapper Hill 1943 / UTM zone 20S -<29220> +proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs <> -# Sapper Hill 1943 / UTM zone 21S -<29221> +proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs <> -# Schwarzeck / UTM zone 33S -<29333> +proj=utm +zone=33 +south +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +units=m +no_defs <> -# Schwarzeck / Lo22/11 -<29371> +proj=tmerc +lat_0=-22 +lon_0=11 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs <> -# Schwarzeck / Lo22/13 -<29373> +proj=tmerc +lat_0=-22 +lon_0=13 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs <> -# Schwarzeck / Lo22/15 -<29375> +proj=tmerc +lat_0=-22 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs <> -# Schwarzeck / Lo22/17 -<29377> +proj=tmerc +lat_0=-22 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs <> -# Schwarzeck / Lo22/19 -<29379> +proj=tmerc +lat_0=-22 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs <> -# Schwarzeck / Lo22/21 -<29381> +proj=tmerc +lat_0=-22 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs <> -# Schwarzeck / Lo22/23 -<29383> +proj=tmerc +lat_0=-22 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs <> -# Schwarzeck / Lo22/25 -<29385> +proj=tmerc +lat_0=-22 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs <> -# Sudan / UTM zone 35N (deprecated) -<29635> +proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Sudan / UTM zone 36N (deprecated) -<29636> +proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Tananarive (Paris) / Laborde Grid (deprecated) -<29700> +proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamma=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs <> -# Tananarive (Paris) / Laborde Grid -# Unable to translate coordinate system EPSG:29701 into PROJ.4 format. -# -# Tananarive (Paris) / Laborde Grid approximation -<29702> +proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamma=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs <> -# Tananarive / UTM zone 38S -<29738> +proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs <> -# Tananarive / UTM zone 39S -<29739> +proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs <> -# Timbalai 1948 / UTM zone 49N -<29849> +proj=utm +zone=49 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs <> -# Timbalai 1948 / UTM zone 50N -<29850> +proj=utm +zone=50 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs <> -# Timbalai 1948 / RSO Borneo (ch) -<29871> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +to_meter=20.11676512155263 +no_defs <> -# Timbalai 1948 / RSO Borneo (ftSe) -<29872> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +to_meter=0.3047994715386762 +no_defs <> -# Timbalai 1948 / RSO Borneo (m) -<29873> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs <> -# TM65 / Irish National Grid (deprecated) -<29900> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +datum=ire65 +units=m +no_defs <> -# OSNI 1952 / Irish National Grid -<29901> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0=250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs <> -# TM65 / Irish Grid -<29902> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +datum=ire65 +units=m +no_defs <> -# TM75 / Irish Grid -<29903> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS I -<30161> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS II -<30162> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS III -<30163> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS IV -<30164> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS V -<30165> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS VI -<30166> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS VII -<30167> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS VIII -<30168> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS IX -<30169> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS X -<30170> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XI -<30171> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XII -<30172> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XIII -<30173> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XIV -<30174> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XV -<30175> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XVI -<30176> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XVII -<30177> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XVIII -<30178> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XIX -<30179> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs <> -# Trinidad 1903 / Trinidad Grid -<30200> +proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.201166195164 +no_defs <> -# TC(1948) / UTM zone 39N -<30339> +proj=utm +zone=39 +ellps=helmert +units=m +no_defs <> -# TC(1948) / UTM zone 40N -<30340> +proj=utm +zone=40 +ellps=helmert +units=m +no_defs <> -# Voirol 1875 / Nord Algerie (ancienne) -<30491> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs <> -# Voirol 1875 / Sud Algerie (ancienne) -<30492> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs <> -# Voirol 1879 / Nord Algerie (ancienne) -<30493> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Voirol 1879 / Sud Algerie (ancienne) -<30494> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Nord Sahara 1959 / UTM zone 29N -<30729> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs <> -# Nord Sahara 1959 / UTM zone 30N -<30730> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs <> -# Nord Sahara 1959 / UTM zone 31N -<30731> +proj=utm +zone=31 +ellps=clrk80 +towgs84=-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs <> -# Nord Sahara 1959 / UTM zone 32N -<30732> +proj=utm +zone=32 +ellps=clrk80 +towgs84=-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs <> -# Nord Sahara 1959 / Nord Algerie -<30791> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs <> -# Nord Sahara 1959 / Sud Algerie -<30792> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs <> -# RT38 2.5 gon W (deprecated) -<30800> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Yoff / UTM zone 28N -<31028> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-30,190,89,0,0,0,0 +units=m +no_defs <> -# Zanderij / UTM zone 21N -<31121> +proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> -# Zanderij / TM 54 NW -<31154> +proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> -# Zanderij / Suriname Old TM -<31170> +proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> -# Zanderij / Suriname TM -<31171> +proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> -# MGI (Ferro) / Austria GK West Zone -<31251> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria GK Central Zone -<31252> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria GK East Zone -<31253> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +pm=ferro +units=m +no_defs <> -# MGI / Austria GK West -<31254> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria GK Central -<31255> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria GK East -<31256> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria GK M28 -<31257> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria GK M31 -<31258> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria GK M34 -<31259> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs <> -# MGI / 3-degree Gauss zone 5 (deprecated) -<31265> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / 3-degree Gauss zone 6 (deprecated) -<31266> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / 3-degree Gauss zone 7 (deprecated) -<31267> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / 3-degree Gauss zone 8 (deprecated) -<31268> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Balkans zone 5 (deprecated) -<31275> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Balkans zone 6 (deprecated) -<31276> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Balkans zone 7 (deprecated) -<31277> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Balkans zone 8 (deprecated) -<31278> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Balkans zone 8 (deprecated) -<31279> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI (Ferro) / Austria West Zone -<31281> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria Central Zone -<31282> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria East Zone -<31283> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI / Austria M28 -<31284> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria M31 -<31285> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria M34 -<31286> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria Lambert -<31287> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +datum=hermannskogel +units=m +no_defs <> -# MGI (Ferro) / M28 -<31288> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / M31 -<31289> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / M34 -<31290> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria West Zone (deprecated) -<31291> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria Central Zone (deprecated) -<31292> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria East Zone (deprecated) -<31293> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs <> -# MGI / M28 (deprecated) -<31294> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / M31 (deprecated) -<31295> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / M34 (deprecated) -<31296> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +datum=hermannskogel +units=m +no_defs <> -# MGI / Austria Lambert (deprecated) -<31297> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +datum=hermannskogel +units=m +no_defs <> -# Belge 1972 / Belge Lambert 72 -<31300> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +towgs84=-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs <> -# Belge 1972 / Belgian Lambert 72 -<31370> +proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 1 (deprecated) -<31461> +proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 2 (deprecated) -<31462> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 3 (deprecated) -<31463> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 4 (deprecated) -<31464> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 5 (deprecated) -<31465> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 2 -<31466> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 3 -<31467> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 4 -<31468> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# DHDN / 3-degree Gauss-Kruger zone 5 -<31469> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +datum=potsdam +units=m +no_defs <> -# Conakry 1905 / UTM zone 28N -<31528> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> -# Conakry 1905 / UTM zone 29N -<31529> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> -# Dealul Piscului 1930 / Stereo 33 -<31600> +proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +units=m +no_defs <> -# Dealul Piscului 1970/ Stereo 70 (deprecated) -<31700> +proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=28,-121,-77,0,0,0,0 +units=m +no_defs <> -# NGN / UTM zone 38N -<31838> +proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs <> -# NGN / UTM zone 39N -<31839> +proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs <> -# KUDAMS / KTM (deprecated) -<31900> +proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units=m +no_defs <> -# KUDAMS / KTM -<31901> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 11N -<31965> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 12N -<31966> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 13N -<31967> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 14N -<31968> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 15N -<31969> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 16N -<31970> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 17N -<31971> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 18N -<31972> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 19N -<31973> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 20N -<31974> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 21N -<31975> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 22N -<31976> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 17S -<31977> +proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 18S -<31978> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 19S -<31979> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 20S -<31980> +proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 21S -<31981> +proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 22S -<31982> +proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 23S -<31983> +proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 24S -<31984> +proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 2000 / UTM zone 25S -<31985> +proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 17N -<31986> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 18N -<31987> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 19N -<31988> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 20N -<31989> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 21N -<31990> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 22N -<31991> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 17S -<31992> +proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 18S -<31993> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 19S -<31994> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 20S -<31995> +proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 21S -<31996> +proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 22S -<31997> +proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 23S -<31998> +proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 24S -<31999> +proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS 1995 / UTM zone 25S -<32000> +proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Montana North -<32001> +proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Montana Central -<32002> +proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Montana South -<32003> +proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Nebraska North -<32005> +proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Nebraska South -<32006> +proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Nevada East -<32007> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Nevada Central -<32008> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Nevada West -<32009> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New Hampshire -<32010> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New Jersey -<32011> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New Mexico East -<32012> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New Mexico Central -<32013> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New Mexico West -<32014> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New York East -<32015> +proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New York Central -<32016> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New York West -<32017> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / New York Long Island (deprecated) -<32018> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / North Carolina -<32019> +proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / North Dakota North -<32020> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / North Dakota South -<32021> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Ohio North -<32022> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Ohio South -<32023> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Oklahoma North -<32024> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Oklahoma South -<32025> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Oregon North -<32026> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Oregon South -<32027> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Pennsylvania North -<32028> +proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Pennsylvania South (deprecated) -<32029> +proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Rhode Island -<32030> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999938 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / South Carolina North -<32031> +proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / South Carolina South -<32033> +proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / South Dakota North -<32034> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / South Dakota South -<32035> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Tennessee (deprecated) -<32036> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Texas North -<32037> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Texas North Central -<32038> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Texas Central -<32039> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Texas South Central -<32040> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Texas South -<32041> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Utah North -<32042> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Utah Central -<32043> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Utah South -<32044> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Vermont -<32045> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Virginia North -<32046> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Virginia South -<32047> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Washington North -<32048> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Washington South -<32049> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / West Virginia North -<32050> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / West Virginia South -<32051> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Wisconsin North -<32052> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Wisconsin Central -<32053> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Wisconsin South -<32054> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Wyoming East -<32055> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Wyoming East Central -<32056> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Wyoming West Central -<32057> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Wyoming West -<32058> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / Guatemala Norte (deprecated) -<32061> +proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Guatemala Sur (deprecated) -<32062> +proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +datum=NAD27 +units=m +no_defs <> -# NAD27 / BLM 14N (ftUS) -<32064> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 15N (ftUS) -<32065> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 16N (ftUS) -<32066> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 17N (ftUS) -<32067> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 14N (feet) (deprecated) -<32074> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 15N (feet) (deprecated) -<32075> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 16N (feet) (deprecated) -<32076> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / BLM 17N (feet) (deprecated) -<32077> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD27 / MTM zone 1 -<32081> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 2 -<32082> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 3 -<32083> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 4 -<32084> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 5 -<32085> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 6 -<32086> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Quebec Lambert -<32098> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Louisiana Offshore -<32099> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs <> -# NAD83 / Montana -<32100> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nebraska -<32104> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nevada East -<32107> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nevada Central -<32108> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nevada West -<32109> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Hampshire -<32110> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Jersey -<32111> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Mexico East -<32112> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Mexico Central -<32113> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Mexico West -<32114> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New York East -<32115> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New York Central -<32116> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New York West -<32117> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New York Long Island -<32118> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / North Carolina -<32119> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / North Dakota North -<32120> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / North Dakota South -<32121> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Ohio North -<32122> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Ohio South -<32123> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oklahoma North -<32124> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oklahoma South -<32125> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oregon North -<32126> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oregon South -<32127> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Pennsylvania North -<32128> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Pennsylvania South -<32129> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Rhode Island -<32130> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / South Carolina -<32133> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / South Dakota North -<32134> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / South Dakota South -<32135> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Tennessee -<32136> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas North -<32137> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas North Central -<32138> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas Central -<32139> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas South Central -<32140> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas South -<32141> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Utah North -<32142> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Utah Central -<32143> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Utah South -<32144> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Vermont -<32145> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Virginia North -<32146> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Virginia South -<32147> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Washington North -<32148> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Washington South -<32149> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / West Virginia North -<32150> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / West Virginia South -<32151> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wisconsin North -<32152> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wisconsin Central -<32153> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wisconsin South -<32154> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wyoming East -<32155> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wyoming East Central -<32156> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wyoming West Central -<32157> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wyoming West -<32158> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Puerto Rico & Virgin Is. -<32161> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +datum=NAD83 +units=m +no_defs <> -# NAD83 / BLM 14N (ftUS) -<32164> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 15N (ftUS) -<32165> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 16N (ftUS) -<32166> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / BLM 17N (ftUS) -<32167> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / SCoPQ zone 2 (deprecated) -<32180> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 1 -<32181> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 2 -<32182> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 3 -<32183> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 4 -<32184> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 5 -<32185> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 6 -<32186> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 7 -<32187> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 8 -<32188> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 9 -<32189> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 10 -<32190> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 11 -<32191> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 12 -<32192> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 13 -<32193> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 14 -<32194> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 15 -<32195> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 16 -<32196> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 17 -<32197> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Quebec Lambert -<32198> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Louisiana Offshore -<32199> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs <> -# WGS 72 / UTM zone 1N -<32201> +proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 2N -<32202> +proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 3N -<32203> +proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 4N -<32204> +proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 5N -<32205> +proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 6N -<32206> +proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 7N -<32207> +proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 8N -<32208> +proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 9N -<32209> +proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 10N -<32210> +proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 11N -<32211> +proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 12N -<32212> +proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 13N -<32213> +proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 14N -<32214> +proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 15N -<32215> +proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 16N -<32216> +proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 17N -<32217> +proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 18N -<32218> +proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 19N -<32219> +proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 20N -<32220> +proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 21N -<32221> +proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 22N -<32222> +proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 23N -<32223> +proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 24N -<32224> +proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 25N -<32225> +proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 26N -<32226> +proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 27N -<32227> +proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 28N -<32228> +proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 29N -<32229> +proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 30N -<32230> +proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 31N -<32231> +proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 32N -<32232> +proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 33N -<32233> +proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 34N -<32234> +proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 35N -<32235> +proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 36N -<32236> +proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 37N -<32237> +proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 38N -<32238> +proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 39N -<32239> +proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 40N -<32240> +proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 41N -<32241> +proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 42N -<32242> +proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 43N -<32243> +proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 44N -<32244> +proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 45N -<32245> +proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 46N -<32246> +proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 47N -<32247> +proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 48N -<32248> +proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 49N -<32249> +proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 50N -<32250> +proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 51N -<32251> +proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 52N -<32252> +proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 53N -<32253> +proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 54N -<32254> +proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 55N -<32255> +proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 56N -<32256> +proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 57N -<32257> +proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 58N -<32258> +proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 59N -<32259> +proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 60N -<32260> +proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 1S -<32301> +proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 2S -<32302> +proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 3S -<32303> +proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 4S -<32304> +proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 5S -<32305> +proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 6S -<32306> +proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 7S -<32307> +proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 8S -<32308> +proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 9S -<32309> +proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 10S -<32310> +proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 11S -<32311> +proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 12S -<32312> +proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 13S -<32313> +proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 14S -<32314> +proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 15S -<32315> +proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 16S -<32316> +proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 17S -<32317> +proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 18S -<32318> +proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 19S -<32319> +proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 20S -<32320> +proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 21S -<32321> +proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 22S -<32322> +proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 23S -<32323> +proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 24S -<32324> +proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 25S -<32325> +proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 26S -<32326> +proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 27S -<32327> +proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 28S -<32328> +proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 29S -<32329> +proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 30S -<32330> +proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 31S -<32331> +proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 32S -<32332> +proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 33S -<32333> +proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 34S -<32334> +proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 35S -<32335> +proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 36S -<32336> +proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 37S -<32337> +proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 38S -<32338> +proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 39S -<32339> +proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 40S -<32340> +proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 41S -<32341> +proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 42S -<32342> +proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 43S -<32343> +proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 44S -<32344> +proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 45S -<32345> +proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 46S -<32346> +proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 47S -<32347> +proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 48S -<32348> +proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 49S -<32349> +proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 50S -<32350> +proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 51S -<32351> +proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 52S -<32352> +proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 53S -<32353> +proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 54S -<32354> +proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 55S -<32355> +proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 56S -<32356> +proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 57S -<32357> +proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 58S -<32358> +proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 59S -<32359> +proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72 / UTM zone 60S -<32360> +proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs <> -# WGS 72BE / UTM zone 1N -<32401> +proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 2N -<32402> +proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 3N -<32403> +proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 4N -<32404> +proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 5N -<32405> +proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 6N -<32406> +proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 7N -<32407> +proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 8N -<32408> +proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 9N -<32409> +proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 10N -<32410> +proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 11N -<32411> +proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 12N -<32412> +proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 13N -<32413> +proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 14N -<32414> +proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 15N -<32415> +proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 16N -<32416> +proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 17N -<32417> +proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 18N -<32418> +proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 19N -<32419> +proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 20N -<32420> +proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 21N -<32421> +proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 22N -<32422> +proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 23N -<32423> +proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 24N -<32424> +proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 25N -<32425> +proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 26N -<32426> +proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 27N -<32427> +proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 28N -<32428> +proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 29N -<32429> +proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 30N -<32430> +proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 31N -<32431> +proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 32N -<32432> +proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 33N -<32433> +proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 34N -<32434> +proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 35N -<32435> +proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 36N -<32436> +proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 37N -<32437> +proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 38N -<32438> +proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 39N -<32439> +proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 40N -<32440> +proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 41N -<32441> +proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 42N -<32442> +proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 43N -<32443> +proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 44N -<32444> +proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 45N -<32445> +proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 46N -<32446> +proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 47N -<32447> +proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 48N -<32448> +proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 49N -<32449> +proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 50N -<32450> +proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 51N -<32451> +proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 52N -<32452> +proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 53N -<32453> +proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 54N -<32454> +proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 55N -<32455> +proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 56N -<32456> +proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 57N -<32457> +proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 58N -<32458> +proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 59N -<32459> +proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 60N -<32460> +proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 1S -<32501> +proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 2S -<32502> +proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 3S -<32503> +proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 4S -<32504> +proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 5S -<32505> +proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 6S -<32506> +proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 7S -<32507> +proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 8S -<32508> +proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 9S -<32509> +proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 10S -<32510> +proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 11S -<32511> +proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 12S -<32512> +proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 13S -<32513> +proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 14S -<32514> +proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 15S -<32515> +proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 16S -<32516> +proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 17S -<32517> +proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 18S -<32518> +proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 19S -<32519> +proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 20S -<32520> +proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 21S -<32521> +proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 22S -<32522> +proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 23S -<32523> +proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 24S -<32524> +proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 25S -<32525> +proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 26S -<32526> +proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 27S -<32527> +proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 28S -<32528> +proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 29S -<32529> +proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 30S -<32530> +proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 31S -<32531> +proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 32S -<32532> +proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 33S -<32533> +proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 34S -<32534> +proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 35S -<32535> +proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 36S -<32536> +proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 37S -<32537> +proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 38S -<32538> +proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 39S -<32539> +proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 40S -<32540> +proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 41S -<32541> +proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 42S -<32542> +proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 43S -<32543> +proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 44S -<32544> +proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 45S -<32545> +proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 46S -<32546> +proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 47S -<32547> +proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 48S -<32548> +proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 49S -<32549> +proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 50S -<32550> +proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 51S -<32551> +proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 52S -<32552> +proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 53S -<32553> +proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 54S -<32554> +proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 55S -<32555> +proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 56S -<32556> +proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 57S -<32557> +proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 58S -<32558> +proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 59S -<32559> +proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 60S -<32560> +proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 84 / UTM grid system (northern hemisphere) -# Unable to translate coordinate system EPSG:32600 into PROJ.4 format. -# -# WGS 84 / UTM zone 1N -<32601> +proj=utm +zone=1 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 2N -<32602> +proj=utm +zone=2 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 3N -<32603> +proj=utm +zone=3 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 4N -<32604> +proj=utm +zone=4 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 5N -<32605> +proj=utm +zone=5 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 6N -<32606> +proj=utm +zone=6 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 7N -<32607> +proj=utm +zone=7 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 8N -<32608> +proj=utm +zone=8 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 9N -<32609> +proj=utm +zone=9 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 10N -<32610> +proj=utm +zone=10 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 11N -<32611> +proj=utm +zone=11 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 12N -<32612> +proj=utm +zone=12 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 13N -<32613> +proj=utm +zone=13 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 14N -<32614> +proj=utm +zone=14 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 15N -<32615> +proj=utm +zone=15 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 16N -<32616> +proj=utm +zone=16 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 17N -<32617> +proj=utm +zone=17 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 18N -<32618> +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 19N -<32619> +proj=utm +zone=19 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 20N -<32620> +proj=utm +zone=20 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 21N -<32621> +proj=utm +zone=21 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 22N -<32622> +proj=utm +zone=22 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 23N -<32623> +proj=utm +zone=23 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 24N -<32624> +proj=utm +zone=24 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 25N -<32625> +proj=utm +zone=25 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 26N -<32626> +proj=utm +zone=26 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 27N -<32627> +proj=utm +zone=27 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 28N -<32628> +proj=utm +zone=28 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 29N -<32629> +proj=utm +zone=29 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 30N -<32630> +proj=utm +zone=30 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 31N -<32631> +proj=utm +zone=31 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 32N -<32632> +proj=utm +zone=32 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 33N -<32633> +proj=utm +zone=33 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 34N -<32634> +proj=utm +zone=34 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 35N -<32635> +proj=utm +zone=35 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 36N -<32636> +proj=utm +zone=36 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 37N -<32637> +proj=utm +zone=37 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 38N -<32638> +proj=utm +zone=38 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 39N -<32639> +proj=utm +zone=39 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 40N -<32640> +proj=utm +zone=40 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 41N -<32641> +proj=utm +zone=41 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 42N -<32642> +proj=utm +zone=42 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 43N -<32643> +proj=utm +zone=43 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 44N -<32644> +proj=utm +zone=44 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 45N -<32645> +proj=utm +zone=45 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 46N -<32646> +proj=utm +zone=46 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 47N -<32647> +proj=utm +zone=47 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 48N -<32648> +proj=utm +zone=48 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 49N -<32649> +proj=utm +zone=49 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 50N -<32650> +proj=utm +zone=50 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 51N -<32651> +proj=utm +zone=51 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 52N -<32652> +proj=utm +zone=52 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 53N -<32653> +proj=utm +zone=53 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 54N -<32654> +proj=utm +zone=54 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 55N -<32655> +proj=utm +zone=55 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 56N -<32656> +proj=utm +zone=56 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 57N -<32657> +proj=utm +zone=57 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 58N -<32658> +proj=utm +zone=58 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 59N -<32659> +proj=utm +zone=59 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 60N -<32660> +proj=utm +zone=60 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UPS North (N,E) -<32661> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / Plate Carree (deprecated) -<32662> +proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / World Equidistant Cylindrical (deprecated) -<32663> +proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / BLM 14N (ftUS) -<32664> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs <> -# WGS 84 / BLM 15N (ftUS) -<32665> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs <> -# WGS 84 / BLM 16N (ftUS) -<32666> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs <> -# WGS 84 / BLM 17N (ftUS) -<32667> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs <> -# WGS 84 / UTM grid system (southern hemisphere) -# Unable to translate coordinate system EPSG:32700 into PROJ.4 format. -# -# WGS 84 / UTM zone 1S -<32701> +proj=utm +zone=1 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 2S -<32702> +proj=utm +zone=2 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 3S -<32703> +proj=utm +zone=3 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 4S -<32704> +proj=utm +zone=4 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 5S -<32705> +proj=utm +zone=5 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 6S -<32706> +proj=utm +zone=6 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 7S -<32707> +proj=utm +zone=7 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 8S -<32708> +proj=utm +zone=8 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 9S -<32709> +proj=utm +zone=9 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 10S -<32710> +proj=utm +zone=10 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 11S -<32711> +proj=utm +zone=11 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 12S -<32712> +proj=utm +zone=12 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 13S -<32713> +proj=utm +zone=13 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 14S -<32714> +proj=utm +zone=14 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 15S -<32715> +proj=utm +zone=15 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 16S -<32716> +proj=utm +zone=16 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 17S -<32717> +proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 18S -<32718> +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 19S -<32719> +proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 20S -<32720> +proj=utm +zone=20 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 21S -<32721> +proj=utm +zone=21 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 22S -<32722> +proj=utm +zone=22 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 23S -<32723> +proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 24S -<32724> +proj=utm +zone=24 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 25S -<32725> +proj=utm +zone=25 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 26S -<32726> +proj=utm +zone=26 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 27S -<32727> +proj=utm +zone=27 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 28S -<32728> +proj=utm +zone=28 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 29S -<32729> +proj=utm +zone=29 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 30S -<32730> +proj=utm +zone=30 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 31S -<32731> +proj=utm +zone=31 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 32S -<32732> +proj=utm +zone=32 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 33S -<32733> +proj=utm +zone=33 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 34S -<32734> +proj=utm +zone=34 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 35S -<32735> +proj=utm +zone=35 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 36S -<32736> +proj=utm +zone=36 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 37S -<32737> +proj=utm +zone=37 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 38S -<32738> +proj=utm +zone=38 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 39S -<32739> +proj=utm +zone=39 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 40S -<32740> +proj=utm +zone=40 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 41S -<32741> +proj=utm +zone=41 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 42S -<32742> +proj=utm +zone=42 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 43S -<32743> +proj=utm +zone=43 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 44S -<32744> +proj=utm +zone=44 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 45S -<32745> +proj=utm +zone=45 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 46S -<32746> +proj=utm +zone=46 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 47S -<32747> +proj=utm +zone=47 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 48S -<32748> +proj=utm +zone=48 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 49S -<32749> +proj=utm +zone=49 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 50S -<32750> +proj=utm +zone=50 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 51S -<32751> +proj=utm +zone=51 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 52S -<32752> +proj=utm +zone=52 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 53S -<32753> +proj=utm +zone=53 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 54S -<32754> +proj=utm +zone=54 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 55S -<32755> +proj=utm +zone=55 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 56S -<32756> +proj=utm +zone=56 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 57S -<32757> +proj=utm +zone=57 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 58S -<32758> +proj=utm +zone=58 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 59S -<32759> +proj=utm +zone=59 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 60S -<32760> +proj=utm +zone=60 +south +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UPS South (N,E) -<32761> +proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / TM 36 SE -<32766> +proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs <> -# TWD97 -<3822> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# IGRS -<3887> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# MOLDREF99 -<4000> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGRDC 2005 -<4039> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# SREF98 -<4073> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# REGCAN95 -<4079> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# WGS 84 (geocentric) -<4328> +proj=geocent +datum=WGS84 +units=m +no_defs <> -# ITRF88 (geocentric) -<4330> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF89 (geocentric) -<4331> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF90 (geocentric) -<4332> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF91 (geocentric) -<4333> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF92 (geocentric) -<4334> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF93 (geocentric) -<4335> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF94 (geocentric) -<4336> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF96 (geocentric) -<4337> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF97 (geocentric) -<4338> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Australian Antarctic (geocentric) -<4340> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# EST97 (geocentric) -<4342> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# CHTRF95 (geocentric) -<4344> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRS89 (geocentric) -<4346> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# GDA94 (geocentric) -<4348> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Hartebeesthoek94 (geocentric) -<4350> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# IRENET95 (geocentric) -<4352> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# JGD2000 (geocentric) -<4354> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# LKS94 (ETRS89) (geocentric) -<4356> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Moznet (geocentric) -<4358> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# NAD83(CSRS) (geocentric) -<4360> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(HARN) (geocentric) -<4362> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NZGD2000 (geocentric) -<4364> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# POSGAR 98 (geocentric) -<4366> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# REGVEN (geocentric) -<4368> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGF93 (geocentric) -<4370> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGFG95 (geocentric) -<4372> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGR92 (geocentric) -<4374> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# SIRGAS (geocentric) -<4376> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# SWEREF99 (geocentric) -<4378> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Yemen NGN96 (geocentric) -<4380> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# RGNC 1991 (geocentric) -<4382> +proj=geocent +ellps=intl +units=m +no_defs <> -# RRAF 1991 (geocentric) -<4384> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# ITRF2000 (geocentric) -<4385> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ISN93 (geocentric) -<4387> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# LKS92 (geocentric) -<4389> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGSPM06 -<4465> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGM04 -<4468> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Cadastre 1997 -<4473> +proj=geocent +ellps=intl +units=m +no_defs <> -# China Geodetic Coordinate System 2000 -<4479> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Mexico ITRF92 -<4481> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RRAF 1991 -<4556> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Slovenia 1996 -<4882> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RSRGD2000 -<4884> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# BDA2000 -<4886> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# HTRS96 -<4888> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# WGS 66 -<4890> +proj=geocent +ellps=WGS66 +units=m +no_defs <> -# NAD83(NSRS2007) -<4892> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# JAD2001 -<4894> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# ITRF2005 -<4896> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# DGN95 -<4897> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# LGD2006 -<4899> +proj=geocent +ellps=intl +units=m +no_defs <> -# RGNC91-93 -<4906> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# GR96 -<4908> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF88 -<4910> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF89 -<4911> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF90 -<4912> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF91 -<4913> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF92 -<4914> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF93 -<4915> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF94 -<4916> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF96 -<4917> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF97 -<4918> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF2000 -<4919> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# GDM2000 -<4920> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# PZ-90 -<4922> +proj=geocent +a=6378136 +b=6356751.361745712 +units=m +no_defs <> -# Mauritania 1999 -<4924> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Korea 2000 -<4926> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# POSGAR 94 -<4928> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# Australian Antarctic -<4930> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# CHTRF95 -<4932> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# EST97 -<4934> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRS89 -<4936> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# GDA94 -<4938> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Hartebeesthoek94 -<4940> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# IRENET95 -<4942> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ISN93 -<4944> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# JGD2000 -<4946> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# LKS92 -<4948> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# LKS94 -<4950> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Moznet -<4952> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# NAD83(CSRS) -<4954> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(HARN) -<4956> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NZGD2000 -<4958> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# POSGAR 98 -<4960> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# REGVEN -<4962> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGF93 -<4964> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGFG95 -<4966> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGNC 1991 -<4968> +proj=geocent +ellps=intl +units=m +no_defs <> -# RGR92 -<4970> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RRAF 1991 -<4972> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# SIRGAS 1995 -<4974> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# SWEREF99 -<4976> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# WGS 84 -<4978> +proj=geocent +datum=WGS84 +units=m +no_defs <> -# Yemen NGN96 -<4980> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# IGM95 -<4982> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# WGS 72 -<4984> +proj=geocent +ellps=WGS72 +units=m +no_defs <> -# WGS 72BE -<4986> +proj=geocent +ellps=WGS72 +units=m +no_defs <> -# SIRGAS 2000 -<4988> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Lao 1993 -<4990> +proj=geocent +ellps=krass +units=m +no_defs <> -# Lao 1997 -<4992> +proj=geocent +ellps=krass +units=m +no_defs <> -# PRS92 -<4994> +proj=geocent +ellps=clrk66 +units=m +no_defs <> -# MAGNA-SIRGAS -<4996> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGPF -<4998> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# PTRA08 -<5011> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# GDBD2009 -<5244> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# TUREF -<5250> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# DRUKREF 03 -<5262> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ISN2004 -<5322> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF2008 -<5332> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# POSGAR 2007 -<5341> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# MARGEN -<5352> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# SIRGAS-Chile -<5358> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# CR05 -<5363> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# MACARIO SOLIS -<5368> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Peru96 -<5369> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# SIRGAS-ROU98 -<5379> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# SIRGAS_ES2007.8 -<5391> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGAF09 -<5487> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# PNG94 -<5544> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# UCS-2000 -<5558> +proj=geocent +ellps=krass +units=m +no_defs <> -# FEH2010 -<5591> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# DB_REF -<5828> +proj=geocent +ellps=bessel +units=m +no_defs <> -# TGD2005 -<5884> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# CIGD11 -<6133> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# CGRS93 -<6309> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# NAD83(2011) -<6317> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(PA11) -<6320> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(MA11) -<6323> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# Mexico ITRF2008 -<6363> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# JGD2011 -<6666> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RDN2008 -<6704> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(CORS96) -<6781> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# IGS08 -<6934> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# IGD05 -<6978> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# IG05 Intermediate CRS -<6981> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# IGD05/12 -<6985> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# IG05/12 Intermediate CRS -<6988> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# RGTAAF07 -<7071> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# IGD05 -<7134> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# IGD05/12 -<7137> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# ONGD14 -<7371> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# WGS 84 (G730) -<7656> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# WGS 84 (G873) -<7658> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# WGS 84 (G1150) -<7660> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# WGS 84 (G1674) -<7662> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# WGS 84 (G1762) -<7664> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# PZ-90.02 -<7677> +proj=geocent +a=6378136 +b=6356751.361745712 +units=m +no_defs <> -# PZ-90.11 -<7679> +proj=geocent +a=6378136 +b=6356751.361745712 +units=m +no_defs <> -# GSK-2011 -<7681> +proj=geocent +a=6378136.5 +b=6356751.757955603 +units=m +no_defs <> -# Kyrg-06 -<7684> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ITRF2014 -<7789> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# BGS2005 -<7796> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# WGS 84 (Transit) -<7815> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# GDA2020 -<7842> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# St. Helena Tritan -<7879> +proj=geocent +ellps=WGS84 +units=m +no_defs <> -# SHGD2015 -<7884> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF89 -<7914> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF90 -<7916> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF91 -<7918> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF92 -<7920> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF93 -<7922> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF94 -<7924> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF96 -<7926> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF97 -<7928> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ETRF2000 -<7930> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# ISN2016 -<8084> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# IGS14 -<8227> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS96) -<8230> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS)v2 -<8233> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS)v3 -<8238> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS)v4 -<8242> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS)v5 -<8247> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS)v6 -<8250> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# NAD83(CSRS)v7 -<8253> +proj=geocent +ellps=GRS80 +units=m +no_defs <> -# KKJ / Finland Uniform Coordinate System + N60 height -<3901> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +vunits=m +no_defs <> -# ETRS89 / TM35FIN(N,E) + N60 height -<3902> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / TM35FIN(N,E) + N2000 height -<3903> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / DKTM1 + DVR90 height -<4097> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.99998 +x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / DKTM2 + DVR90 height -<4098> +proj=tmerc +lat_0=0 +lon_0=10 +k=0.99998 +x_0=400000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / DKTM3 + DVR90 height -<4099> +proj=tmerc +lat_0=0 +lon_0=11.75 +k=0.99998 +x_0=600000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / DKTM4 + DVR90 height -<4100> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=800000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / Faroe TM + FVR09 height -<5318> +proj=tmerc +lat_0=0 +lon_0=-7 +k=0.999997 +x_0=200000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83 + NAVD88 height -<5498> +proj=longlat +datum=NAD83 +geoidgrids=g2012a_conus.gtx,g2012a_alaska.gtx,g2012a_guam.gtx,g2012a_hawaii.gtx,g2012a_puertorico.gtx,g2012a_samoa.gtx +vunits=m +no_defs <> -# NAD83(HARN) + NAVD88 height -<5499> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +geoidgrids=g2012a_conus.gtx,g2012a_alaska.gtx,g2012a_guam.gtx,g2012a_hawaii.gtx,g2012a_puertorico.gtx,g2012a_samoa.gtx +vunits=m +no_defs <> -# NAD83(NSRS2007) + NAVD88 height -<5500> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +geoidgrids=g2012a_conus.gtx,g2012a_alaska.gtx,g2012a_guam.gtx,g2012a_hawaii.gtx,g2012a_puertorico.gtx,g2012a_samoa.gtx +vunits=m +no_defs <> -# ETRS89 / UTM zone 31N + DHHN92 height -<5554> +proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 32N + DHHN92 height -<5555> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 33N + DHHN92 height -<5556> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# FEH2010 / Fehmarnbelt TM + FCSVR10 height -<5598> +proj=tmerc +lat_0=0 +lon_0=11.33333333333333 +k=1 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 + RH2000 height -<5628> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> -# RGF93 / Lambert-93 + NGF-IGN69 height -<5698> +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# RGF93 / Lambert-93 + NGF-IGN78 height -<5699> +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NTF (Paris) / Lambert zone I + NGF-IGN69 height -<5707> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# NTF (Paris) / Lambert zone IV + NGF-IGN78 height -<5708> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# DB_REF / 3-degree Gauss-Kruger zone 2 (E-N) + DHHN92 height -<5832> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +vunits=m +no_defs <> -# DB_REF / 3-degree Gauss-Kruger zone 3 (E-N) + DHHN92 height -<5833> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +vunits=m +no_defs <> -# DB_REF / 3-degree Gauss-Kruger zone 4 (E-N) + DHHN92 height -<5834> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +vunits=m +no_defs <> -# DB_REF / 3-degree Gauss-Kruger zone 5 (E-N) + DHHN92 height -<5835> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +vunits=m +no_defs <> -# SWEREF99 TM + RH2000 height -<5845> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 12 00 + RH2000 height -<5846> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 13 30 + RH2000 height -<5847> +proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 15 00 + RH2000 height -<5848> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 16 30 + RH2000 height -<5849> +proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 18 00 + RH2000 height -<5850> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 14 15 + RH2000 height -<5851> +proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 15 45 + RH2000 height -<5852> +proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 17 15 + RH2000 height -<5853> +proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 18 45 + RH2000 height -<5854> +proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 20 15 + RH2000 height -<5855> +proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 21 45 + RH2000 height -<5856> +proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# SWEREF99 23 15 + RH2000 height -<5857> +proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 + NN2000 height -<5942> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> -# ETRS89 / NTM zone 5 + NN2000 height -<5945> +proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 6 + NN2000 height -<5946> +proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 7 + NN2000 height -<5947> +proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 8 + NN2000 height -<5948> +proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 9 + NN2000 height -<5949> +proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 10 + NN2000 height -<5950> +proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 11 + NN2000 height -<5951> +proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 12 + NN2000 height -<5952> +proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 13 + NN2000 height -<5953> +proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 14 + NN2000 height -<5954> +proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 15 + NN2000 height -<5955> +proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 16 + NN2000 height -<5956> +proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 17 + NN2000 height -<5957> +proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 18 + NN2000 height -<5958> +proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 19 + NN2000 height -<5959> +proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 20 + NN2000 height -<5960> +proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 21 + NN2000 height -<5961> +proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 22 + NN2000 height -<5962> +proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 23 + NN2000 height -<5963> +proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 24 + NN2000 height -<5964> +proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 25 + NN2000 height -<5965> +proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 26 + NN2000 height -<5966> +proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 27 + NN2000 height -<5967> +proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 28 + NN2000 height -<5968> +proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 29 + NN2000 height -<5969> +proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 30 + NN2000 height -<5970> +proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 31 + NN2000 height -<5971> +proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 32 + NN2000 height -<5972> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 33 + NN2000 height -<5973> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 34 + NN2000 height -<5974> +proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 35 + NN2000 height -<5975> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 36 + NN2000 height -<5976> +proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 + NN54 height -<6144> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> -# ETRS89 / NTM zone 5 + NN54 height -<6145> +proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 6 + NN54 height -<6146> +proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 7 + NN54 height -<6147> +proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 8 + NN54 height -<6148> +proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 9 + NN54 height -<6149> +proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 10 + NN54 height -<6150> +proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 11 + NN54 height -<6151> +proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 12 + NN54 height -<6152> +proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 13 + NN54 height -<6153> +proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 14 + NN54 height -<6154> +proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 15 + NN54 height -<6155> +proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 16 + NN54 height -<6156> +proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 17 + NN54 height -<6157> +proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 18 + NN54 height -<6158> +proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 19 + NN54 height -<6159> +proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 20 + NN54 height -<6160> +proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 21 + NN54 height -<6161> +proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 22 + NN54 height -<6162> +proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 23 + NN54 height -<6163> +proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 24 + NN54 height -<6164> +proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 25 + NN54 height -<6165> +proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 26 + NN54 height -<6166> +proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 27 + NN54 height -<6167> +proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 28 + NN54 height -<6168> +proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 29 + NN54 height -<6169> +proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / NTM zone 30 + NN54 height -<6170> +proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 31 + NN54 height -<6171> +proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 32 + NN54 height -<6172> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 33 + NN54 height -<6173> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 34 + NN54 height -<6174> +proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 35 + NN54 height -<6175> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 36 + NN54 height -<6176> +proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# Belge 1972 / Belgian Lambert 72 + Ostend height -<6190> +proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747 +units=m +vunits=m +no_defs <> -# NAD83(2011) + NAVD88 height -<6349> +proj=longlat +ellps=GRS80 +geoidgrids=g2012a_conus.gtx,g2012a_alaska.gtx,g2012a_guam.gtx,g2012a_hawaii.gtx,g2012a_puertorico.gtx,g2012a_samoa.gtx +vunits=m +no_defs <> -# NAD83(CSRS) + CGVD2013 height -<6649> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 7N + CGVD2013 height -<6650> +proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 8N + CGVD2013 height -<6651> +proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 9N + CGVD2013 height -<6652> +proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 10N + CGVD2013 height -<6653> +proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 11N + CGVD2013 height -<6654> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 12N + CGVD2013 height -<6655> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 13N + CGVD2013 height -<6656> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 14N + CGVD2013 height -<6657> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 15N + CGVD2013 height -<6658> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 16N + CGVD2013 height -<6659> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 17N + CGVD2013 height -<6660> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 18N + CGVD2013 height -<6661> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 19N + CGVD2013 height -<6662> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 20N + CGVD2013 height -<6663> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 21N + CGVD2013 height -<6664> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NAD83(CSRS) / UTM zone 22N + CGVD2013 height -<6665> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# JGD2000 + JGD2000 (vertical) height -<6696> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> -# JGD2011 + JGD2011 (vertical) height -<6697> +proj=longlat +ellps=GRS80 +vunits=m +no_defs <> -# Tokyo + JSLD72 height -<6700> +proj=longlat +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +vunits=m +no_defs <> -# WGS 84 / Pseudo-Mercator + EGM2008 geoid height -<6871> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +geoidgrids=egm08_25.gtx +vunits=m +no_defs <> -# WGS 84 / World Mercator + EGM2008 height -<6893> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +geoidgrids=egm08_25.gtx +vunits=m +no_defs <> -# SVY21 + SHD height -<6917> +proj=longlat +ellps=WGS84 +vunits=m +no_defs <> -# SVY21 / Singapore TM + SHD height -<6927> +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +vunits=m +no_defs <> -# NTF (Paris) + NGF IGN69 height -<7400> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +vunits=m +no_defs <> -# NTF (Paris) / France II + NGF Lallemand -<7401> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# NTF (Paris) / France II + NGF IGN69 -<7402> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# NTF (Paris) / France III + NGF IGN69 -<7403> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# RT90 + RH70 height -<7404> +proj=longlat +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +vunits=m +no_defs <> -# OSGB 1936 / British National Grid + ODN height -<7405> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +datum=OSGB36 +units=m +vunits=m +no_defs <> -# NAD27 + NGVD29 height -<7406> +proj=longlat +datum=NAD27 +vunits=us-ft +no_defs <> -# NAD27 / Texas North + NGVD29 height -<7407> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +vunits=us-ft +no_defs <> -# RD/NAP -<7408> +proj=longlat +ellps=bessel +towgs84=565.2369,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +vunits=m +no_defs <> -# ETRS89 + EVRF2000 height -<7409> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> -# PSHD93 -<7410> +proj=longlat +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006 +vunits=m +no_defs <> -# NTF (Paris) / Lambert zone II + NGF Lallemand height -<7411> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# NTF (Paris) / Lambert zone II + NGF IGN69 -<7412> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# NTF (Paris) / Lambert zone III + NGF IGN69 -<7413> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# Tokyo + JSLD69 height -<7414> +proj=longlat +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +vunits=m +no_defs <> -# Amersfoort / RD New + NAP height -<7415> +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.2369,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 32N + DVR90 height -<7416> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / UTM zone 33N + DVR90 height -<7417> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / Kp2000 Jutland + DVR90 height -<7418> +proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / Kp2000 Zealand + DVR90 height -<7419> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# ETRS89 / Kp2000 Bornholm + DVR90 height -<7420> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# NTF (Paris) / Lambert zone II + NGF-IGN69 height -<7421> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# NTF (Paris) / Lambert zone III + NGF-IGN69 height -<7422> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +vunits=m +no_defs <> -# ETRS89 + EVRF2007 height -<7423> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> -# Astro DOS 71 / UTM zone 30S + Jamestown 1971 height -<7954> +proj=utm +zone=30 +south +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +units=m +vunits=m +no_defs <> -# St. Helena Tritan / UTM zone 30S + Tritan 2011 height -<7955> +proj=utm +zone=30 +south +ellps=WGS84 +towgs84=-0.077,0.079,0.086,0,0,0,0 +units=m +vunits=m +no_defs <> -# SHMG2015 + SHVD2015 height -<7956> +proj=utm +zone=30 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs <> -# GR96 + GVR2000 height -<8349> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> -# GR96 + GVR2016 height -<8350> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +vunits=m +no_defs <> diff --git a/data/sql/esri.sql b/data/sql/esri.sql index d3d44c97..c01aaac9 100644 --- a/data/sql/esri.sql +++ b/data/sql/esri.sql @@ -1,6 +1,7 @@ --- This file has been generated by scripts/build_db_from_esri.py. DO NOT EDIT ! INSERT INTO "metadata" VALUES('ESRI.VERSION', 'ArcMap 10.6.1 / ArcGISPro 2.2'); +INSERT INTO "metadata" VALUES('ESRI.DATE', '2018-09-19'); INSERT INTO alias_name VALUES('unit_of_measure','EPSG','1025','Millimeter','ESRI'); INSERT INTO alias_name VALUES('unit_of_measure','EPSG','1033','Centimeter','ESRI'); INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9001','Meter','ESRI'); diff --git a/data/sql/metadata.sql b/data/sql/metadata.sql index df5a651c..b69c0ca9 100644 --- a/data/sql/metadata.sql +++ b/data/sql/metadata.sql @@ -1,2 +1,2 @@ -INSERT INTO "metadata" VALUES('EPSG', 'v9.5.4'); -INSERT INTO "metadata" VALUES('IGNF', 'v1.0.0'); +INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.5.4'); +INSERT INTO "metadata" VALUES('EPSG.DATE', '2018-10-06'); diff --git a/include/proj/io.hpp b/include/proj/io.hpp index 653edfbc..5fb12a76 100644 --- a/include/proj/io.hpp +++ b/include/proj/io.hpp @@ -690,6 +690,8 @@ class PROJ_GCC_DLL DatabaseContext { PROJ_DLL const std::string &getPath() const; + PROJ_DLL const char *getMetadata(const char *key) const; + PROJ_DLL std::set getAuthorities() const; PROJ_DLL std::vector getDatabaseStructure() const; diff --git a/scripts/build_db_from_esri.py b/scripts/build_db_from_esri.py index f642b473..bea48925 100755 --- a/scripts/build_db_from_esri.py +++ b/scripts/build_db_from_esri.py @@ -54,6 +54,9 @@ all_sql = [] version = 'ArcMap 10.6.1 / ArcGISPro 2.2' all_sql.append( """INSERT INTO "metadata" VALUES('ESRI.VERSION', '%s');""" % (version)) +date = '2018-09-19' +all_sql.append( + """INSERT INTO "metadata" VALUES('ESRI.DATE', '%s');""" % (date)) def escape_literal(x): diff --git a/src/c_api.cpp b/src/c_api.cpp index 3b51d905..e74f4347 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -252,6 +252,28 @@ const char *proj_context_get_database_path(PJ_CONTEXT *ctx) { // --------------------------------------------------------------------------- +/** \brief Return a metadata from the database. + * + * The returned pointer remains valid while ctx is valid, and until + * proj_context_get_database_metadata() is called. + * + * @param ctx PROJ context, or NULL for default context + * @param key Metadata key. Must not be NULL + * @return value, or nullptr + */ +const char *proj_context_get_database_metadata(PJ_CONTEXT *ctx, + const char *key) { + SANITIZE_CTX(ctx); + try { + return getDBcontext(ctx)->getMetadata(key); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + /** \brief Guess the "dialect" of the WKT string. * * @param ctx PROJ context, or NULL for default context diff --git a/src/cs2cs.cpp b/src/cs2cs.cpp index 6f4c4a55..8dc23ac5 100644 --- a/src/cs2cs.cpp +++ b/src/cs2cs.cpp @@ -534,8 +534,8 @@ int main(int argc, char **argv) { const char *const optionsProj4Mode[] = {"USE_PROJ4_INIT_RULES=YES", nullptr}; const char *const *optionsImportCRS = - proj_context_get_use_proj4_init_rules(nullptr) ? optionsProj4Mode - : nullptr; + proj_context_get_use_proj4_init_rules(nullptr, TRUE) ? optionsProj4Mode + : nullptr; PJ_OBJ *src = nullptr; if (!fromStr.empty()) { diff --git a/src/factory.cpp b/src/factory.cpp index 3c360d13..f58b66a0 100644 --- a/src/factory.cpp +++ b/src/factory.cpp @@ -157,6 +157,8 @@ struct DatabaseContext::Private { }; private: + friend class DatabaseContext; + std::string databasePath_{}; bool close_handle_ = true; sqlite3 *sqlite_handle_{}; @@ -164,6 +166,7 @@ struct DatabaseContext::Private { PJ_CONTEXT *pjCtxt_ = nullptr; int recLevel_ = 0; bool detach_ = false; + std::string lastMetadataValue_{}; void closeDB(); @@ -704,6 +707,22 @@ const std::string &DatabaseContext::getPath() const { return d->getPath(); } // --------------------------------------------------------------------------- +/** \brief Return a metadata item. + * + * Value remains valid while this is alive and to the next call to getMetadata + */ +const char *DatabaseContext::getMetadata(const char *key) const { + auto res = + d->run("SELECT value FROM metadata WHERE key = ?", {std::string(key)}); + if (res.empty()) { + return nullptr; + } + d->lastMetadataValue_ = res[0][0]; + return d->lastMetadataValue_.c_str(); +} + +// --------------------------------------------------------------------------- + //! @cond Doxygen_Suppress DatabaseContextNNPtr DatabaseContext::create(void *sqlite_handle) { diff --git a/src/gie.c b/src/gie.c index d71a3e75..4bb79f1f 100644 --- a/src/gie.c +++ b/src/gie.c @@ -148,7 +148,8 @@ static ffio *ffio_destroy (ffio *G); static ffio *ffio_create (const char **tags, size_t n_tags, size_t max_record_size); static const char *gie_tags[] = { - "", "operation", "accept", "expect", "roundtrip", "banner", "verbose", + "", "operation", "use_proj4_init_rules", + "accept", "expect", "roundtrip", "banner", "verbose", "direction", "tolerance", "ignore", "require_grid", "echo", "skip", "" }; @@ -186,6 +187,7 @@ typedef struct { size_t operation_lineno; size_t dimensions_given, dimensions_given_at_last_accept; double tolerance; + int use_proj4_init_rules; int ignore; int skip_test; const char *curr_file; @@ -243,6 +245,7 @@ int main (int argc, char **argv) { T.verbosity = 1; T.tolerance = 5e-4; T.ignore = 5555; /* Error code that will not be issued by proj_create() */ + T.use_proj4_init_rules = FALSE; o = opt_parse (argc, argv, "hlvq", "o", longflags, longkeys); if (0==o) @@ -498,6 +501,12 @@ static int tolerance (const char *args) { return 0; } + +static int use_proj4_init_rules (const char *args) { + T.use_proj4_init_rules = strcmp(args, "true") == 0; + return 0; +} + static int ignore (const char *args) { T.ignore = errno_from_err_const (column (args, 1)); return 0; @@ -583,6 +592,7 @@ either a conversion or a transformation) if (T.P) proj_destroy (T.P); proj_errno_reset (0); + proj_context_use_proj4_init_rules(0, T.use_proj4_init_rules); T.P = proj_create (0, F->args); @@ -1001,6 +1011,8 @@ static int dispatch (const char *cmnd, const char *args) { if (0==strcmp (cmnd, "require_grid")) return require_grid (args); if (0==strcmp (cmnd, "echo")) return echo (args); if (0==strcmp (cmnd, "skip")) return skip (args); + if (0==strcmp (cmnd, "use_proj4_init_rules")) + return use_proj4_init_rules (args); return 0; } diff --git a/src/io.cpp b/src/io.cpp index 15df312b..7a0a7435 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -7009,14 +7009,15 @@ PROJStringParser::createFromPROJString(const std::string &projString) { // Those used to come from a text init file // We only support them in compatibility mode - if (ci_starts_with(d->steps_[0].name, "epsg:") || - ci_starts_with(d->steps_[0].name, "IGNF:")) { + const std::string &stepName = d->steps_[0].name; + if (ci_starts_with(stepName, "epsg:") || + ci_starts_with(stepName, "IGNF:")) { bool usePROJ4InitRules = d->usePROJ4InitRules_; if (!usePROJ4InitRules) { PJ_CONTEXT *ctx = proj_context_create(); if (ctx) { - usePROJ4InitRules = - proj_context_get_use_proj4_init_rules(ctx) == TRUE; + usePROJ4InitRules = proj_context_get_use_proj4_init_rules( + ctx, FALSE) == TRUE; proj_context_destroy(ctx); } } @@ -7024,41 +7025,52 @@ PROJStringParser::createFromPROJString(const std::string &projString) { throw ParsingException("init=epsg:/init=IGNF: syntax not " "supported in non-PROJ4 emulation mode"); } - auto obj = - createFromUserInput(d->steps_[0].name, d->dbContext_, true); - auto crs = dynamic_cast(obj.get()); - if (crs) { - PropertyMap properties; - properties.set(IdentifiedObject::NAME_KEY, crs->nameStr()); - const auto &extent = getExtent(crs); - if (extent) { - properties.set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, - NN_NO_CHECK(extent)); - } - auto geogCRS = dynamic_cast(crs); - if (geogCRS) { - // Override with longitude latitude in radian - return GeographicCRS::create( - properties, geogCRS->datum(), geogCRS->datumEnsemble(), - EllipsoidalCS::createLongitudeLatitude( - UnitOfMeasure::RADIAN)); - } - auto projCRS = dynamic_cast(crs); - if (projCRS) { - // Override with easting northing order - const auto &conv = projCRS->derivingConversionRef(); - if (conv->method()->getEPSGCode() != - EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED) { - return ProjectedCRS::create( - properties, projCRS->baseCRS(), conv, - CartesianCS::createEastingNorthing( - projCRS->coordinateSystem() - ->axisList()[0] - ->unit())); + + PJ_CONTEXT *ctx = proj_context_create(); + char unused[256]; + std::string initname(stepName); + initname.resize(initname.find(':')); + int file_found = + pj_find_file(ctx, initname.c_str(), unused, sizeof(unused)); + proj_context_destroy(ctx); + if (!file_found) { + auto obj = createFromUserInput(stepName, d->dbContext_, true); + auto crs = dynamic_cast(obj.get()); + if (crs) { + PropertyMap properties; + properties.set(IdentifiedObject::NAME_KEY, crs->nameStr()); + const auto &extent = getExtent(crs); + if (extent) { + properties.set( + common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + NN_NO_CHECK(extent)); + } + auto geogCRS = dynamic_cast(crs); + if (geogCRS) { + // Override with longitude latitude in radian + return GeographicCRS::create( + properties, geogCRS->datum(), + geogCRS->datumEnsemble(), + EllipsoidalCS::createLongitudeLatitude( + UnitOfMeasure::RADIAN)); + } + auto projCRS = dynamic_cast(crs); + if (projCRS) { + // Override with easting northing order + const auto &conv = projCRS->derivingConversionRef(); + if (conv->method()->getEPSGCode() != + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED) { + return ProjectedCRS::create( + properties, projCRS->baseCRS(), conv, + CartesianCS::createEastingNorthing( + projCRS->coordinateSystem() + ->axisList()[0] + ->unit())); + } } } + return obj; } - return obj; } paralist *init = pj_mkparam(("init=" + d->steps_[0].name).c_str()); @@ -7284,6 +7296,7 @@ PROJStringParser::createFromPROJString(const std::string &projString) { throw ParsingException("out of memory"); } proj_log_func(pj_context, &logger, Logger::log); + proj_context_use_proj4_init_rules(pj_context, d->usePROJ4InitRules_); auto pj = proj_create(pj_context, projString.c_str()); bool valid = pj != nullptr; proj_destroy(pj); diff --git a/src/pj_ctx.c b/src/pj_ctx.c index 54e2cfb7..1c99e921 100644 --- a/src/pj_ctx.c +++ b/src/pj_ctx.c @@ -85,7 +85,8 @@ projCtx pj_get_default_ctx() default_context.app_data = NULL; default_context.fileapi = pj_get_default_fileapi(); default_context.cpp_context = NULL; - default_context.use_proj4_init_rules = FALSE; + default_context.use_proj4_init_rules = -1; + default_context.epsg_file_exists = -1; if( getenv("PROJ_DEBUG") != NULL ) { @@ -115,7 +116,7 @@ projCtx pj_ctx_alloc() memcpy( ctx, pj_get_default_ctx(), sizeof(projCtx_t) ); ctx->last_errno = 0; ctx->cpp_context = NULL; - ctx->use_proj4_init_rules = FALSE; + ctx->use_proj4_init_rules = -1; return ctx; } diff --git a/src/pj_init.c b/src/pj_init.c index fcc03537..0440cf59 100644 --- a/src/pj_init.c +++ b/src/pj_init.c @@ -43,7 +43,6 @@ #include "projects.h" - /**************************************************************************************/ static paralist *string_to_paralist (PJ_CONTEXT *ctx, char *definition) { /*************************************************************************************** @@ -81,14 +80,15 @@ static paralist *string_to_paralist (PJ_CONTEXT *ctx, char *definition) { /**************************************************************************************/ -static char *get_init_string (PJ_CONTEXT *ctx, char *name) { +static char *get_init_string (PJ_CONTEXT *ctx, const char *name) { /*************************************************************************************** Read a section of an init file. Return its contents as a plain character string. It is the duty of the caller to free the memory allocated for the string. ***************************************************************************************/ #define MAX_LINE_LENGTH 1000 size_t current_buffer_size = 5 * (MAX_LINE_LENGTH + 1); - char *fname, *section, *key; + char *fname, *section; + const char *key; char *buffer = 0; char *line = 0; PAFile fid; @@ -228,11 +228,12 @@ static char *get_init_string (PJ_CONTEXT *ctx, char *name) { /************************************************************************/ -static paralist *get_init(PJ_CONTEXT *ctx, char *key) { +static paralist *get_init(PJ_CONTEXT *ctx, const char *key, int allow_init_epsg) { /************************************************************************* Expand key from buffer or (if not in buffer) from init file *************************************************************************/ - char *xkey, *definition; + const char *xkey; + char *definition = 0; paralist *init_items = 0; /* support "init=file:section", "+init=file:section", and "file:section" format */ @@ -248,10 +249,68 @@ Expand key from buffer or (if not in buffer) from init file if (init_items) return init_items; - /* If not, we must read it from file */ - pj_log (ctx, PJ_LOG_TRACE, - "get_init: searching on in init files for [%s]", xkey); - definition = get_init_string (ctx, xkey); + if( (strncmp(xkey, "epsg:", 5) == 0 || strncmp(xkey, "IGNF:", 5) == 0) ) { + char unused[256]; + char initname[5]; + int exists; + + memcpy(initname, xkey, 4); + initname[4] = 0; + + if( strncmp(xkey, "epsg:", 5) == 0 ) { + exists = ctx->epsg_file_exists; + if( exists < 0 ) { + exists = pj_find_file(ctx, initname, unused, sizeof(unused)); + ctx->epsg_file_exists = exists; + } + } else { + exists = pj_find_file(ctx, initname, unused, sizeof(unused)); + } + + if( !exists ) { + const char* const optionsProj4Mode[] = { "USE_PROJ4_INIT_RULES=YES", NULL }; + char szInitStr[7 + 64]; + PJ_OBJ* src; + const char* proj_string; + + pj_ctx_set_errno( ctx, 0 ); + + if( !allow_init_epsg ) { + pj_log (ctx, PJ_LOG_TRACE, "%s expansion disallowed", xkey); + return 0; + } + if( strlen(xkey) > 64 ) { + return 0; + } + strcpy(szInitStr, "+init="); + strcat(szInitStr, xkey); + + src = proj_obj_create_from_user_input(ctx, szInitStr, optionsProj4Mode); + if( !src ) { + return 0; + } + + proj_string = proj_obj_as_proj_string(src, PJ_PROJ_4, NULL); + if( !proj_string ) { + proj_obj_unref(src); + return 0; + } + definition = (char*)calloc(1, strlen(proj_string)+1); + if( definition ) { + strcpy(definition, proj_string); + } + + proj_obj_unref(src); + } + } + + if( !definition ) { + /* If not, we must read it from file */ + pj_log (ctx, PJ_LOG_TRACE, + "get_init: searching on in init files for [%s]", xkey); + definition = get_init_string (ctx, xkey); + } + if (0==definition) return 0; init_items = string_to_paralist (ctx, definition); @@ -271,7 +330,7 @@ Expand key from buffer or (if not in buffer) from init file -static paralist *append_defaults_to_paralist (PJ_CONTEXT *ctx, paralist *start, char *key) { +static paralist *append_defaults_to_paralist (PJ_CONTEXT *ctx, paralist *start, const char *key, int allow_init_epsg) { paralist *defaults, *last = 0; char keystring[ID_TAG_MAX + 20]; paralist *next, *proj; @@ -303,7 +362,7 @@ static paralist *append_defaults_to_paralist (PJ_CONTEXT *ctx, paralist *start, strcpy (keystring, "proj_def.dat:"); strcat (keystring, key); - defaults = get_init (ctx, keystring); + defaults = get_init (ctx, keystring, allow_init_epsg); /* Defaults are optional - so we don't care if we cannot open the file */ pj_ctx_set_errno (ctx, err); @@ -340,7 +399,7 @@ static paralist *append_defaults_to_paralist (PJ_CONTEXT *ctx, paralist *start, } /*****************************************************************************/ -paralist *pj_expand_init(PJ_CONTEXT *ctx, paralist *init) { +static paralist *pj_expand_init_internal(PJ_CONTEXT *ctx, paralist *init, int allow_init_epsg) { /****************************************************************************** Append expansion of to the paralist . The expansion is appended, rather than inserted at 's place, since may contain @@ -367,7 +426,7 @@ Note that 'init=foo:bar' stays in the list. It is ignored after expansion. if (0==init) return 0; - expn = get_init(ctx, init->param); + expn = get_init(ctx, init->param, allow_init_epsg); /* Nothing in expansion? */ if (0==expn) @@ -381,6 +440,9 @@ Note that 'init=foo:bar' stays in the list. It is ignored after expansion. return init; } +paralist *pj_expand_init(PJ_CONTEXT *ctx, paralist *init) { + return pj_expand_init_internal(ctx, init, TRUE); +} /************************************************************************/ @@ -496,6 +558,14 @@ static PJ_CONSTRUCTOR locate_constructor (const char *name) { PJ * pj_init_ctx(projCtx ctx, int argc, char **argv) { + /* Legacy interface: allow init=epsg:XXXX syntax by default */ + int allow_init_epsg = proj_context_get_use_proj4_init_rules(ctx, TRUE); + return pj_init_ctx_with_allow_init_epsg(ctx, argc, argv, allow_init_epsg); +} + + +PJ * +pj_init_ctx_with_allow_init_epsg(projCtx ctx, int argc, char **argv, int allow_init_epsg) { const char *s; char *name; PJ_CONSTRUCTOR proj; @@ -558,7 +628,7 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) { /* problem when '+init's are expanded as late as possible. */ init = pj_param_exists (start, "init"); if (init && n_pipelines == 0) { - init = pj_expand_init (ctx, init); + init = pj_expand_init_internal (ctx, init, allow_init_epsg); if (!init) return pj_dealloc_params (ctx, start, PJD_ERR_NO_ARGS); } @@ -580,8 +650,8 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) { /* Append general and projection specific defaults to the definition list */ - append_defaults_to_paralist (ctx, start, "general"); - append_defaults_to_paralist (ctx, start, name); + append_defaults_to_paralist (ctx, start, "general", allow_init_epsg); + append_defaults_to_paralist (ctx, start, name, allow_init_epsg); /* Allocate projection structure */ diff --git a/src/proj.h b/src/proj.h index 31cd730c..711f8f66 100644 --- a/src/proj.h +++ b/src/proj.h @@ -336,7 +336,7 @@ PJ_CONTEXT PROJ_DLL *proj_context_create (void); PJ_CONTEXT PROJ_DLL *proj_context_destroy (PJ_CONTEXT *ctx); void PROJ_DLL proj_context_use_proj4_init_rules(PJ_CONTEXT *ctx, int enable); -int PROJ_DLL proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx); +int PROJ_DLL proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx, int from_legacy_code_path); /* Manage the transformation definition object PJ */ PJ PROJ_DLL *proj_create (PJ_CONTEXT *ctx, const char *definition); @@ -458,6 +458,9 @@ int PROJ_DLL proj_context_set_database_path(PJ_CONTEXT *ctx, const char PROJ_DLL *proj_context_get_database_path(PJ_CONTEXT *ctx); +const char PROJ_DLL *proj_context_get_database_metadata(PJ_CONTEXT* ctx, + const char* key); + /** \brief Guessed WKT "dialect". */ typedef enum { diff --git a/src/proj_4D_api.c b/src/proj_4D_api.c index b7b500a7..4d05530e 100644 --- a/src/proj_4D_api.c +++ b/src/proj_4D_api.c @@ -567,6 +567,7 @@ PJ *proj_create (PJ_CONTEXT *ctx, const char *definition) { char *args, **argv; size_t argc, n; int ret; + int allow_init_epsg; if (0==ctx) ctx = pj_get_default_ctx (); @@ -590,7 +591,9 @@ PJ *proj_create (PJ_CONTEXT *ctx, const char *definition) { argv = pj_trim_argv (argc, args); /* ...and let pj_init_ctx do the hard work */ - P = pj_init_ctx (ctx, (int) argc, argv); + /* New interface: forbid init=epsg:XXXX syntax by default */ + allow_init_epsg = proj_context_get_use_proj4_init_rules(ctx, FALSE); + P = pj_init_ctx_with_allow_init_epsg (ctx, (int) argc, argv, allow_init_epsg); pj_dealloc (argv); pj_dealloc (args); @@ -687,7 +690,7 @@ static int EQUAL(const char* a, const char* b) { /* proj_context_get_use_proj4_init_rules() */ /************************************************************************/ -int proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx) { +int proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx, int from_legacy_code_path) { const char* val = getenv("PROJ_USE_PROJ4_INIT_RULES"); if( ctx == NULL ) { @@ -704,7 +707,10 @@ int proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx) { pj_log(ctx, PJ_LOG_ERROR, "Invalid value for PROJ_USE_PROJ4_INIT_RULES"); } - return ctx->use_proj4_init_rules; + if( ctx->use_proj4_init_rules >= 0 ) { + return ctx->use_proj4_init_rules; + } + return from_legacy_code_path; } @@ -735,7 +741,7 @@ PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *srid_from, const char const char* proj_string; const char* const optionsProj4Mode[] = { "USE_PROJ4_INIT_RULES=YES", NULL }; const char* const* optionsImportCRS = - proj_context_get_use_proj4_init_rules(ctx) ? optionsProj4Mode : NULL; + proj_context_get_use_proj4_init_rules(ctx, FALSE) ? optionsProj4Mode : NULL; src = proj_obj_create_from_user_input(ctx, srid_from, optionsImportCRS); if( !src ) { @@ -1151,6 +1157,42 @@ PJ_INIT_INFO proj_init_info(const char *initname){ file_found = pj_find_file(ctx, initname, ininfo.filename, sizeof(ininfo.filename)); if (!file_found || strlen(initname) > 64) { + if( strcmp(initname, "epsg") == 0 || strcmp(initname, "EPSG") == 0 ) { + const char* val; + + pj_ctx_set_errno( ctx, 0 ); + + strncpy (ininfo.name, initname, sizeof(ininfo.name) - 1); + strcpy(ininfo.origin, "EPSG"); + val = proj_context_get_database_metadata(ctx, "EPSG.VERSION"); + if( val ) { + strncpy(ininfo.version, val, sizeof(ininfo.version) - 1); + } + val = proj_context_get_database_metadata(ctx, "EPSG.DATE"); + if( val ) { + strncpy(ininfo.lastupdate, val, sizeof(ininfo.lastupdate) - 1); + } + return ininfo; + } + + if( strcmp(initname, "IGNF") == 0 ) { + const char* val; + + pj_ctx_set_errno( ctx, 0 ); + + strncpy (ininfo.name, initname, sizeof(ininfo.name) - 1); + strcpy(ininfo.origin, "IGNF"); + val = proj_context_get_database_metadata(ctx, "IGNF.VERSION"); + if( val ) { + strncpy(ininfo.version, val, sizeof(ininfo.version) - 1); + } + val = proj_context_get_database_metadata(ctx, "IGNF.DATE"); + if( val ) { + strncpy(ininfo.lastupdate, val, sizeof(ininfo.lastupdate) - 1); + } + return ininfo; + } + return ininfo; } diff --git a/src/projects.h b/src/projects.h index 8ab6f478..11467d56 100644 --- a/src/projects.h +++ b/src/projects.h @@ -597,7 +597,8 @@ struct projCtx_t { void *app_data; struct projFileAPI_t *fileapi; struct projCppContext* cpp_context; /* internal context for C++ code */ - int use_proj4_init_rules; + int use_proj4_init_rules; /* -1 = unknown, 0 = no, 1 = yes */ + int epsg_file_exists; /* -1 = unknown, 0 = no, 1 = yes */ }; /* classic public API */ @@ -833,6 +834,8 @@ double PROJ_DLL pj_atof( const char* nptr ); double pj_strtod( const char *nptr, char **endptr ); void pj_freeup_plain (PJ *P); +projPJ pj_init_ctx_with_allow_init_epsg( projCtx ctx, int argc, char **argv, int allow_init_epsg ); + #ifdef __cplusplus } #endif diff --git a/test/gie/4D-API_cs2cs-style.gie b/test/gie/4D-API_cs2cs-style.gie index 346f2d36..e653454e 100644 --- a/test/gie/4D-API_cs2cs-style.gie +++ b/test/gie/4D-API_cs2cs-style.gie @@ -207,6 +207,7 @@ expect failure ------------------------------------------------------------------------------- Test that Google's Web Mercator works as intended (see #834 for details). ------------------------------------------------------------------------------- +use_proj4_init_rules true operation proj=pipeline step init=epsg:26915 inv step init=epsg:3857 ------------------------------------------------------------------------------- tolerance 20 cm @@ -220,6 +221,7 @@ expect -10370728.80 5552839.74 0 ------------------------------------------------------------------------------- Test Google's Web Mercator with +proj=webmerc ------------------------------------------------------------------------------- +use_proj4_init_rules true operation proj=pipeline step init=epsg:26915 inv step proj=webmerc datum=WGS84 ------------------------------------------------------------------------------- tolerance 20 cm diff --git a/test/gie/more_builtins.gie b/test/gie/more_builtins.gie index 00c9d4a0..63464998 100644 --- a/test/gie/more_builtins.gie +++ b/test/gie/more_builtins.gie @@ -166,6 +166,7 @@ expect 12 55 0 0 ------------------------------------------------------------------------------- Finally test a pipeline with more than one init step ------------------------------------------------------------------------------- +use_proj4_init_rules true operation proj=pipeline step init=epsg:25832 inv step init=epsg:25833 diff --git a/test/gigs/5101.1-jhs.gie b/test/gigs/5101.1-jhs.gie index 2fd98883..efef9fcf 100644 --- a/test/gigs/5101.1-jhs.gie +++ b/test/gigs/5101.1-jhs.gie @@ -6,6 +6,8 @@ Test 5101 (part 1), Transverse Mercator, v2-0_2011-06-28, recommended JHS formul +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4326 +inv diff --git a/test/gigs/5101.2-jhs.gie b/test/gigs/5101.2-jhs.gie index 7ea6275e..3f6218ba 100644 --- a/test/gigs/5101.2-jhs.gie +++ b/test/gigs/5101.2-jhs.gie @@ -6,6 +6,8 @@ Test 5101 (part 2), Transverse Mercator, v2-0_2011-06-28, recommended JHS formul +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4326 +inv diff --git a/test/gigs/5101.3-jhs.gie b/test/gigs/5101.3-jhs.gie index d588df4c..05b902be 100644 --- a/test/gigs/5101.3-jhs.gie +++ b/test/gigs/5101.3-jhs.gie @@ -6,6 +6,8 @@ Test 5101 (part 3), Transverse Mercator, v2-0_2011-06-28, recommended JHS formul +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4283 +inv diff --git a/test/gigs/5101.4-jhs-etmerc.gie b/test/gigs/5101.4-jhs-etmerc.gie index b97b7769..42aad560 100644 --- a/test/gigs/5101.4-jhs-etmerc.gie +++ b/test/gigs/5101.4-jhs-etmerc.gie @@ -6,6 +6,8 @@ Test 5101 (part 4), Transverse Mercator, v2-0_2011-06-28, recommended JHS formul +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4190 +inv diff --git a/test/gigs/5102.1.gie b/test/gigs/5102.1.gie index d3eef080..33bf3bac 100644 --- a/test/gigs/5102.1.gie +++ b/test/gigs/5102.1.gie @@ -6,6 +6,8 @@ Test 5102, Lambert Conic Conformal (1SP), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4230 +inv diff --git a/test/gigs/5103.1.gie b/test/gigs/5103.1.gie index c972b738..73b7d0ca 100644 --- a/test/gigs/5103.1.gie +++ b/test/gigs/5103.1.gie @@ -6,6 +6,8 @@ Test 5103 (part 1), Lambert Conic Conformal (2SP), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4313 +inv diff --git a/test/gigs/5103.2.gie b/test/gigs/5103.2.gie index 3975e9d8..b32c2758 100644 --- a/test/gigs/5103.2.gie +++ b/test/gigs/5103.2.gie @@ -6,6 +6,8 @@ Test 5103 (part 2), Lambert Conic Conformal (2SP), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4152 +inv diff --git a/test/gigs/5103.3.gie b/test/gigs/5103.3.gie index b8965132..d486ec04 100644 --- a/test/gigs/5103.3.gie +++ b/test/gigs/5103.3.gie @@ -6,6 +6,8 @@ Test 5103 (part 3), Lambert Conic Conformal (2SP), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4152 +inv diff --git a/test/gigs/5105.2.gie b/test/gigs/5105.2.gie index 190c9176..daf86433 100644 --- a/test/gigs/5105.2.gie +++ b/test/gigs/5105.2.gie @@ -6,6 +6,8 @@ Test 5105 (part 2), Oblique Mercator (variant B), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4237 +inv diff --git a/test/gigs/5106.gie b/test/gigs/5106.gie index 6c5940ef..9082c0e7 100644 --- a/test/gigs/5106.gie +++ b/test/gigs/5106.gie @@ -6,6 +6,8 @@ Test 5106, Hotine Oblique Mercator (variant A), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4742 +inv diff --git a/test/gigs/5107.gie b/test/gigs/5107.gie index f78e9c22..bfd044fd 100644 --- a/test/gigs/5107.gie +++ b/test/gigs/5107.gie @@ -6,6 +6,8 @@ Test 5107, American Polyconic, v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4674 +inv diff --git a/test/gigs/5109.gie b/test/gigs/5109.gie index a104e66f..da42109a 100644 --- a/test/gigs/5109.gie +++ b/test/gigs/5109.gie @@ -6,6 +6,8 @@ Test 5109, Albers Equal Area, v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4283 +inv diff --git a/test/gigs/5111.1.gie b/test/gigs/5111.1.gie index d146b36a..fcbd4b1a 100644 --- a/test/gigs/5111.1.gie +++ b/test/gigs/5111.1.gie @@ -12,6 +12,8 @@ Test 5111 (part 1), Mercator (variant A), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline towgs84=0,0,0 +step +init=epsg:4211 +inv diff --git a/test/gigs/5112.gie b/test/gigs/5112.gie index 207632d2..ab5c0be8 100644 --- a/test/gigs/5112.gie +++ b/test/gigs/5112.gie @@ -6,6 +6,8 @@ Test 5112, Mercator (variant B), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation proj=pipeline step init=epsg:4284 inv diff --git a/test/gigs/5113.gie b/test/gigs/5113.gie index 5c3904e7..fdb4c381 100644 --- a/test/gigs/5113.gie +++ b/test/gigs/5113.gie @@ -6,6 +6,8 @@ Test 5113, Transverse Mercator (South Oriented), v2-0_2011-06-28. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4148 +inv diff --git a/test/gigs/5201.gie b/test/gigs/5201.gie index 532443a9..29805b79 100644 --- a/test/gigs/5201.gie +++ b/test/gigs/5201.gie @@ -12,6 +12,8 @@ Test 5201, Geographic Geocentric conversions, v2.0_2011-09-28. (EPSG 4979 - WGS8 +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4978 +inv diff --git a/test/gigs/5208.gie b/test/gigs/5208.gie index 25a10b96..985dfdcb 100644 --- a/test/gigs/5208.gie +++ b/test/gigs/5208.gie @@ -22,6 +22,8 @@ To be on the safe side we, use 0.01 m as the tolerance. +use_proj4_init_rules true + -------------------------------------------------------------------------------- operation +proj=pipeline +step +init=epsg:4275 +inv diff --git a/test/gigs/Makefile.am b/test/gigs/Makefile.am index f53825bd..bea3be59 100644 --- a/test/gigs/Makefile.am +++ b/test/gigs/Makefile.am @@ -20,7 +20,7 @@ EXTRA_DIST = \ 5201.gie \ 5208.gie -PROJ_LIB ?= $(top_srcdir)/data +PROJ_LIB ?= ../../data 5101.1: 5101.1-jhs.gie PROJ_LIB=$(PROJ_LIB) $(GIEEXE) $< diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 6c22cade..d23920f5 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -2036,4 +2036,11 @@ TEST_F(CApi, proj_obj_cs_get_axis_info) { } } +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_context_get_database_metadata) { + EXPECT_TRUE(proj_context_get_database_metadata(m_ctxt, "IGNF.VERSION") != + nullptr); +} + } // namespace diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index 739bb729..20869d91 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -2729,4 +2729,14 @@ TEST(factory, createObjectsFromName) { factory->createObjectsFromName("i_dont_exist", types, false, 1); } +// --------------------------------------------------------------------------- + +TEST(factory, getMetadata) { + auto ctxt = DatabaseContext::create(); + EXPECT_EQ(ctxt->getMetadata("i_do_not_exist"), nullptr); + const char *IGNF_VERSION = ctxt->getMetadata("IGNF.VERSION"); + ASSERT_TRUE(IGNF_VERSION != nullptr); + EXPECT_EQ(std::string(IGNF_VERSION), "3.0.2"); +} + } // namespace diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index a4974234..a2a865ad 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -7465,6 +7465,7 @@ TEST(io, projparse_projected_title) { // --------------------------------------------------------------------------- TEST(io, projparse_init) { + auto dbContext = DatabaseContext::create(); // Not allowed in non-compatibillity mode EXPECT_THROW(PROJStringParser().createFromPROJString("init=epsg:4326"), @@ -7473,7 +7474,6 @@ TEST(io, projparse_init) { { // EPSG:4326 is normally latitude-longitude order with degree, // but in compatibillity mode it will be long-lat radian - auto dbContext = DatabaseContext::create(); auto obj = createFromUserInput("init=epsg:4326", dbContext, true); auto crs = nn_dynamic_pointer_cast(obj); ASSERT_TRUE(crs != nullptr); @@ -7485,7 +7485,6 @@ TEST(io, projparse_init) { { // EPSG:3040 is normally northing-easting order, but in compatibillity // mode it will be easting-northing - auto dbContext = DatabaseContext::create(); auto obj = createFromUserInput("init=epsg:3040", dbContext, true); auto crs = nn_dynamic_pointer_cast(obj); ASSERT_TRUE(crs != nullptr); @@ -7506,8 +7505,8 @@ TEST(io, projparse_init) { } { - auto obj = PROJStringParser().createFromPROJString( - "title=mytitle init=epsg:4326 ellps=WGS84"); + auto obj = createFromUserInput( + "title=mytitle init=epsg:4326 ellps=WGS84", dbContext, true); auto co = nn_dynamic_pointer_cast(obj); ASSERT_TRUE(co != nullptr); EXPECT_EQ(co->nameStr(), "mytitle"); @@ -7516,8 +7515,9 @@ TEST(io, projparse_init) { } { - auto obj = PROJStringParser().createFromPROJString( - "proj=pipeline step init=epsg:4326 step proj=longlat"); + auto obj = createFromUserInput( + "proj=pipeline step init=epsg:4326 step proj=longlat", dbContext, + true); auto co = nn_dynamic_pointer_cast(obj); ASSERT_TRUE(co != nullptr); EXPECT_EQ(co->exportToPROJString(PROJStringFormatter::create().get()), @@ -7525,8 +7525,8 @@ TEST(io, projparse_init) { } { - auto obj = PROJStringParser().createFromPROJString( - "init=epsg:4326 proj=longlat ellps=GRS80"); + auto obj = createFromUserInput( + "init=epsg:4326 proj=longlat ellps=GRS80", dbContext, true); auto crs = nn_dynamic_pointer_cast(obj); ASSERT_TRUE(crs != nullptr); EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), -- cgit v1.2.3 From 1a4a056894724f41c9990ac89326a93944afe16a Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 26 Nov 2018 16:00:38 +0100 Subject: Remove data/esri and data/esri.extra files --- data/CMakeLists.txt | 4 +- data/Makefile.am | 6 +- data/esri | 5938 --------------------------------------------------- data/esri.extra | 948 -------- 4 files changed, 3 insertions(+), 6893 deletions(-) delete mode 100644 data/esri delete mode 100644 data/esri.extra diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 7b23527e..fe256ba7 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -2,9 +2,7 @@ # files containing dictionary of useful projection # -set(PROJ_DICTIONARY esri - world - esri.extra +set(PROJ_DICTIONARY world other.extra nad27 GL27 diff --git a/data/Makefile.am b/data/Makefile.am index 9833825f..d5c136ae 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,7 +1,6 @@ DATAPATH = $(top_srcdir)/data -pkgdata_DATA = GL27 nad.lst proj_def.dat nad27 nad83 world esri \ - esri.extra other.extra \ +pkgdata_DATA = GL27 nad.lst proj_def.dat nad27 nad83 world other.extra \ CH \ ITRF2000 ITRF2008 ITRF2014 proj.db @@ -35,8 +34,7 @@ SQL_ORDERED_LIST = sql/begin.sql \ sql/commit.sql EXTRA_DIST = GL27 nad.lst proj_def.dat nad27 nad83 \ - world esri \ - esri.extra other.extra \ + world other.extra \ CH \ ITRF2000 ITRF2008 ITRF2014 \ CMakeLists.txt tests/test_nodata.gtx null.lla \ diff --git a/data/esri b/data/esri deleted file mode 100644 index 36e35be2..00000000 --- a/data/esri +++ /dev/null @@ -1,5938 +0,0 @@ - +origin=Esri +lastupdate=2017-02-26 -# Anguilla 1957 / British West Indies Grid -<2000> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <> -# Antigua 1943 / British West Indies Grid -<2001> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +units=m +no_defs <> -# Dominica 1945 / British West Indies Grid -<2002> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs <> -# Grenada 1953 / British West Indies Grid -<2003> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs <> -# Montserrat 58 / British West Indies Grid -<2004> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs <> -# St Kitts 1955 / British West Indies Grid -<2005> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +units=m +no_defs <> -# St Lucia 1955 / British West Indies Grid -<2006> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs <> -# St Vincent 45 / British West Indies Grid -<2007> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 2 -<2008> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 3 -<2009> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 4 -<2010> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 5 -<2011> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 6 -<2012> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 7 -<2013> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 8 -<2014> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 9 -<2015> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / SCoPQ zone 10 -<2016> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 8 -<2017> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 9 -<2018> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 10 -<2019> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 11 -<2020> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 12 -<2021> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 13 -<2022> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 14 -<2023> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 15 -<2024> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 16 -<2025> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / MTM zone 17 -<2026> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / UTM zone 15N -<2027> +proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / UTM zone 16N -<2028> +proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / UTM zone 17N -<2029> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs <> -# NAD27(76) / UTM zone 18N -<2030> +proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 17N -<2031> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 18N -<2032> +proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 19N -<2033> +proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 20N -<2034> +proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs <> -# NAD27(CGQ77) / UTM zone 21N -<2035> +proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs <> -# NAD83(CSRS98) / New Brunswick Stereo -<2036> +proj=stere +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 19N -<2037> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 20N -<2038> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Israel / Israeli TM Grid -<2039> +proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.000007 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +units=m +no_defs <> -# Locodjo 1965 / UTM zone 30N -<2040> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> -# Abidjan 1987 / UTM zone 30N -<2041> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> -# Locodjo 1965 / UTM zone 29N -<2042> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> -# Abidjan 1987 / UTM zone 29N -<2043> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> -# Hanoi 1972 / Gauss-Kruger zone 18 -<2044> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> -# Hanoi 1972 / Gauss-Kruger zone 19 -<2045> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> -# Hartebeesthoek94 / Lo15 -# Hartebeesthoek94 / Lo17 -# Hartebeesthoek94 / Lo19 -# Hartebeesthoek94 / Lo21 -# Hartebeesthoek94 / Lo23 -# Hartebeesthoek94 / Lo25 -# Hartebeesthoek94 / Lo27 -# Hartebeesthoek94 / Lo29 -# Hartebeesthoek94 / Lo31 -# Hartebeesthoek94 / Lo33 -# CH1903+ / LV95 -<2056> +proj=omerc +lat_0=46.95240555555556 +lonc=7.439583333333333 +alpha=90 +k=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs <> -# Rassadiran / Nakhl e Taqi -<2057> +proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs <> -# ED50(ED77) / UTM zone 38N -<2058> +proj=utm +zone=38 +ellps=intl +units=m +no_defs <> -# ED50(ED77) / UTM zone 39N -<2059> +proj=utm +zone=39 +ellps=intl +units=m +no_defs <> -# ED50(ED77) / UTM zone 40N -<2060> +proj=utm +zone=40 +ellps=intl +units=m +no_defs <> -# ED50(ED77) / UTM zone 41N -<2061> +proj=utm +zone=41 +ellps=intl +units=m +no_defs <> -# Madrid 1870 (Madrid) / Spain -<2062> +proj=lcc +lat_1=40 +lat_0=40 +lon_0=-3.687938888888889 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669562 +pm=madrid +units=m +no_defs <> -# Dabola 1981 / UTM zone 28N -<2063> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> -# Dabola 1981 / UTM zone 29N -<2064> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> -# S-JTSK (Ferro) / Krovak -<2065> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> -# Mount Dillon / Tobago Grid -<2066> +proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66154375 +y_0=36209.915082 +a=6378293.63683822 +b=6356617.979337744 +to_meter=0.2011661949 +no_defs <> -# Naparima 1955 / UTM zone 20N -<2067> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 5 -<2068> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 6 -<2069> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 7 -<2070> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 8 -<2071> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 9 -<2072> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 10 -<2073> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 11 -<2074> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 12 -<2075> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / Libya zone 13 -<2076> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ELD79 / UTM zone 32N -<2077> +proj=utm +zone=32 +ellps=intl +units=m +no_defs <> -# ELD79 / UTM zone 33N -<2078> +proj=utm +zone=33 +ellps=intl +units=m +no_defs <> -# ELD79 / UTM zone 34N -<2079> +proj=utm +zone=34 +ellps=intl +units=m +no_defs <> -# ELD79 / UTM zone 35N -<2080> +proj=utm +zone=35 +ellps=intl +units=m +no_defs <> -# Chos Malal 1914 / Argentina zone 2 -<2081> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Pampa del Castillo / Argentina zone 2 -<2082> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Hito XVIII 1963 / Argentina zone 2 -<2083> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013 +units=m +no_defs <> -# Hito XVIII 1963 / UTM zone 19S -<2084> +proj=utm +zone=19 +south +ellps=intl +towgs84=18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013 +units=m +no_defs <> -# NAD27 / Cuba Norte -<2085> +proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Cuba Sur -<2086> +proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# ELD79 / TM 12 NE -<2087> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Carthage / TM 11 NE -<2088> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.999600 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Yemen NGN96 / UTM zone 38N -<2089> +proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Yemen NGN96 / UTM zone 39N -<2090> +proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# South Yemen / Gauss Kruger zone 8 -<2091> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> -# South Yemen / Gauss Kruger zone 9 -<2092> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> -# Hanoi 1972 / GK 106 NE -<2093> +proj=tmerc +lat_0=0 +lon_0=106 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> -# WGS 72BE / TM 106 NE -<2094> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.999600 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# Bissau / UTM zone 28N -<2095> +proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs <> -# Korean 1985 / Korea East Belt -<2096> +proj=tmerc +lat_0=38 +lon_0=129 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Korea Central Belt -<2097> +proj=tmerc +lat_0=38 +lon_0=127 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Korean 1985 / Korea West Belt -<2098> +proj=tmerc +lat_0=38 +lon_0=125 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> -# Qatar 1948 / Qatar Grid -<2099> +proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs <> -# GGRS87 / Greek Grid -<2100> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs <> -# Lake / Maracaibo Grid M1 -<2101> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs <> -# Lake / Maracaibo Grid -<2102> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs <> -# Lake / Maracaibo Grid M3 -<2103> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs <> -# Lake / Maracaibo La Rosa Grid -<2104> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs <> -# NZGD2000 / Mount Eden Circuit 2000 -<2105> +proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.999900 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Bay of Plenty Circuit 2000 -<2106> +proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Poverty Bay Circuit 2000 -<2107> +proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Hawkes Bay Circuit 2000 -<2108> +proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Taranaki Circuit 2000 -<2109> +proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Tuhirangi Circuit 2000 -<2110> +proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Wanganui Circuit 2000 -<2111> +proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Wairarapa Circuit 2000 -<2112> +proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Wellington Circuit 2000 -<2113> +proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Collingwood Circuit 2000 -<2114> +proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Nelson Circuit 2000 -<2115> +proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Karamea Circuit 2000 -<2116> +proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Buller Circuit 2000 -<2117> +proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Grey Circuit 2000 -<2118> +proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Amuri Circuit 2000 -<2119> +proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Marlborough Circuit 2000 -<2120> +proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Hokitika Circuit 2000 -<2121> +proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Okarito Circuit 2000 -<2122> +proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Jacksons Bay Circuit 2000 -<2123> +proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Mount Pleasant Circuit 2000 -<2124> +proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Gawler Circuit 2000 -<2125> +proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Timaru Circuit 2000 -<2126> +proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Lindis Peak Circuit 2000 -<2127> +proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Mount Nicholas Circuit 2000 -<2128> +proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Mount York Circuit 2000 -<2129> +proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Observation Point Circuit 2000 -<2130> +proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / North Taieri Circuit 2000 -<2131> +proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.999960 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / Bluff Circuit 2000 -<2132> +proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / UTM zone 58S -<2133> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / UTM zone 59S -<2134> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NZGD2000 / UTM zone 60S -<2135> +proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Accra / Ghana National Grid -<2136> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.999750 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs <> -# Accra / TM 1 NW -<2137> +proj=tmerc +lat_0=0 +lon_0=-1 +k=0.999600 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs <> -# NAD27(CGQ77) / Quebec Lambert -<2138> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# NAD83(CSRS98) / SCoPQ zone 2 -<2139> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 3 -<2140> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 4 -<2141> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 5 -<2142> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 6 -<2143> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 7 -<2144> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 8 -<2145> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 9 -<2146> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / MTM zone 10 -<2147> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 21N -<2148> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 18N -<2149> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 17N -<2150> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 13N -<2151> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 12N -<2152> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS98) / UTM zone 11N -<2153> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# RGF93 / Lambert-93 -<2154> +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# American Samoa 1962 / American Samoa Lambert -<2155> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / UTM zone 59S -<2156> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IRENET95 / Irish Transverse Mercator -<2157> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.999820 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# IRENET95 / UTM zone 29N -<2158> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Sierra Leone 1924 / New Colony Grid -<2159> +proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1.000000 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <> -# Sierra Leone 1924 / New War Office Grid -<2160> +proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1.000000 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <> -# Sierra Leone 1968 / UTM zone 28N -<2161> +proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs <> -# Sierra Leone 1968 / UTM zone 29N -<2162> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs <> -# US National Atlas Equal Area -<2163> +proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs <> -# Locodjo 1965 / TM 5 NW -<2164> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> -# Abidjan 1987 / TM 5 NW -<2165> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss Kruger zone 3 -<2166> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss Kruger zone 4 -<2167> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss Kruger zone 5 -<2168> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> -# Luxembourg 1930 / Gauss -<2169> +proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1.000000 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs <> -# MGI / Slovenia Grid -<2170> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone I -<2171> +proj=stere +lat_0=50.625 +lon_0=21.08333333333333 +k=0.999800 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone II -<2172> +proj=stere +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.999800 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone III -<2173> +proj=stere +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.999800 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone IV -<2174> +proj=stere +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.999800 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# Pulkovo 1942(58) / Poland zone V -<2175> +proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> -# ETRS89 / Poland CS2000 zone 5 -<2176> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / Poland CS2000 zone 6 -<2177> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / Poland CS2000 zone 7 -<2178> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / Poland CS2000 zone 8 -<2179> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / Poland CS92 -<2180> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.999300 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs <> -# Azores Occidental 1939 / UTM zone 25N -<2188> +proj=utm +zone=25 +ellps=intl +units=m +no_defs <> -# Azores Central 1948 / UTM zone 26N -<2189> +proj=utm +zone=26 +ellps=intl +units=m +no_defs <> -# Azores Oriental 1940 / UTM zone 26N -<2190> +proj=utm +zone=26 +ellps=intl +units=m +no_defs <> -# Madeira 1936 / UTM zone 28N -<2191> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> -# ED50 / France EuroLambert -<2192> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +units=m +no_defs <> -# NZGD2000 / New Zealand Transverse Mercator -<2193> +proj=tmerc +lat_0=0 +lon_0=173 +k=0.999600 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# American Samoa 1962 / American Samoa Lambert -<2194> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / UTM zone 2S -<2195> +proj=utm +zone=2 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ETRS89 / Kp2000 Jutland -<2196> +proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.999950 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / Kp2000 Zealand -<2197> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.999950 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / Kp2000 Bornholm -<2198> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# Albanian 1987 / Gauss Kruger zone 4 -<2199> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# ATS77 / New Brunswick Stereographic (ATS77) -<2200> +proj=stere +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# REGVEN / UTM zone 18N -<2201> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# REGVEN / UTM zone 19N -<2202> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# REGVEN / UTM zone 20N -<2203> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Tennessee -<2204> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Kentucky North -<2205> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 9 -<2206> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 10 -<2207> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 11 -<2208> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 12 -<2209> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 13 -<2210> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 14 -<2211> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / 3-degree Gauss-Kruger zone 15 -<2212> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ETRS89 / TM 30 NE -<2213> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# Douala 1948 / AOF west -<2214> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs <> -# Manoca 1962 / UTM zone 32N -<2215> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs <> -# Qornoq 1927 / UTM zone 22N -<2216> +proj=utm +zone=22 +ellps=intl +units=m +no_defs <> -# Qornoq 1927 / UTM zone 23N -<2217> +proj=utm +zone=23 +ellps=intl +units=m +no_defs <> -# ATS77 / UTM zone 19N -<2219> +proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# ATS77 / UTM zone 20N -<2220> +proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# NAD83 / Arizona East (ft) -<2222> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Arizona Central (ft) -<2223> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Arizona West (ft) -<2224> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / California zone 1 (ftUS) -<2225> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / California zone 2 (ftUS) -<2226> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / California zone 3 (ftUS) -<2227> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / California zone 4 (ftUS) -<2228> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / California zone 5 (ftUS) -<2229> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / California zone 6 (ftUS) -<2230> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Colorado North (ftUS) -<2231> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Colorado Central (ftUS) -<2232> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Colorado South (ftUS) -<2233> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Connecticut (ftUS) -<2234> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Delaware (ftUS) -<2235> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Florida East (ftUS) -<2236> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Florida West (ftUS) -<2237> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Florida North (ftUS) -<2238> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Georgia East (ftUS) -<2239> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Georgia West (ftUS) -<2240> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Idaho East (ftUS) -<2241> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Idaho Central (ftUS) -<2242> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Idaho West (ftUS) -<2243> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Indiana East (ftUS) -<2244> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Indiana West (ftUS) -<2245> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Kentucky North (ftUS) -<2246> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Kentucky South (ftUS) -<2247> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Maryland (ftUS) -<2248> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Massachusetts Mainland (ftUS) -<2249> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Massachusetts Island (ftUS) -<2250> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Michigan North (ft) -<2251> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Michigan Central (ft) -<2252> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Michigan South (ft) -<2253> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Mississippi East (ftUS) -<2254> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Mississippi West (ftUS) -<2255> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Montana (ft) -<2256> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / New Mexico East (ftUS) -<2257> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / New Mexico Central (ftUS) -<2258> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / New Mexico West (ftUS) -<2259> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / New York East (ftUS) -<2260> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / New York Central (ftUS) -<2261> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / New York West (ftUS) -<2262> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / New York Long Island (ftUS) -<2263> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / North Carolina (ftUS) -<2264> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / North Dakota North (ft) -<2265> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / North Dakota South (ft) -<2266> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Oklahoma North (ftUS) -<2267> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Oklahoma South (ftUS) -<2268> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Oregon North (ft) -<2269> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Oregon South (ft) -<2270> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Pennsylvania North (ftUS) -<2271> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Pennsylvania South (ftUS) -<2272> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / South Carolina (ft) -<2273> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Tennessee (ftUS) -<2274> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Texas North (ftUS) -<2275> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Texas North Central (ftUS) -<2276> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Texas Central (ftUS) -<2277> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Texas South Central (ftUS) -<2278> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Texas South (ftUS) -<2279> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Utah North (ft) -<2280> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Utah Central (ft) -<2281> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Utah South (ft) -<2282> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> -# NAD83 / Virginia North (ftUS) -<2283> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Virginia South (ftUS) -<2284> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Washington North (ftUS) -<2285> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Washington South (ftUS) -<2286> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Wisconsin North (ftUS) -<2287> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Wisconsin Central (ftUS) -<2288> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / Wisconsin South (ftUS) -<2289> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# ATS77 / Prince Edward Isl. Stereographic (ATS77) -<2290> +proj=stere +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) -<2291> +proj=stere +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) -<2292> +proj=stere +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# ATS77 / MTM Nova Scotia zone 4 -<2294> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# ATS77 / MTM Nova Scotia zone 5 -<2295> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> -# Batavia / TM 109 SE -<2308> +proj=tmerc +lat_0=0 +lon_0=109 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=bessel +units=m +no_defs <> -# WGS 84 / TM 116 SE -<2309> +proj=tmerc +lat_0=0 +lon_0=116 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / TM 132 SE -<2310> +proj=tmerc +lat_0=0 +lon_0=132 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / TM 6 NE -<2311> +proj=tmerc +lat_0=0 +lon_0=6 +k=0.999600 +x_0=500000 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Garoua / UTM zone 33N -<2312> +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs <> -# Kousseri / UTM zone 33N -<2313> +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs <> -# Trinidad 1903 / Trinidad Grid (ftCla) -<2314> +proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46380699999 +y_0=65379.01334249999 +a=6378293.63683822 +b=6356617.979337744 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.304797265 +no_defs <> -# Campo Inchauspe / UTM zone 19S -<2315> +proj=utm +zone=19 +south +ellps=intl +units=m +no_defs <> -# Campo Inchauspe / UTM zone 20S -<2316> +proj=utm +zone=20 +south +ellps=intl +units=m +no_defs <> -# PSAD56 / ICN Regional -<2317> +proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs <> -# Ain el Abd / Aramco Lambert -<2318> +proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / TM27 -<2319> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / TM30 -<2320> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / TM33 -<2321> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / TM36 -<2322> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / TM39 -<2323> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / TM42 -<2324> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / TM45 -<2325> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Hong Kong 1980 Grid System -<2326> +proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1.000000 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 13 -<2327> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 14 -<2328> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 15 -<2329> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 16 -<2330> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 17 -<2331> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 18 -<2332> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 19 -<2333> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 20 -<2334> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 21 -<2335> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 22 -<2336> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger zone 23 -<2337> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 75E -<2338> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 81E -<2339> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 87E -<2340> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 93E -<2341> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 99E -<2342> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 105E -<2343> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 111E -<2344> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 117E -<2345> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 123E -<2346> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 129E -<2347> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / Gauss-Kruger CM 135E -<2348> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 25 -<2349> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 26 -<2350> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 27 -<2351> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 28 -<2352> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 29 -<2353> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 30 -<2354> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 31 -<2355> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 32 -<2356> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 33 -<2357> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 34 -<2358> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 35 -<2359> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 36 -<2360> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 37 -<2361> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 38 -<2362> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 39 -<2363> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 40 -<2364> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 41 -<2365> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 42 -<2366> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 43 -<2367> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 44 -<2368> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger zone 45 -<2369> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 75E -<2370> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 78E -<2371> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 81E -<2372> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 84E -<2373> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 87E -<2374> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 90E -<2375> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 93E -<2376> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 96E -<2377> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 99E -<2378> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 102E -<2379> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 105E -<2380> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 108E -<2381> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 111E -<2382> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 114E -<2383> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 117E -<2384> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 120E -<2385> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 123E -<2386> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 126E -<2387> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 129E -<2388> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 132E -<2389> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# Xian 1980 / 3-degree Gauss-Kruger CM 135E -<2390> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> -# KKJ / Finland zone 1 -<2391> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs <> -# KKJ / Finland zone 2 -<2392> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs <> -# KKJ / Finland Uniform Coordinate System -<2393> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs <> -# KKJ / Finland zone 4 -<2394> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs <> -# South Yemen / Gauss-Kruger zone 8 -<2395> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> -# South Yemen / Gauss-Kruger zone 9 -<2396> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss-Kruger zone 3 -<2397> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss-Kruger zone 4 -<2398> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> -# Pulkovo 1942(83) / Gauss-Kruger zone 5 -<2399> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> -# RT90 2.5 gon W -<2400> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 25 -<2401> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 26 -<2402> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 27 -<2403> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 28 -<2404> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 29 -<2405> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 30 -<2406> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 31 -<2407> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 32 -<2408> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 33 -<2409> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 34 -<2410> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 35 -<2411> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 36 -<2412> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 37 -<2413> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 38 -<2414> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 39 -<2415> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 40 -<2416> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 41 -<2417> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 42 -<2418> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 43 -<2419> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 44 -<2420> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger zone 45 -<2421> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 75E -<2422> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 78E -<2423> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 81E -<2424> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 84E -<2425> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 87E -<2426> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 90E -<2427> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 93E -<2428> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 96E -<2429> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 99E -<2430> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 102E -<2431> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 105E -<2432> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 108E -<2433> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 111E -<2434> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 114E -<2435> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 117E -<2436> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 120E -<2437> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 123E -<2438> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 126E -<2439> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 129E -<2440> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 132E -<2441> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / 3-degree Gauss-Kruger CM 135E -<2442> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS I -<2443> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS II -<2444> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS III -<2445> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS IV -<2446> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS V -<2447> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS VI -<2448> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS VII -<2449> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS VIII -<2450> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS IX -<2451> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS X -<2452> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XI -<2453> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XII -<2454> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XIII -<2455> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XIV -<2456> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XV -<2457> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XVI -<2458> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XVII -<2459> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XVIII -<2460> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# JGD2000 / Japan Plane Rectangular CS XIX -<2461> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Albanian 1987 / Gauss-Kruger zone 4 -<2462> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 21E -<2463> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 27E -<2464> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 33E -<2465> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 39E -<2466> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 45E -<2467> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 51E -<2468> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 57E -<2469> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 63E -<2470> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 69E -<2471> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 75E -<2472> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 81E -<2473> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 87E -<2474> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 93E -<2475> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 99E -<2476> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 105E -<2477> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 111E -<2478> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 117E -<2479> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 123E -<2480> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 129E -<2481> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 135E -<2482> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 141E -<2483> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 147E -<2484> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 153E -<2485> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 159E -<2486> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 165E -<2487> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 171E -<2488> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 177E -<2489> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 177W -<2490> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger CM 171W -<2491> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 9E -<2492> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 15E -<2493> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 21E -<2494> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 27E -<2495> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 33E -<2496> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 39E -<2497> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 45E -<2498> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 51E -<2499> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 57E -<2500> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 63E -<2501> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 69E -<2502> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 75E -<2503> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 81E -<2504> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 87E -<2505> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 93E -<2506> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 99E -<2507> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 105E -<2508> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 111E -<2509> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 117E -<2510> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 123E -<2511> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 129E -<2512> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 135E -<2513> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 141E -<2514> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 147E -<2515> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 153E -<2516> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 159E -<2517> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 165E -<2518> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 171E -<2519> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 177E -<2520> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 177W -<2521> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger CM 171W -<2522> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 7 -<2523> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 8 -<2524> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 9 -<2525> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 10 -<2526> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 11 -<2527> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 12 -<2528> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 13 -<2529> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 14 -<2530> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 15 -<2531> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 16 -<2532> +proj=tmerc +lat_0=0 +lon_0=48 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 17 -<2533> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 18 -<2534> +proj=tmerc +lat_0=0 +lon_0=54 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 19 -<2535> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 20 -<2536> +proj=tmerc +lat_0=0 +lon_0=60 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 21 -<2537> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 22 -<2538> +proj=tmerc +lat_0=0 +lon_0=66 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 23 -<2539> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 24 -<2540> +proj=tmerc +lat_0=0 +lon_0=72 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 25 -<2541> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 26 -<2542> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 27 -<2543> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 28 -<2544> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 29 -<2545> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 30 -<2546> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 31 -<2547> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 32 -<2548> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 33 -<2549> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Samboja / UTM zone 50S -<2550> +proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 34 -<2551> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 35 -<2552> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 36 -<2553> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 37 -<2554> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 38 -<2555> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 39 -<2556> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 40 -<2557> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 41 -<2558> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 42 -<2559> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 43 -<2560> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 44 -<2561> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 45 -<2562> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 46 -<2563> +proj=tmerc +lat_0=0 +lon_0=138 +k=1.000000 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 47 -<2564> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 48 -<2565> +proj=tmerc +lat_0=0 +lon_0=144 +k=1.000000 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 49 -<2566> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 50 -<2567> +proj=tmerc +lat_0=0 +lon_0=150 +k=1.000000 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 51 -<2568> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 52 -<2569> +proj=tmerc +lat_0=0 +lon_0=156 +k=1.000000 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 53 -<2570> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 54 -<2571> +proj=tmerc +lat_0=0 +lon_0=162 +k=1.000000 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 55 -<2572> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 56 -<2573> +proj=tmerc +lat_0=0 +lon_0=168 +k=1.000000 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 57 -<2574> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 58 -<2575> +proj=tmerc +lat_0=0 +lon_0=174 +k=1.000000 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 59 -<2576> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 -<2577> +proj=tmerc +lat_0=0 +lon_0=180 +k=1.000000 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 61 -<2578> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 62 -<2579> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1.000000 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 63 -<2580> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger zone 64 -<2581> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1.000000 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E -<2582> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E -<2583> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E -<2584> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E -<2585> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E -<2586> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E -<2587> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E -<2588> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E -<2589> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E -<2590> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E -<2591> +proj=tmerc +lat_0=0 +lon_0=48 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E -<2592> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E -<2593> +proj=tmerc +lat_0=0 +lon_0=54 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E -<2594> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E -<2595> +proj=tmerc +lat_0=0 +lon_0=60 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E -<2596> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E -<2597> +proj=tmerc +lat_0=0 +lon_0=66 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E -<2598> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E -<2599> +proj=tmerc +lat_0=0 +lon_0=72 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Lietuvos Koordinoei Sistema 1994 -<2600> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999800 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E -<2601> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E -<2602> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E -<2603> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E -<2604> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E -<2605> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E -<2606> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E -<2607> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E -<2608> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E -<2609> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E -<2610> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E -<2611> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E -<2612> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E -<2613> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E -<2614> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E -<2615> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E -<2616> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E -<2617> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E -<2618> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E -<2619> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E -<2620> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E -<2621> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E -<2622> +proj=tmerc +lat_0=0 +lon_0=138 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E -<2623> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E -<2624> +proj=tmerc +lat_0=0 +lon_0=144 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E -<2625> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E -<2626> +proj=tmerc +lat_0=0 +lon_0=150 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E -<2627> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E -<2628> +proj=tmerc +lat_0=0 +lon_0=156 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E -<2629> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E -<2630> +proj=tmerc +lat_0=0 +lon_0=162 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E -<2631> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E -<2632> +proj=tmerc +lat_0=0 +lon_0=168 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E -<2633> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E -<2634> +proj=tmerc +lat_0=0 +lon_0=174 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E -<2635> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E -<2636> +proj=tmerc +lat_0=0 +lon_0=180 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W -<2637> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W -<2638> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W -<2639> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W -<2640> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 7 -<2641> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 8 -<2642> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 9 -<2643> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 10 -<2644> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 11 -<2645> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 12 -<2646> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 13 -<2647> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 14 -<2648> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 15 -<2649> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 16 -<2650> +proj=tmerc +lat_0=0 +lon_0=48 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 17 -<2651> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 18 -<2652> +proj=tmerc +lat_0=0 +lon_0=54 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 19 -<2653> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 20 -<2654> +proj=tmerc +lat_0=0 +lon_0=60 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 21 -<2655> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 22 -<2656> +proj=tmerc +lat_0=0 +lon_0=66 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 23 -<2657> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 24 -<2658> +proj=tmerc +lat_0=0 +lon_0=72 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 25 -<2659> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 26 -<2660> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 27 -<2661> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 28 -<2662> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 29 -<2663> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 30 -<2664> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 31 -<2665> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 32 -<2666> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 33 -<2667> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 34 -<2668> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 35 -<2669> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 36 -<2670> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 37 -<2671> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 38 -<2672> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 39 -<2673> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 40 -<2674> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 41 -<2675> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 42 -<2676> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 43 -<2677> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 44 -<2678> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 45 -<2679> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 46 -<2680> +proj=tmerc +lat_0=0 +lon_0=138 +k=1.000000 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 47 -<2681> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 48 -<2682> +proj=tmerc +lat_0=0 +lon_0=144 +k=1.000000 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 49 -<2683> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 50 -<2684> +proj=tmerc +lat_0=0 +lon_0=150 +k=1.000000 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 51 -<2685> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 52 -<2686> +proj=tmerc +lat_0=0 +lon_0=156 +k=1.000000 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 53 -<2687> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 54 -<2688> +proj=tmerc +lat_0=0 +lon_0=162 +k=1.000000 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 55 -<2689> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 56 -<2690> +proj=tmerc +lat_0=0 +lon_0=168 +k=1.000000 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 57 -<2691> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 58 -<2692> +proj=tmerc +lat_0=0 +lon_0=174 +k=1.000000 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 59 -<2693> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 -<2694> +proj=tmerc +lat_0=0 +lon_0=180 +k=1.000000 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 61 -<2695> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 62 -<2696> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1.000000 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 63 -<2697> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger zone 64 -<2698> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1.000000 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E -<2699> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E -<2700> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E -<2701> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E -<2702> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E -<2703> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E -<2704> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E -<2705> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E -<2706> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E -<2707> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E -<2708> +proj=tmerc +lat_0=0 +lon_0=48 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E -<2709> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E -<2710> +proj=tmerc +lat_0=0 +lon_0=54 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E -<2711> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E -<2712> +proj=tmerc +lat_0=0 +lon_0=60 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E -<2713> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E -<2714> +proj=tmerc +lat_0=0 +lon_0=66 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E -<2715> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E -<2716> +proj=tmerc +lat_0=0 +lon_0=72 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E -<2717> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E -<2718> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E -<2719> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E -<2720> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E -<2721> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E -<2722> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E -<2723> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E -<2724> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E -<2725> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E -<2726> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E -<2727> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E -<2728> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E -<2729> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E -<2730> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E -<2731> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E -<2732> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E -<2733> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E -<2734> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E -<2735> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Tete / UTM zone 36S -<2736> +proj=utm +zone=36 +south +ellps=clrk66 +units=m +no_defs <> -# Tete / UTM zone 37S -<2737> +proj=utm +zone=37 +south +ellps=clrk66 +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E -<2738> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E -<2739> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E -<2740> +proj=tmerc +lat_0=0 +lon_0=138 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E -<2741> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E -<2742> +proj=tmerc +lat_0=0 +lon_0=144 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E -<2743> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E -<2744> +proj=tmerc +lat_0=0 +lon_0=150 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E -<2745> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E -<2746> +proj=tmerc +lat_0=0 +lon_0=156 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E -<2747> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E -<2748> +proj=tmerc +lat_0=0 +lon_0=162 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E -<2749> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E -<2750> +proj=tmerc +lat_0=0 +lon_0=168 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E -<2751> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E -<2752> +proj=tmerc +lat_0=0 +lon_0=174 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E -<2753> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E -<2754> +proj=tmerc +lat_0=0 +lon_0=180 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W -<2755> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W -<2756> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W -<2757> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W -<2758> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# NAD83(HARN) / Alabama East -<2759> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Alabama West -<2760> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arizona East -<2761> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arizona Central -<2762> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arizona West -<2763> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arkansas North -<2764> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arkansas South -<2765> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 1 -<2766> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 2 -<2767> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 3 -<2768> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 4 -<2769> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 5 -<2770> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / California zone 6 -<2771> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Colorado North -<2772> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Colorado Central -<2773> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Colorado South -<2774> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Connecticut -<2775> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Delaware -<2776> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Florida East -<2777> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Florida West -<2778> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Florida North -<2779> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Georgia East -<2780> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Georgia West -<2781> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 1 -<2782> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 2 -<2783> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 3 -<2784> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 4 -<2785> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Hawaii zone 5 -<2786> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Idaho East -<2787> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Idaho Central -<2788> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Idaho West -<2789> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Illinois East -<2790> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Illinois West -<2791> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Indiana East -<2792> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Indiana West -<2793> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Iowa North -<2794> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Iowa South -<2795> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kansas North -<2796> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kansas South -<2797> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kentucky North -<2798> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Kentucky South -<2799> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Louisiana North -<2800> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Louisiana South -<2801> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maine East -<2802> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maine West -<2803> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Maryland -<2804> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Massachusetts Mainland -<2805> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Massachusetts Island -<2806> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Michigan North -<2807> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Michigan Central -<2808> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Michigan South -<2809> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota North -<2810> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota Central -<2811> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Minnesota South -<2812> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Mississippi East -<2813> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Mississippi West -<2814> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Missouri East -<2815> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Missouri Central -<2816> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Missouri West -<2817> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Montana -<2818> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nebraska -<2819> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nevada East -<2820> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nevada Central -<2821> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Nevada West -<2822> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Hampshire -<2823> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Jersey -<2824> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Mexico East -<2825> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Mexico Central -<2826> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New Mexico West -<2827> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New York East -<2828> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New York Central -<2829> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New York West -<2830> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / New York Long Island -<2831> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / North Dakota North -<2832> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / North Dakota South -<2833> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Ohio North -<2834> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Ohio South -<2835> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oklahoma North -<2836> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oklahoma South -<2837> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oregon North -<2838> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Oregon South -<2839> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Rhode Island -<2840> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / South Dakota North -<2841> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / South Dakota South -<2842> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Tennessee -<2843> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas North -<2844> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas North Central -<2845> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas Central -<2846> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas South Central -<2847> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Texas South -<2848> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Utah North -<2849> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Utah Central -<2850> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Utah South -<2851> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Vermont -<2852> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Virginia North -<2853> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Virginia South -<2854> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Washington North -<2855> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Washington South -<2856> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / West Virginia North -<2857> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / West Virginia South -<2858> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wisconsin North -<2859> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wisconsin Central -<2860> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wisconsin South -<2861> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wyoming East -<2862> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wyoming East Central -<2863> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wyoming West Central -<2864> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Wyoming West -<2865> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Puerto Rico & Virgin Is. -<2866> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(HARN) / Arizona East (ft) -<2867> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Arizona Central (ft) -<2868> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Arizona West (ft) -<2869> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / California zone 1 (ftUS) -<2870> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / California zone 2 (ftUS) -<2871> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / California zone 3 (ftUS) -<2872> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / California zone 4 (ftUS) -<2873> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / California zone 5 (ftUS) -<2874> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / California zone 6 (ftUS) -<2875> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Colorado North (ftUS) -<2876> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Colorado Central (ftUS) -<2877> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Colorado South (ftUS) -<2878> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Connecticut (ftUS) -<2879> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Delaware (ftUS) -<2880> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Florida East (ftUS) -<2881> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Florida West (ftUS) -<2882> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Florida North (ftUS) -<2883> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Georgia East (ftUS) -<2884> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Georgia West (ftUS) -<2885> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Idaho East (ftUS) -<2886> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Idaho Central (ftUS) -<2887> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Idaho West (ftUS) -<2888> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Indiana East (ftUS) -<2889> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Indiana West (ftUS) -<2890> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Kentucky North (ftUS) -<2891> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Kentucky South (ftUS) -<2892> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Maryland (ftUS) -<2893> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Massachusetts Mainland (ftUS) -<2894> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Massachusetts Island (ftUS) -<2895> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Michigan North (ft) -<2896> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Michigan Central (ft) -<2897> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Michigan South (ft) -<2898> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Mississippi East (ftUS) -<2899> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Mississippi West (ftUS) -<2900> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Montana (ft) -<2901> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / New Mexico East (ftUS) -<2902> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / New Mexico Central (ftUS) -<2903> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / New Mexico West (ftUS) -<2904> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / New York East (ftUS) -<2905> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / New York Central (ftUS) -<2906> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / New York West (ftUS) -<2907> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / New York Long Island (ftUS) -<2908> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / North Dakota North (ft) -<2909> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / North Dakota South (ft) -<2910> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Oklahoma North (ftUS) -<2911> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Oklahoma South (ftUS) -<2912> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Oregon North (ft) -<2913> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Oregon South (ft) -<2914> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Tennessee (ftUS) -<2915> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Texas North (ftUS) -<2916> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Texas North Central (ftUS) -<2917> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Texas Central (ftUS) -<2918> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Texas South Central (ftUS) -<2919> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Texas South (ftUS) -<2920> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Utah North (ft) -<2921> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Utah Central (ft) -<2922> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Utah South (ft) -<2923> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> -# NAD83(HARN) / Virginia North (ftUS) -<2924> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Virginia South (ftUS) -<2925> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Washington North (ftUS) -<2926> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Washington South (ftUS) -<2927> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Wisconsin North (ftUS) -<2928> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Wisconsin Central (ftUS) -<2929> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# NAD83(HARN) / Wisconsin South (ftUS) -<2930> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> -# Beduaram / TM 13 NE -<2931> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.999600 +x_0=500000.0000000001 +y_0=0 +a=6378249.2 +b=6356515 +to_meter=0.3048006096012192 +no_defs <> -# QND95 / Qatar National Grid -<2932> +proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.999990 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m +no_defs <> -# Segara / UTM zone 50S -<2933> +proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs <> -# Segara (Jakarta) / NEIEZ -<2934> +proj=merc +lat_ts=0 +lon_0=216.8077194444444 +k=0.997000 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone A1 -<2935> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1.000000 +x_0=1300000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone A2 -<2936> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1.000000 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone A3 -<2937> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1.000000 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone A4 -<2938> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1.000000 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone K2 -<2939> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1.000000 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone K3 -<2940> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1.000000 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / CS63 zone K4 -<2941> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1.000000 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Porto Santo / UTM zone 28N -<2942> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> -# Selvagem Grande / UTM zone 28N -<2943> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> -# NAD83(CSRS) / SCoPQ zone 2 -<2944> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 3 -<2945> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 4 -<2946> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 5 -<2947> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 6 -<2948> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 7 -<2949> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 8 -<2950> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 9 -<2951> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / MTM zone 10 -<2952> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / New Brunswick Stereo -<2953> +proj=stere +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83) -<2954> +proj=stere +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 11N -<2955> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 12N -<2956> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 13N -<2957> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 17N -<2958> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 18N -<2959> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 19N -<2960> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 20N -<2961> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD83(CSRS) / UTM zone 21N -<2962> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Moznet / UTM zone 36S -<3036> +proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs <> -# Moznet / UTM zone 37S -<3037> +proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs <> -# Indian 1960 / UTM zone 48N -<3148> +proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs <> -# Indian 1960 / UTM zone 49N -<3149> +proj=utm +zone=49 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs <> -# Indian 1960 / TM 106 NE -<3176> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.999600 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs <> -# FD58 / Iraq zone -<3200> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs <> -# Estonian Coordinate System of 1992 -<3300> +proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs <> -# Estonian Coordinate System of 1997 -<3301> +proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# PSD93 / UTM zone 39N -<3439> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs <> -# PSD93 / UTM zone 40N -<3440> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> -# Old Hawaiian / Hawaii zone 1 -<3561> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> -# Old Hawaiian / Hawaii zone 2 -<3562> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> -# Old Hawaiian / Hawaii zone 3 -<3563> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> -# Old Hawaiian / Hawaii zone 4 -<3564> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> -# Old Hawaiian / Hawaii zone 5 -<3565> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> -# Puerto Rico / UTM zone 20N -<3920> +proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs <> -# Puerto Rico State Plane CS of 1927 -<3991> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> -# Puerto Rico / St. Croix -<3992> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> -# Unknown datum based upon the Airy 1830 ellipsoid -<4001> +proj=longlat +ellps=airy +no_defs <> -# Unknown datum based upon the Airy Modified 1849 ellipsoid -<4002> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs <> -# Unknown datum based upon the Australian National Spheroid -<4003> +proj=longlat +ellps=aust_SA +no_defs <> -# Unknown datum based upon the Bessel 1841 ellipsoid -<4004> +proj=longlat +ellps=bessel +no_defs <> -# Unknown datum based upon the Bessel Modified ellipsoid -<4005> +proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs <> -# Unknown datum based upon the Bessel Namibia ellipsoid -<4006> +proj=longlat +ellps=bess_nam +no_defs <> -# Unknown datum based upon the Clarke 1858 ellipsoid -<4007> +proj=longlat +a=6378293.63683822 +b=6356617.979337744 +no_defs <> -# Unknown datum based upon the Clarke 1866 ellipsoid -<4008> +proj=longlat +ellps=clrk66 +no_defs <> -# Unknown datum based upon the Clarke 1866 Michigan ellipsoid -<4009> +proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs <> -# Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid -<4010> +proj=longlat +a=6378300.789 +b=6356566.435 +no_defs <> -# Unknown datum based upon the Clarke 1880 (IGN) ellipsoid -<4011> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Unknown datum based upon the Clarke 1880 (RGS) ellipsoid -<4012> +proj=longlat +ellps=clrk80 +no_defs <> -# Unknown datum based upon the Clarke 1880 (Arc) ellipsoid -<4013> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs <> -# Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid -<4014> +proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs <> -# Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid -<4015> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <> -# Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid -<4016> +proj=longlat +ellps=evrstSS +no_defs <> -# Unknown datum based upon the Everest 1830 Modified ellipsoid -<4018> +proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs <> -# Unknown datum based upon the GRS 1980 ellipsoid -<4019> +proj=longlat +ellps=GRS80 +no_defs <> -# Unknown datum based upon the Helmert 1906 ellipsoid -<4020> +proj=longlat +ellps=helmert +no_defs <> -# Unknown datum based upon the Indonesian National Spheroid -<4021> +proj=longlat +a=6378160 +b=6356774.50408554 +no_defs <> -# Unknown datum based upon the International 1924 ellipsoid -<4022> +proj=longlat +ellps=intl +no_defs <> -# Unknown datum based upon the Krassowsky 1940 ellipsoid -<4024> +proj=longlat +ellps=krass +no_defs <> -# Unknown datum based upon the NWL 9D ellipsoid -<4025> +proj=longlat +ellps=WGS66 +no_defs <> -# Unknown datum based upon the Plessis 1817 ellipsoid -<4027> +proj=longlat +a=6376523 +b=6355862.933255573 +no_defs <> -# Unknown datum based upon the Struve 1860 ellipsoid -<4028> +proj=longlat +a=6378298.3 +b=6356657.142669562 +no_defs <> -# Unknown datum based upon the War Office ellipsoid -<4029> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs <> -# Unknown datum based upon the WGS 84 ellipsoid -<4030> +proj=longlat +ellps=WGS84 +no_defs <> -# Unknown datum based upon the GEM 10C ellipsoid -<4031> +proj=longlat +ellps=WGS84 +no_defs <> -# Unknown datum based upon the OSU86F ellipsoid -<4032> +proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs <> -# Unknown datum based upon the OSU91A ellipsoid -<4033> +proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs <> -# Unknown datum based upon the Clarke 1880 ellipsoid -<4034> +proj=longlat +ellps=clrk80 +no_defs <> -# Unknown datum based upon the Authalic Sphere -<4035> +proj=longlat +a=6371000 +b=6371000 +no_defs <> -# Unknown datum based upon the GRS 1967 ellipsoid -<4036> +proj=longlat +ellps=GRS67 +no_defs <> -# Unknown datum based upon the Average Terrestrial System 1977 ellipsoid -<4041> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs <> -# Unknown datum based upon the Everest (1830 Definition) ellipsoid -<4042> +proj=longlat +a=6377299.36559538 +b=6356098.357204817 +no_defs <> -# Unknown datum based upon the WGS 72 ellipsoid -<4043> +proj=longlat +ellps=WGS72 +no_defs <> -# Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid -<4044> +proj=longlat +a=6377301.243 +b=6356100.230165385 +no_defs <> -# Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid -<4045> +proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs <> -# Unspecified based upon the GRS 1980 Authalic Sphere -<4047> +proj=longlat +a=6370997 +b=6370997 +no_defs <> -# Greek -<4120> +proj=longlat +ellps=bessel +no_defs <> -# GGRS87 -<4121> +proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +no_defs <> -# ATS77 -<4122> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs <> -# KKJ -<4123> +proj=longlat +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +no_defs <> -# RT90 -<4124> +proj=longlat +ellps=bessel +no_defs <> -# Samboja -<4125> +proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs <> -# LKS94 (ETRS89) -<4126> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Tete -<4127> +proj=longlat +ellps=clrk66 +no_defs <> -# Madzansua -<4128> +proj=longlat +ellps=clrk66 +no_defs <> -# Observatario -<4129> +proj=longlat +ellps=clrk66 +no_defs <> -# Moznet -<4130> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs <> -# Indian 1960 -<4131> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <> -# FD58 -<4132> +proj=longlat +ellps=clrk80 +no_defs <> -# EST92 -<4133> +proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs <> -# PDO Survey Datum 1993 -<4134> +proj=longlat +ellps=clrk80 +no_defs <> -# Old Hawaiian -<4135> +proj=longlat +ellps=clrk66 +no_defs <> -# St. Lawrence Island -<4136> +proj=longlat +ellps=clrk66 +no_defs <> -# St. Paul Island -<4137> +proj=longlat +ellps=clrk66 +no_defs <> -# St. George Island -<4138> +proj=longlat +ellps=clrk66 +no_defs <> -# Puerto Rico -<4139> +proj=longlat +ellps=clrk66 +no_defs <> -# NAD83(CSRS98) -<4140> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Israel -<4141> +proj=longlat +ellps=GRS80 +no_defs <> -# Locodjo 1965 -<4142> +proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs <> -# Abidjan 1987 -<4143> +proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs <> -# Kalianpur 1937 -<4144> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <> -# Kalianpur 1962 -<4145> +proj=longlat +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +no_defs <> -# Kalianpur 1975 -<4146> +proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs <> -# Hanoi 1972 -<4147> +proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs <> -# Hartebeesthoek94 -<4148> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# CH1903 -<4149> +proj=longlat +ellps=bessel +no_defs <> -# CH1903+ -<4150> +proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs <> -# CHTRF95 -<4151> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# NAD83(HARN) -<4152> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Rassadiran -<4153> +proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs <> -# ED50(ED77) -<4154> +proj=longlat +ellps=intl +no_defs <> -# Dabola 1981 -<4155> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs <> -# S-JTSK -<4156> +proj=longlat +ellps=bessel +no_defs <> -# Mount Dillon -<4157> +proj=longlat +a=6378293.63683822 +b=6356617.979337744 +no_defs <> -# Naparima 1955 -<4158> +proj=longlat +ellps=intl +no_defs <> -# ELD79 -<4159> +proj=longlat +ellps=intl +no_defs <> -# Chos Malal 1914 -<4160> +proj=longlat +ellps=intl +no_defs <> -# Pampa del Castillo -<4161> +proj=longlat +ellps=intl +no_defs <> -# Korean 1985 -<4162> +proj=longlat +ellps=bessel +no_defs <> -# Yemen NGN96 -<4163> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# South Yemen -<4164> +proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs <> -# Bissau -<4165> +proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs <> -# Korean 1995 -<4166> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# NZGD2000 -<4167> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Accra -<4168> +proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs <> -# American Samoa 1962 -<4169> +proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs <> -# SIRGAS -<4170> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# RGF93 -<4171> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# POSGAR -<4172> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# IRENET95 -<4173> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Sierra Leone 1924 -<4174> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs <> -# Sierra Leone 1968 -<4175> +proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs <> -# Australian Antarctic -<4176> +proj=longlat +ellps=GRS80 +no_defs <> -# Pulkovo 1942(83) -<4178> +proj=longlat +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +no_defs <> -# Pulkovo 1942(58) -<4179> +proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs <> -# EST97 -<4180> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Luxembourg 1930 -<4181> +proj=longlat +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +no_defs <> -# Azores Occidental 1939 -<4182> +proj=longlat +ellps=intl +no_defs <> -# Azores Central 1948 -<4183> +proj=longlat +ellps=intl +no_defs <> -# Azores Oriental 1940 -<4184> +proj=longlat +ellps=intl +no_defs <> -# Madeira 1936 -<4185> +proj=longlat +ellps=intl +no_defs <> -# OSNI 1952 -<4188> +proj=longlat +ellps=airy +no_defs <> -# REGVEN -<4189> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# POSGAR 98 -<4190> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Albanian 1987 -<4191> +proj=longlat +ellps=krass +no_defs <> -# Douala 1948 -<4192> +proj=longlat +ellps=intl +no_defs <> -# Manoca 1962 -<4193> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs <> -# Qornoq 1927 -<4194> +proj=longlat +ellps=intl +no_defs <> -# Scoresbysund 1952 -<4195> +proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs <> -# Ammassalik 1958 -<4196> +proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs <> -# Garoua -<4197> +proj=longlat +ellps=clrk80 +no_defs <> -# Kousseri -<4198> +proj=longlat +ellps=clrk80 +no_defs <> -# Egypt 1930 -<4199> +proj=longlat +ellps=intl +no_defs <> -# Pulkovo 1995 -<4200> +proj=longlat +ellps=krass +no_defs <> -# Adindan -<4201> +proj=longlat +ellps=clrk80 +no_defs <> -# AGD66 -<4202> +proj=longlat +ellps=aust_SA +no_defs <> -# AGD84 -<4203> +proj=longlat +ellps=aust_SA +no_defs <> -# Ain el Abd -<4204> +proj=longlat +ellps=intl +no_defs <> -# Afgooye -<4205> +proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs <> -# Agadez -<4206> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Lisbon -<4207> +proj=longlat +ellps=intl +no_defs <> -# Aratu -<4208> +proj=longlat +ellps=intl +no_defs <> -# Arc 1950 -<4209> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs <> -# Arc 1960 -<4210> +proj=longlat +ellps=clrk80 +no_defs <> -# Batavia -<4211> +proj=longlat +ellps=bessel +no_defs <> -# Barbados 1938 -<4212> +proj=longlat +ellps=clrk80 +no_defs <> -# Beduaram -<4213> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Beijing 1954 -<4214> +proj=longlat +ellps=krass +no_defs <> -# Belge 1950 -<4215> +proj=longlat +ellps=intl +no_defs <> -# Bermuda 1957 -<4216> +proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +no_defs <> -# Bogota 1975 -<4218> +proj=longlat +ellps=intl +no_defs <> -# Bukit Rimpah -<4219> +proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs <> -# Camacupa -<4220> +proj=longlat +ellps=clrk80 +no_defs <> -# Campo Inchauspe -<4221> +proj=longlat +ellps=intl +no_defs <> -# Cape -<4222> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs <> -# Carthage -<4223> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Chua -<4224> +proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs <> -# Corrego Alegre -<4225> +proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +no_defs <> -# Cote d'Ivoire -<4226> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Deir ez Zor -<4227> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Douala -<4228> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Egypt 1907 -<4229> +proj=longlat +ellps=helmert +no_defs <> -# ED50 -<4230> +proj=longlat +ellps=intl +no_defs <> -# ED87 -<4231> +proj=longlat +ellps=intl +towgs84=-82.981,-99.719,-110.709,-0.5076,0.1503,0.3898,-0.3143 +no_defs <> -# Fahud -<4232> +proj=longlat +ellps=clrk80 +no_defs <> -# Gandajika 1970 -<4233> +proj=longlat +ellps=intl +no_defs <> -# Garoua -<4234> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Guyane Francaise -<4235> +proj=longlat +ellps=intl +no_defs <> -# Hu Tzu Shan -<4236> +proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs <> -# HD72 -<4237> +proj=longlat +ellps=GRS67 +no_defs <> -# ID74 -<4238> +proj=longlat +a=6378160 +b=6356774.50408554 +no_defs <> -# Indian 1954 -<4239> +proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +no_defs <> -# Indian 1975 -<4240> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <> -# Jamaica 1875 -<4241> +proj=longlat +ellps=clrk80 +no_defs <> -# JAD69 -<4242> +proj=longlat +ellps=clrk66 +no_defs <> -# Kalianpur 1880 -<4243> +proj=longlat +a=6377299.36559538 +b=6356098.357204817 +no_defs <> -# Kandawala -<4244> +proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs84=-97,787,86,0,0,0,0 +no_defs <> -# Kertau -<4245> +proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs <> -# KOC -<4246> +proj=longlat +ellps=clrk80 +no_defs <> -# La Canoa -<4247> +proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs <> -# PSAD56 -<4248> +proj=longlat +ellps=intl +no_defs <> -# Lake -<4249> +proj=longlat +ellps=intl +no_defs <> -# Leigon -<4250> +proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs <> -# Liberia 1964 -<4251> +proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs <> -# Lome -<4252> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Luzon 1911 -<4253> +proj=longlat +ellps=clrk66 +no_defs <> -# Hito XVIII 1963 -<4254> +proj=longlat +ellps=intl +towgs84=18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013 +no_defs <> -# Herat North -<4255> +proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs <> -# Mahe 1971 -<4256> +proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs <> -# Makassar -<4257> +proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs <> -# ETRS89 -<4258> +proj=longlat +ellps=GRS80 +no_defs <> -# Malongo 1987 -<4259> +proj=longlat +ellps=intl +no_defs <> -# Manoca -<4260> +proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs <> -# Merchich -<4261> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs <> -# Massawa -<4262> +proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs <> -# Minna -<4263> +proj=longlat +ellps=clrk80 +no_defs <> -# Mhast -<4264> +proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs <> -# Monte Mario -<4265> +proj=longlat +ellps=intl +no_defs <> -# M'poraloko -<4266> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# NAD27 -<4267> +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs <> -# NAD27 Michigan -<4268> +proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs <> -# NAD83 -<4269> +proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs <> -# Nahrwan 1967 -<4270> +proj=longlat +ellps=clrk80 +no_defs <> -# Naparima 1972 -<4271> +proj=longlat +ellps=intl +no_defs <> -# NZGD49 -<4272> +proj=longlat +ellps=intl +no_defs <> -# NGO 1948 -<4273> +proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs <> -# Datum 73 -<4274> +proj=longlat +ellps=intl +no_defs <> -# NTF -<4275> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs <> -# NSWC 9Z-2 -<4276> +proj=longlat +ellps=WGS66 +no_defs <> -# OSGB 1936 -<4277> +proj=longlat +ellps=airy +no_defs <> -# OSGB70 -<4278> +proj=longlat +ellps=airy +no_defs <> -# OS(SN)80 -<4279> +proj=longlat +ellps=airy +no_defs <> -# Padang -<4280> +proj=longlat +ellps=bessel +no_defs <> -# Palestine 1923 -<4281> +proj=longlat +a=6378300.789 +b=6356566.435 +no_defs <> -# Pointe Noire -<4282> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# GDA94 -<4283> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Pulkovo 1942 -<4284> +proj=longlat +ellps=krass +no_defs <> -# Qatar 1974 -<4285> +proj=longlat +ellps=intl +no_defs <> -# Qatar 1948 -<4286> +proj=longlat +ellps=helmert +no_defs <> -# Qornoq -<4287> +proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs <> -# Loma Quintana -<4288> +proj=longlat +ellps=intl +no_defs <> -# Amersfoort -<4289> +proj=longlat +ellps=bessel +no_defs <> -# SAD69 -<4291> +proj=longlat +ellps=GRS67 +no_defs <> -# Sapper Hill 1943 -<4292> +proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs <> -# Schwarzeck -<4293> +proj=longlat +ellps=bess_nam +no_defs <> -# Segora -<4294> +proj=longlat +ellps=bessel +no_defs <> -# Serindung -<4295> +proj=longlat +ellps=bessel +no_defs <> -# Sudan -<4296> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Tananarive -<4297> +proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs <> -# Timbalai 1948 -<4298> +proj=longlat +ellps=evrstSS +no_defs <> -# TM65 -<4299> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs <> -# TM75 -<4300> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs <> -# Tokyo -<4301> +proj=longlat +ellps=bessel +no_defs <> -# Trinidad 1903 -<4302> +proj=longlat +a=6378293.63683822 +b=6356617.979337744 +towgs84=-61.702,284.488,472.052,0,0,0,0 +no_defs <> -# TC(1948) -<4303> +proj=longlat +ellps=helmert +no_defs <> -# Voirol 1875 -<4304> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs <> -# Bern 1938 -<4306> +proj=longlat +ellps=bessel +no_defs <> -# Nord Sahara 1959 -<4307> +proj=longlat +ellps=clrk80 +no_defs <> -# RT38 -<4308> +proj=longlat +ellps=bessel +no_defs <> -# Yacare -<4309> +proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs <> -# Yoff -<4310> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> -# Zanderij -<4311> +proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs <> -# MGI -<4312> +proj=longlat +ellps=bessel +no_defs <> -# Belge 1972 -<4313> +proj=longlat +ellps=intl +no_defs <> -# DHDN -<4314> +proj=longlat +ellps=bessel +no_defs <> -# Conakry 1905 -<4315> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs <> -# Dealul Piscului 1933 -<4316> +proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +no_defs <> -# Dealul Piscului 1970 -<4317> +proj=longlat +ellps=krass +no_defs <> -# NGN -<4318> +proj=longlat +ellps=WGS84 +no_defs <> -# KUDAMS -<4319> +proj=longlat +ellps=GRS80 +no_defs <> -# WGS 72 -<4322> +proj=longlat +ellps=WGS72 +no_defs <> -# WGS 72BE -<4324> +proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs <> -# WGS 84 -<4326> +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs <> -# Anguilla 1957 -<4600> +proj=longlat +ellps=clrk80 +no_defs <> -# Antigua 1943 -<4601> +proj=longlat +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +no_defs <> -# Dominica 1945 -<4602> +proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs <> -# Grenada 1953 -<4603> +proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs <> -# Montserrat 1958 -<4604> +proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs <> -# St. Kitts 1955 -<4605> +proj=longlat +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +no_defs <> -# St. Lucia 1955 -<4606> +proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs <> -# St. Vincent 1945 -<4607> +proj=longlat +ellps=clrk80 +no_defs <> -# NAD27(76) -<4608> +proj=longlat +ellps=clrk66 +no_defs <> -# NAD27(CGQ77) -<4609> +proj=longlat +ellps=clrk66 +no_defs <> -# Xian 1980 -<4610> +proj=longlat +a=6378140 +b=6356755.288157528 +no_defs <> -# Hong Kong 1980 -<4611> +proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs <> -# JGD2000 -<4612> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Segara -<4613> +proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs <> -# QND95 -<4614> +proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +no_defs <> -# Porto Santo -<4615> +proj=longlat +ellps=intl +no_defs <> -# Selvagem Grande -<4616> +proj=longlat +ellps=intl +no_defs <> -# NAD83(CSRS) -<4617> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> -# Bern 1898 (Bern) -<4801> +proj=longlat +ellps=bessel +pm=bern +no_defs <> -# Bogota 1975 (Bogota) -<4802> +proj=longlat +ellps=intl +pm=bogota +no_defs <> -# Lisbon (Lisbon) -<4803> +proj=longlat +ellps=intl +pm=lisbon +no_defs <> -# Makassar (Jakarta) -<4804> +proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs <> -# MGI (Ferro) -<4805> +proj=longlat +ellps=bessel +pm=ferro +no_defs <> -# Monte Mario (Rome) -<4806> +proj=longlat +ellps=intl +pm=rome +no_defs <> -# NTF (Paris) -<4807> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs <> -# Padang (Jakarta) -<4808> +proj=longlat +ellps=bessel +pm=jakarta +no_defs <> -# Belge 1950 (Brussels) -<4809> +proj=longlat +ellps=intl +pm=brussels +no_defs <> -# Tananarive (Paris) -<4810> +proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs <> -# Voirol 1875 (Paris) -<4811> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs <> -# Batavia (Jakarta) -<4813> +proj=longlat +ellps=bessel +pm=jakarta +no_defs <> -# RT38 (Stockholm) -<4814> +proj=longlat +ellps=bessel +pm=stockholm +no_defs <> -# Greek (Athens) -<4815> +proj=longlat +ellps=bessel +pm=athens +no_defs <> -# Carthage (Paris) -<4816> +proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs <> -# NGO 1948 (Oslo) -<4817> +proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs <> -# S-JTSK (Ferro) -<4818> +proj=longlat +ellps=bessel +pm=ferro +no_defs <> -# Nord Sahara 1959 (Paris) -<4819> +proj=longlat +ellps=clrk80 +pm=paris +no_defs <> -# Segara (Jakarta) -<4820> +proj=longlat +ellps=bessel +pm=jakarta +no_defs <> -# ATF (Paris) -<4901> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs <> -# NDG (Paris) -<4902> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs <> -# Madrid 1870 (Madrid) -<4903> +proj=longlat +a=6378298.3 +b=6356657.142669562 +pm=madrid +no_defs <> -# Lisbon 1890 (Lisbon) -<4904> +proj=longlat +ellps=bessel +pm=lisbon +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 4 -<20004> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 5 -<20005> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 6 -<20006> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 7 -<20007> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 8 -<20008> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 9 -<20009> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 10 -<20010> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 11 -<20011> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 12 -<20012> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 13 -<20013> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 14 -<20014> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 15 -<20015> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 16 -<20016> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 17 -<20017> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 18 -<20018> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 19 -<20019> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 20 -<20020> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 21 -<20021> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 22 -<20022> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 23 -<20023> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 24 -<20024> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 25 -<20025> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 26 -<20026> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 27 -<20027> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 28 -<20028> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 29 -<20029> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 30 -<20030> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 31 -<20031> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger zone 32 -<20032> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 4N -<20064> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 5N -<20065> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 6N -<20066> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 7N -<20067> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 8N -<20068> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 9N -<20069> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 10N -<20070> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 11N -<20071> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 12N -<20072> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 13N -<20073> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 14N -<20074> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 15N -<20075> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 16N -<20076> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 17N -<20077> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 18N -<20078> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 19N -<20079> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 20N -<20080> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 21N -<20081> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 22N -<20082> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 23N -<20083> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 24N -<20084> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 25N -<20085> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 26N -<20086> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 27N -<20087> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 28N -<20088> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 29N -<20089> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 30N -<20090> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 31N -<20091> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 / Gauss-Kruger 32N -<20092> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Adindan / UTM zone 37N -<20137> +proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs <> -# Adindan / UTM zone 38N -<20138> +proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs <> -# AGD66 / AMG zone 48 -<20248> +proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 49 -<20249> +proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 50 -<20250> +proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 51 -<20251> +proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 52 -<20252> +proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 53 -<20253> +proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 54 -<20254> +proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 55 -<20255> +proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 56 -<20256> +proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 57 -<20257> +proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs <> -# AGD66 / AMG zone 58 -<20258> +proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 48 -<20348> +proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 49 -<20349> +proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 50 -<20350> +proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 51 -<20351> +proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 52 -<20352> +proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 53 -<20353> +proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 54 -<20354> +proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 55 -<20355> +proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 56 -<20356> +proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 57 -<20357> +proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs <> -# AGD84 / AMG zone 58 -<20358> +proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs <> -# Ain el Abd / UTM zone 37N -<20437> +proj=utm +zone=37 +ellps=intl +units=m +no_defs <> -# Ain el Abd / UTM zone 38N -<20438> +proj=utm +zone=38 +ellps=intl +units=m +no_defs <> -# Ain el Abd / UTM zone 39N -<20439> +proj=utm +zone=39 +ellps=intl +units=m +no_defs <> -# Ain el Abd / Bahrain Grid -<20499> +proj=utm +zone=39 +ellps=intl +units=m +no_defs <> -# Afgooye / UTM zone 38N -<20538> +proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs <> -# Afgooye / UTM zone 39N -<20539> +proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs <> -# Lisbon (Lisbon)/Portuguese National Grid -<20790> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +pm=lisbon +units=m +no_defs <> -# Lisbon (Lisbon)/Portuguese Grid -<20791> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +pm=lisbon +units=m +no_defs <> -# Aratu / UTM zone 22S -<20822> +proj=utm +zone=22 +south +ellps=intl +units=m +no_defs <> -# Aratu / UTM zone 23S -<20823> +proj=utm +zone=23 +south +ellps=intl +units=m +no_defs <> -# Aratu / UTM zone 24S -<20824> +proj=utm +zone=24 +south +ellps=intl +units=m +no_defs <> -# Arc 1950 / UTM zone 34S -<20934> +proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs <> -# Arc 1950 / UTM zone 35S -<20935> +proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs <> -# Arc 1950 / UTM zone 36S -<20936> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs <> -# Arc 1960 / UTM zone 35S -<21035> +proj=utm +zone=35 +south +ellps=clrk80 +units=m +no_defs <> -# Arc 1960 / UTM zone 36S -<21036> +proj=utm +zone=36 +south +ellps=clrk80 +units=m +no_defs <> -# Arc 1960 / UTM zone 37S -<21037> +proj=utm +zone=37 +south +ellps=clrk80 +units=m +no_defs <> -# Arc 1960 / UTM zone 35N -<21095> +proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs <> -# Arc 1960 / UTM zone 36N -<21096> +proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs <> -# Arc 1960 / UTM zone 37N -<21097> +proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs <> -# Batavia (Jakarta) / NEIEZ -<21100> +proj=merc +lat_ts=0 +lon_0=216.8077194444444 +k=0.997000 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs <> -# Batavia / UTM zone 48S -<21148> +proj=utm +zone=48 +south +ellps=bessel +units=m +no_defs <> -# Batavia / UTM zone 49S -<21149> +proj=utm +zone=49 +south +ellps=bessel +units=m +no_defs <> -# Batavia / UTM zone 50S -<21150> +proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs <> -# Barbados 1938 / British West Indies Grid -<21291> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <> -# Barbados 1938 / Barbados National Grid -<21292> +proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.999999 +x_0=30000 +y_0=75000 +ellps=clrk80 +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 13 -<21413> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 14 -<21414> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 15 -<21415> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 16 -<21416> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 17 -<21417> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 18 -<21418> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 19 -<21419> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 20 -<21420> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 21 -<21421> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 22 -<21422> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger zone 23 -<21423> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 75E -<21453> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 81E -<21454> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 87E -<21455> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 93E -<21456> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 99E -<21457> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 105E -<21458> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 111E -<21459> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 117E -<21460> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 123E -<21461> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 129E -<21462> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger CM 135E -<21463> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 13N -<21473> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 14N -<21474> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 15N -<21475> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 16N -<21476> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 17N -<21477> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 18N -<21478> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 19N -<21479> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 20N -<21480> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 21N -<21481> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 22N -<21482> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Beijing 1954 / Gauss-Kruger 23N -<21483> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Belge 1950 (Brussels) / Belge Lambert 50 -<21500> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.367975 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs <> -# Bern 1898 (Bern) / LV03C -<21780> +proj=omerc +lat_0=46.95240555555556 +lonc=7.439583333333333 +alpha=90 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=bern +units=m +no_defs <> -# CH1903 / LV03 -<21781> +proj=omerc +lat_0=46.95240555555556 +lonc=7.439583333333333 +alpha=90 +k=1 +x_0=600000 +y_0=200000 +ellps=bessel +units=m +no_defs <> -# Bogota 1975 / UTM zone 17N -<21817> +proj=utm +zone=17 +ellps=intl +units=m +no_defs <> -# Bogota 1975 / UTM zone 18N -<21818> +proj=utm +zone=18 +ellps=intl +units=m +no_defs <> -# Bogota 1975 / Colombia West zone -<21891> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs <> -# Bogota 1975 / Colombia Bogota zone -<21892> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs <> -# Bogota 1975 / Colombia East Central zone -<21893> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs <> -# Bogota 1975 / Colombia East -<21894> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs <> -# Camacupa / UTM zone 32S -<22032> +proj=utm +zone=32 +south +ellps=clrk80 +units=m +no_defs <> -# Camacupa / UTM zone 33S -<22033> +proj=utm +zone=33 +south +ellps=clrk80 +units=m +no_defs <> -# Camacupa / TM 11.30 SE -<22091> +proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# Camacupa / TM 12 SE -<22092> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> -# Campo Inchauspe / Argentina 1 -<22191> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Campo Inchauspe / Argentina 2 -<22192> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Campo Inchauspe / Argentina 3 -<22193> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Campo Inchauspe / Argentina 4 -<22194> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Campo Inchauspe / Argentina 5 -<22195> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Campo Inchauspe / Argentina 6 -<22196> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Campo Inchauspe / Argentina 7 -<22197> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Cape / UTM zone 34S -<22234> +proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs <> -# Cape / UTM zone 35S -<22235> +proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs <> -# Cape / UTM zone 36S -<22236> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs <> -# South African Coordinate System zone 15 -# South African Coordinate System zone 17 -# South African Coordinate System zone 19 -# South African Coordinate System zone 21 -# South African Coordinate System zone 23 -# South African Coordinate System zone 25 -# South African Coordinate System zone 27 -# South African Coordinate System zone 29 -# South African Coordinate System zone 31 -# South African Coordinate System zone 33 -# Carthage (Paris) / Tunisia Mining Grid -# Carthage / UTM zone 32N -<22332> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Carthage / Nord Tunisie -<22391> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Carthage / Sud Tunisie -<22392> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Corrego Alegre / UTM zone 23S -<22523> +proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre / UTM zone 24S -<22524> +proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> -# Deir ez Zor / Levant Zone -<22700> +proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Deir ez Zor / Syria Lambert -<22770> +proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Deir ez Zor / Levant Stereographic -<22780> +proj=stere +lat_0=34.2 +lon_0=39.15 +k=0.999534 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Douala / UTM zone 32N -<22832> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Egypt 1907 / Blue Belt -<22991> +proj=tmerc +lat_0=30 +lon_0=35 +k=1.000000 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m +no_defs <> -# Egypt 1907 / Red Belt -<22992> +proj=tmerc +lat_0=30 +lon_0=31 +k=1.000000 +x_0=615000 +y_0=810000 +ellps=helmert +units=m +no_defs <> -# Egypt 1907 / Purple Belt -<22993> +proj=tmerc +lat_0=30 +lon_0=27 +k=1.000000 +x_0=700000 +y_0=200000 +ellps=helmert +units=m +no_defs <> -# Egypt 1907 / Extended Purple Belt -<22994> +proj=tmerc +lat_0=30 +lon_0=27 +k=1.000000 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m +no_defs <> -# ED50 / UTM zone 28N -<23028> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 29N -<23029> +proj=utm +zone=29 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 30N -<23030> +proj=utm +zone=30 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 31N -<23031> +proj=utm +zone=31 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 32N -<23032> +proj=utm +zone=32 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 33N -<23033> +proj=utm +zone=33 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 34N -<23034> +proj=utm +zone=34 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 35N -<23035> +proj=utm +zone=35 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 36N -<23036> +proj=utm +zone=36 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 37N -<23037> +proj=utm +zone=37 +ellps=intl +units=m +no_defs <> -# ED50 / UTM zone 38N -<23038> +proj=utm +zone=38 +ellps=intl +units=m +no_defs <> -# ED50 / TM 0 N -<23090> +proj=tmerc +lat_0=0 +lon_0=0 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# ED50 / TM 5 NE -<23095> +proj=tmerc +lat_0=0 +lon_0=5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Fahud / UTM zone 39N -<23239> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs <> -# Fahud / UTM zone 40N -<23240> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> -# Garoua / UTM zone 33N -<23433> +proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# HD72 / EOV -<23700> +proj=omerc +lat_0=47.14439372222222 +lonc=19.04857177777778 +alpha=90 +k=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +units=m +no_defs <> -# ID74 / UTM zone 46N -<23846> +proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 47N -<23847> +proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 48N -<23848> +proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 49N -<23849> +proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 50N -<23850> +proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 51N -<23851> +proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 52N -<23852> +proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 53N -<23853> +proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 46S -<23886> +proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 47S -<23887> +proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 48S -<23888> +proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 49S -<23889> +proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 50S -<23890> +proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 51S -<23891> +proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 52S -<23892> +proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 53S -<23893> +proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# ID74 / UTM zone 54S -<23894> +proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> -# Indian 1954 / UTM zone 46N -<23946> +proj=utm +zone=46 +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> -# Indian 1954 / UTM zone 47N -<23947> +proj=utm +zone=47 +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> -# Indian 1954 / UTM zone 48N -<23948> +proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> -# Indian 1975 / UTM zone 47N -<24047> +proj=utm +zone=47 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs <> -# Indian 1975 / UTM zone 48N -<24048> +proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs <> -# Jamaica 1875 / Jamaica (Old Grid) -<24100> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49575 +y_0=121918.906 +ellps=clrk80 +to_meter=0.304797265 +no_defs <> -# JAD69 / Jamaica National Grid -<24200> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m +no_defs <> -# Kalianpur 1937 / UTM zone 45N -<24305> +proj=utm +zone=45 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs <> -# Kalianpur 1937 / UTM zone 46N -<24306> +proj=utm +zone=46 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs <> -# Kalianpur 1962 / UTM zone 41N -<24311> +proj=utm +zone=41 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1962 / UTM zone 42N -<24312> +proj=utm +zone=42 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1962 / UTM zone 43N -<24313> +proj=utm +zone=43 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 42N -<24342> +proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 43N -<24343> +proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 44N -<24344> +proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 45N -<24345> +proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 46N -<24346> +proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / UTM zone 47N -<24347> +proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1880 / India zone 0 -<24370> +proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1880 / India zone I -<24371> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1880 / India zone IIa -<24372> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1880 / India zone III -<24373> +proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1880 / India zone IV -<24374> +proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1937 / India zone IIb -<24375> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs <> -# Kalianpur 1962 / India zone I -<24376> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1962 / India zone IIa -<24377> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / India zone I -<24378> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / India zone IIa -<24379> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / India zone IIb -<24380> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1975 / India zone III -<24381> +proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kalianpur 1880 / India zone IIb -<24382> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs <> -# Kalianpur 1975 / India zone IV -<24383> +proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> -# Kertau / Singapore Grid -<24500> +proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau / UTM zone 47N -<24547> +proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau / UTM zone 48N -<24548> +proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> -# Kertau / R.S.O. Malaya (ch) -<24571> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs <> -# KOC Lambert -<24600> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs <> -# La Canoa / UTM zone 18N -<24718> +proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> -# La Canoa / UTM zone 19N -<24719> +proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> -# La Canoa / UTM zone 20N -<24720> +proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> -# PSAD56 / UTM zone 18N -<24818> +proj=utm +zone=18 +ellps=intl +units=m +no_defs <> -# PSAD56 / UTM zone 19N -<24819> +proj=utm +zone=19 +ellps=intl +units=m +no_defs <> -# PSAD56 / UTM zone 20N -<24820> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> -# PSAD56 / UTM zone 21N -<24821> +proj=utm +zone=21 +ellps=intl +units=m +no_defs <> -# PSAD56 / UTM zone 17S -<24877> +proj=utm +zone=17 +south +ellps=intl +units=m +no_defs <> -# PSAD56 / UTM zone 18S -<24878> +proj=utm +zone=18 +south +ellps=intl +units=m +no_defs <> -# PSAD56 / UTM zone 19S -<24879> +proj=utm +zone=19 +south +ellps=intl +units=m +no_defs <> -# PSAD56 / UTM zone 20S -<24880> +proj=utm +zone=20 +south +ellps=intl +units=m +no_defs <> -# PSAD56 / UTM zone 22S -<24882> +proj=utm +zone=22 +south +ellps=intl +units=m +no_defs <> -# PSAD56 / Peru west zone -<24891> +proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.999830 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m +no_defs <> -# PSAD56 / Peru central zone -<24892> +proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.999330 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m +no_defs <> -# PSAD56 / Peru east zone -<24893> +proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.999530 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m +no_defs <> -# Leigon / Ghana Metre Grid -<25000> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.999750 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs <> -# Lome / UTM zone 31N -<25231> +proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Luzon 1911 / Philippines zone I -<25391> +proj=tmerc +lat_0=0 +lon_0=117 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# Luzon 1911 / Philippines zone II -<25392> +proj=tmerc +lat_0=0 +lon_0=119 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# Luzon 1911 / Philippines zone III -<25393> +proj=tmerc +lat_0=0 +lon_0=121 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# Luzon 1911 / Philippines zone IV -<25394> +proj=tmerc +lat_0=0 +lon_0=123 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# Luzon 1911 / Philippines zone V -<25395> +proj=tmerc +lat_0=0 +lon_0=125 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> -# Makassar (Jakarta) / NEIEZ -<25700> +proj=merc +lat_ts=0 +lon_0=216.8077194444444 +k=0.997000 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs <> -# ETRS89 / UTM zone 28N -<25828> +proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 29N -<25829> +proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 30N -<25830> +proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 31N -<25831> +proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 32N -<25832> +proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 33N -<25833> +proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 34N -<25834> +proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 35N -<25835> +proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 36N -<25836> +proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 37N -<25837> +proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / UTM zone 38N -<25838> +proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / TM Baltic93 -<25884> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# Malongo 1987 / UTM zone 32S -<25932> +proj=utm +zone=32 +south +ellps=intl +units=m +no_defs <> -# Merchich / Nord Maroc -<26191> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> -# Merchich / Sud Maroc -<26192> +proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> -# Merchich / Sahara -<26193> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> -# Massawa / UTM zone 37N -<26237> +proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs <> -# Minna / UTM zone 31N -<26331> +proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs <> -# Minna / UTM zone 32N -<26332> +proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs <> -# Minna / Nigeria West Belt -<26391> +proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.999750 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m +no_defs <> -# Minna / Nigeria Mid Belt -<26392> +proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.999750 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m +no_defs <> -# Minna / Nigeria East Belt -<26393> +proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.999750 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m +no_defs <> -# Mhast / UTM zone 32S -<26432> +proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs <> -# Monte Mario (Rome) / Italy zone 1 -<26591> +proj=tmerc +lat_0=0 +lon_0=21.45233333333333 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs <> -# Monte Mario (Rome) / Italy zone 2 -<26592> +proj=tmerc +lat_0=0 +lon_0=27.45233333333333 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs <> -# M'poraloko / UTM zone 32N -<26632> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# M'poraloko / UTM zone 32S -<26692> +proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs <> -# NAD27 / UTM zone 3N -<26703> +proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 4N -<26704> +proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 5N -<26705> +proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 6N -<26706> +proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 7N -<26707> +proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 8N -<26708> +proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 9N -<26709> +proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 10N -<26710> +proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 11N -<26711> +proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 12N -<26712> +proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 13N -<26713> +proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 14N -<26714> +proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 15N -<26715> +proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 16N -<26716> +proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 17N -<26717> +proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 18N -<26718> +proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 19N -<26719> +proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 20N -<26720> +proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 21N -<26721> +proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / UTM zone 22N -<26722> +proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Alabama East -<26729> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alabama West -<26730> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 1 -<26731> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 2 -<26732> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 3 -<26733> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 4 -<26734> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 5 -<26735> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 6 -<26736> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 7 -<26737> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=213360.4267208534 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 8 -<26738> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 9 -<26739> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Alaska zone 10 -<26740> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / California zone I -<26741> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / California zone II -<26742> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / California zone III -<26743> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / California zone IV -<26744> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / California zone V -<26745> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / California zone VI -<26746> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / California zone VII -<26747> +proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Arizona East -<26748> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Arizona Central -<26749> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Arizona West -<26750> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Arkansas North -<26751> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Arkansas South -<26752> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Colorado North -<26753> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Colorado Central -<26754> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Colorado South -<26755> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Connecticut -<26756> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Delaware -<26757> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Florida East -<26758> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Florida West -<26759> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Florida North -<26760> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Georgia East -<26766> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Georgia West -<26767> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Idaho East -<26768> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Idaho Central -<26769> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Idaho West -<26770> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Illinois East -<26771> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Illinois West -<26772> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Indiana East -<26773> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Indiana West -<26774> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Iowa North -<26775> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Iowa South -<26776> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Kansas North -<26777> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Kansas South -<26778> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Kentucky North -<26779> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Kentucky South -<26780> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Louisiana North -<26781> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Louisiana South -<26782> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Maine East -<26783> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Maine West -<26784> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Maryland -<26785> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Massachusetts Mainland -<26786> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Massachusetts Island -<26787> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Minnesota North -<26791> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Minnesota Central -<26792> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Minnesota South -<26793> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Mississippi East -<26794> +proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.999960 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Mississippi West -<26795> +proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Missouri East -<26796> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Missouri Central -<26797> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Missouri West -<26798> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD Michigan / Michigan East -<26801> +proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999943 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs <> -# NAD Michigan / Michigan Old Central -<26802> +proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs <> -# NAD Michigan / Michigan West -<26803> +proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs <> -# NAD Michigan / Michigan North -<26811> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs <> -# NAD Michigan / Michigan Central -<26812> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs <> -# NAD Michigan / Michigan South -<26813> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs <> -# NAD83 / UTM zone 3N -<26903> +proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 4N -<26904> +proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 5N -<26905> +proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 6N -<26906> +proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 7N -<26907> +proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 8N -<26908> +proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 9N -<26909> +proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 10N -<26910> +proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 11N -<26911> +proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 12N -<26912> +proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 13N -<26913> +proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 14N -<26914> +proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 15N -<26915> +proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 16N -<26916> +proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 17N -<26917> +proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 18N -<26918> +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 19N -<26919> +proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 20N -<26920> +proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 21N -<26921> +proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 22N -<26922> +proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / UTM zone 23N -<26923> +proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alabama East -<26929> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alabama West -<26930> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 1 -<26931> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 2 -<26932> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 3 -<26933> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 4 -<26934> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 5 -<26935> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 6 -<26936> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 7 -<26937> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 8 -<26938> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 9 -<26939> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Alaska zone 10 -<26940> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 1 -<26941> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 2 -<26942> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 3 -<26943> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 4 -<26944> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 5 -<26945> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / California zone 6 -<26946> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arizona East -<26948> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arizona Central -<26949> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arizona West -<26950> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arkansas North -<26951> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Arkansas South -<26952> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Colorado North -<26953> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Colorado Central -<26954> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Colorado South -<26955> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Connecticut -<26956> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Delaware -<26957> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Florida East -<26958> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Florida West -<26959> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Florida North -<26960> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 1 -<26961> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 2 -<26962> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 3 -<26963> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 4 -<26964> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Hawaii zone 5 -<26965> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Georgia East -<26966> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Georgia West -<26967> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Idaho East -<26968> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Idaho Central -<26969> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Idaho West -<26970> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Illinois East -<26971> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Illinois West -<26972> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Indiana East -<26973> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Indiana West -<26974> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Iowa North -<26975> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Iowa South -<26976> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kansas North -<26977> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kansas South -<26978> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kentucky North -<26979> +proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Kentucky South -<26980> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Louisiana North -<26981> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Louisiana South -<26982> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maine East -<26983> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maine West -<26984> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Maryland -<26985> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Massachusetts Mainland -<26986> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Massachusetts Island -<26987> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Michigan North -<26988> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Michigan Central -<26989> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Michigan South -<26990> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota North -<26991> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota Central -<26992> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Minnesota South -<26993> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Mississippi East -<26994> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Mississippi West -<26995> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Missouri East -<26996> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Missouri Central -<26997> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Missouri West -<26998> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# Nahrwan 1967 / UTM zone 38N -<27038> +proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs <> -# Nahrwan 1967 / UTM zone 39N -<27039> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs <> -# Nahrwan 1967 / UTM zone 40N -<27040> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> -# Naparima 1972 / UTM zone 20N -<27120> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> -# NZGD49 / New Zealand Map Grid -<27200> +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +units=m +no_defs <> -# NZGD49 / Mount Eden Circuit -<27205> +proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.999900 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Bay of Plenty Circuit -<27206> +proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Poverty Bay Circuit -<27207> +proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Hawkes Bay Circuit -<27208> +proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Taranaki Circuit -<27209> +proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Tuhirangi Circuit -<27210> +proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Wanganui Circuit -<27211> +proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Wairarapa Circuit -<27212> +proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Wellington Circuit -<27213> +proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Collingwood Circuit -<27214> +proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Nelson Circuit -<27215> +proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Karamea Circuit -<27216> +proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Buller Circuit -<27217> +proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Grey Circuit -<27218> +proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Amuri Circuit -<27219> +proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Marlborough Circuit -<27220> +proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Hokitika Circuit -<27221> +proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Okarito Circuit -<27222> +proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Jacksons Bay Circuit -<27223> +proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Mount Pleasant Circuit -<27224> +proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Gawler Circuit -<27225> +proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Timaru Circuit -<27226> +proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Lindis Peak Circuit -<27227> +proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Mount Nicholas Circuit -<27228> +proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Mount York Circuit -<27229> +proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Observation Point Circuit -<27230> +proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / North Taieri Circuit -<27231> +proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.999960 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs <> -# NZGD49 / Bluff Circuit -<27232> +proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1.000000 +x_0=300002.66 +y_0=699999.58 +ellps=intl +units=m +no_defs <> -# NZGD49 / UTM zone 58S -<27258> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs <> -# NZGD49 / UTM zone 59S -<27259> +proj=utm +zone=59 +south +ellps=intl +units=m +no_defs <> -# NZGD49 / UTM zone 60S -<27260> +proj=utm +zone=60 +south +ellps=intl +units=m +no_defs <> -# NZGD49 / North Island Grid -<27291> +proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1.000000 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +to_meter=0.9143984146160287 +no_defs <> -# NZGD49 / South Island Grid -<27292> +proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1.000000 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +to_meter=0.9143984146160287 +no_defs <> -# NGO 1948 (Oslo) / NGO zone I -<27391> +proj=tmerc +lat_0=58 +lon_0=6.056250000000003 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone II -<27392> +proj=tmerc +lat_0=58 +lon_0=8.389583333333336 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone III -<27393> +proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone IV -<27394> +proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone V -<27395> +proj=tmerc +lat_0=58 +lon_0=16.88958333333334 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone VI -<27396> +proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone VII -<27397> +proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# NGO 1948 (Oslo) / NGO zone VIII -<27398> +proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> -# Datum 73 / UTM zone 29N -<27429> +proj=utm +zone=29 +ellps=intl +units=m +no_defs <> -# Datum 73 / Modified Portuguese Grid -<27492> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs <> -# ATF (Paris) / Nord de Guerre -<27500> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=7.737229170000001 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert Nord France -<27561> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=2.33722917 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert Centre France -<27562> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert Sud France -<27563> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=2.33722917 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert Corse -<27564> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=2.33722917 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert zone I -<27571> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=2.33722917 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert zone II -<27572> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert zone III -<27573> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=2.33722917 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Lambert zone IV -<27574> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=2.33722917 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / France I -<27581> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=2.33722917 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / France II -<27582> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / France III -<27583> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=2.33722917 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / France IV -<27584> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=2.33722917 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Nord France -<27591> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=2.33722917 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Centre France -<27592> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Sud France -<27593> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=2.33722917 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# NTF (Paris) / Corse -<27594> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=2.33722917 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> -# OSGB 1936 / British National Grid -<27700> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs <> -# Palestine 1923 / Palestine Grid -<28191> +proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +units=m +no_defs <> -# Palestine 1923 / Palestine Belt -<28192> +proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1.000000 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +units=m +no_defs <> -# Palestine 1923 / Israeli CS Grid -<28193> +proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +units=m +no_defs <> -# Pointe Noire / UTM zone 32S -<28232> +proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs <> -# GDA94 / MGA zone 48 -<28348> +proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 49 -<28349> +proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 50 -<28350> +proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 51 -<28351> +proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 52 -<28352> +proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 53 -<28353> +proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 54 -<28354> +proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 55 -<28355> +proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 56 -<28356> +proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 57 -<28357> +proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# GDA94 / MGA zone 58 -<28358> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 2 -<28402> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 3 -<28403> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 4 -<28404> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 5 -<28405> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 6 -<28406> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 7 -<28407> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 8 -<28408> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 9 -<28409> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 10 -<28410> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 11 -<28411> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 12 -<28412> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 13 -<28413> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 14 -<28414> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 15 -<28415> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 16 -<28416> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 17 -<28417> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 18 -<28418> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 19 -<28419> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 20 -<28420> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 21 -<28421> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 22 -<28422> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 23 -<28423> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 24 -<28424> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 25 -<28425> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 26 -<28426> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 27 -<28427> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 28 -<28428> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 29 -<28429> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 30 -<28430> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 31 -<28431> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger zone 32 -<28432> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 2N -<28462> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 3N -<28463> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 4N -<28464> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 5N -<28465> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 6N -<28466> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 7N -<28467> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 8N -<28468> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 9N -<28469> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 10N -<28470> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 11N -<28471> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 12N -<28472> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 13N -<28473> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 14N -<28474> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 15N -<28475> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 16N -<28476> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 17N -<28477> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 18N -<28478> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 19N -<28479> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 20N -<28480> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 21N -<28481> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 22N -<28482> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 23N -<28483> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 24N -<28484> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 25N -<28485> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 26N -<28486> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 27N -<28487> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 28N -<28488> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 29N -<28489> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 30N -<28490> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 31N -<28491> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942 / Gauss-Kruger 32N -<28492> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Qatar 1974 / Qatar National Grid -<28600> +proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.999990 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs <> -# Amersfoort / RD Old -<28991> +proj=stere +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Amersfoort / RD New -<28992> +proj=stere +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs <> -# SAD69 / Brazil Polyconic -<29100> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 18N -<29118> +proj=utm +zone=18 +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 19N -<29119> +proj=utm +zone=19 +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 20N -<29120> +proj=utm +zone=20 +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 21N -<29121> +proj=utm +zone=21 +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 22N -<29122> +proj=utm +zone=22 +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 17S -<29177> +proj=utm +zone=17 +south +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 18S -<29178> +proj=utm +zone=18 +south +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 19S -<29179> +proj=utm +zone=19 +south +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 20S -<29180> +proj=utm +zone=20 +south +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 21S -<29181> +proj=utm +zone=21 +south +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 22S -<29182> +proj=utm +zone=22 +south +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 23S -<29183> +proj=utm +zone=23 +south +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 24S -<29184> +proj=utm +zone=24 +south +ellps=GRS67 +units=m +no_defs <> -# SAD69 / UTM zone 25S -<29185> +proj=utm +zone=25 +south +ellps=GRS67 +units=m +no_defs <> -# Sapper Hill 1943 / UTM zone 20S -<29220> +proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs <> -# Sapper Hill 1943 / UTM zone 21S -<29221> +proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs <> -# Schwarzeck / UTM zone 33S -<29333> +proj=utm +zone=33 +south +ellps=bess_nam +units=m +no_defs <> -# South West African Coord. System zone 11 -# South West African Coord. System zone 13 -# South West African Coord. System zone 15 -# South West African Coord. System zone 17 -# South West African Coord. System zone 19 -# South West African Coord. System zone 21 -# South West African Coord. System zone 23 -# South West African Coord. System zone 25 -# Sudan / UTM zone 35N -<29635> +proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Sudan / UTM zone 36N -<29636> +proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Tananarive (Paris) / Laborde Grid -<29700> +proj=omerc +lat_0=-18.9 +lonc=46.43722917000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs <> -# Tananarive / UTM zone 38S -<29738> +proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs <> -# Tananarive / UTM zone 39S -<29739> +proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs <> -# Timbalai 1948 / UTM zone 49N -<29849> +proj=utm +zone=49 +ellps=evrstSS +units=m +no_defs <> -# Timbalai 1948 / UTM zone 50N -<29850> +proj=utm +zone=50 +ellps=evrstSS +units=m +no_defs <> -# Timbalai 1948 / R.S.O. Borneo (ch) -<29871> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +ellps=evrstSS +to_meter=20.11676512155263 +no_defs <> -# Timbalai 1948 / R.S.O. Borneo (ft) -<29872> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +ellps=evrstSS +to_meter=0.3047994715386762 +no_defs <> -# Timbalai 1948 / R.S.O. Borneo (m) -<29873> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +ellps=evrstSS +units=m +no_defs <> -# TM65 / Irish National Grid -<29900> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs <> -# OSNI 1952 / Irish National Grid -<29901> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000000 +x_0=200000 +y_0=250000 +ellps=airy +units=m +no_defs <> -# TM65 / Irish Grid -<29902> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs <> -# TM75 / Irish Grid -<29903> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS I -<30161> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS II -<30162> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS III -<30163> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS IV -<30164> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS V -<30165> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS VI -<30166> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS VII -<30167> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS VIII -<30168> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS IX -<30169> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS X -<30170> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XI -<30171> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XII -<30172> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XIII -<30173> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XIV -<30174> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XV -<30175> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XVI -<30176> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XVII -<30177> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XVIII -<30178> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Tokyo / Japan Plane Rectangular CS XIX -<30179> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Trinidad 1903 / Trinidad Grid -<30200> +proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46380700001 +y_0=65379.0133425 +a=6378293.63683822 +b=6356617.979337744 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.2011661949 +no_defs <> -# TC(1948) / UTM zone 39N -<30339> +proj=utm +zone=39 +ellps=helmert +units=m +no_defs <> -# TC(1948) / UTM zone 40N -<30340> +proj=utm +zone=40 +ellps=helmert +units=m +no_defs <> -# Voirol 1875 / Nord Algerie (ancienne) -<30491> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs <> -# Voirol 1875 / Sud Algerie (ancienne) -<30492> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs <> -# Nord Sahara 1959 / UTM zone 29N -<30729> +proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs <> -# Nord Sahara 1959 / UTM zone 30N -<30730> +proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs <> -# Nord Sahara 1959 / UTM zone 31N -<30731> +proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs <> -# Nord Sahara 1959 / UTM zone 32N -<30732> +proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs <> -# Nord Sahara 1959 / Voirol Unifie Nord -<30791> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs <> -# Nord Sahara 1959 / Voirol Unifie Sud -<30792> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs <> -# RT38 2.5 gon W -<30800> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Yoff / UTM zone 28N -<31028> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_defs <> -# Zanderij / UTM zone 21N -<31121> +proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> -# Zanderij / TM 54 NW -<31154> +proj=tmerc +lat_0=0 +lon_0=-54 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> -# Zanderij / Suriname Old TM -<31170> +proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> -# Zanderij / Suriname TM -<31171> +proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.999900 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> -# MGI / 3-degree Gauss zone 5 -<31265> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / 3-degree Gauss zone 6 -<31266> +proj=tmerc +lat_0=0 +lon_0=18 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / 3-degree Gauss zone 7 -<31267> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / 3-degree Gauss zone 8 -<31268> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / Balkans zone 5 -<31275> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / Balkans zone 6 -<31276> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.999900 +x_0=6500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / Balkans zone 7 -<31277> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999900 +x_0=7500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / Balkans zone 8 -<31278> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999900 +x_0=7500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / Balkans zone 8 -<31279> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999900 +x_0=8500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI (Ferro) / Austria West Zone -<31281> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria Central Zone -<31282> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria East Zone -<31283> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> -# MGI / M28 -<31284> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=150000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / M31 -<31285> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=450000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / M34 -<31286> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=750000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / Austria Lambert -<31287> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +units=m +no_defs <> -# MGI (Ferro) / Austria West Zone -<31291> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria Central Zone -<31292> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> -# MGI (Ferro) / Austria East Zone -<31293> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> -# MGI / M28 -<31294> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=150000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / M31 -<31295> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=450000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / M34 -<31296> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=750000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# MGI / Austria Lambert -<31297> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +units=m +no_defs <> -# Belge 1972 / Belge Lambert 72 -<31300> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m +no_defs <> -# Belge 1972 / Belgian Lambert 72 -<31370> +proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 1 -<31461> +proj=tmerc +lat_0=0 +lon_0=3 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 2 -<31462> +proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 3 -<31463> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 4 -<31464> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DHDN / 3-degree Gauss zone 5 -<31465> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DHDN / Gauss-Kruger zone 2 -<31466> +proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DHDN / Gauss-Kruger zone 3 -<31467> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DHDN / Gauss-Kruger zone 4 -<31468> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# DHDN / Gauss-Kruger zone 5 -<31469> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Conakry 1905 / UTM zone 28N -<31528> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> -# Conakry 1905 / UTM zone 29N -<31529> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> -# Dealul Piscului 1933/ Stereo 33 -<31600> +proj=stere +lat_0=45.9 +lon_0=25.39246588888889 +k=0.999667 +x_0=500000 +y_0=500000 +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +units=m +no_defs <> -# Dealul Piscului 1970/ Stereo 70 -<31700> +proj=stere +lat_0=46 +lon_0=25 +k=0.999750 +x_0=500000 +y_0=500000 +ellps=krass +units=m +no_defs <> -# NGN / UTM zone 38N -<31838> +proj=utm +zone=38 +ellps=WGS84 +units=m +no_defs <> -# NGN / UTM zone 39N -<31839> +proj=utm +zone=39 +ellps=WGS84 +units=m +no_defs <> -# KUDAMS / KTM -<31900> +proj=tmerc +lat_0=0 +lon_0=48 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# SIRGAS / UTM zone 17N -<31986> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 18N -<31987> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 19N -<31988> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 20N -<31989> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 21N -<31990> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 22N -<31991> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 17S -<31992> +proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 18S -<31993> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 19S -<31994> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 20S -<31995> +proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 21S -<31996> +proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 22S -<31997> +proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 23S -<31998> +proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 24S -<31999> +proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# SIRGAS / UTM zone 25S -<32000> +proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> -# NAD27 / Montana North -<32001> +proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Montana Central -<32002> +proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Montana South -<32003> +proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Nebraska North -<32005> +proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Nebraska South -<32006> +proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Nevada East -<32007> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Nevada Central -<32008> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Nevada West -<32009> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New Hampshire -<32010> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New Jersey -<32011> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.999975 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New Mexico East -<32012> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New Mexico Central -<32013> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New Mexico West -<32014> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New York East -<32015> +proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New York Central -<32016> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New York West -<32017> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / New York Long Island -<32018> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / North Carolina -<32019> +proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / North Dakota North -<32020> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / North Dakota South -<32021> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Ohio North -<32022> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Ohio South -<32023> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Oklahoma North -<32024> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Oklahoma South -<32025> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Oregon North -<32026> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Oregon South -<32027> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Pennsylvania North -<32028> +proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Pennsylvania South -<32029> +proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Rhode Island -<32030> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / South Carolina North -<32031> +proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / South Carolina South -<32033> +proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / South Dakota North -<32034> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / South Dakota South -<32035> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Tennessee -<32036> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Texas North -<32037> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Texas North Central -<32038> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Texas Central -<32039> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Texas South Central -<32040> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Texas South -<32041> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Utah North -<32042> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Utah Central -<32043> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Utah South -<32044> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Vermont -<32045> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Virginia North -<32046> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Virginia South -<32047> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Washington North -<32048> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Washington South -<32049> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / West Virginia North -<32050> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / West Virginia South -<32051> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Wisconsin North -<32052> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Wisconsin Central -<32053> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Wisconsin South -<32054> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Wyoming East -<32055> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Wyoming East Central -<32056> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Wyoming West Central -<32057> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Wyoming West -<32058> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / Guatemala Norte -<32061> +proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Guatemala Sur -<32062> +proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / BLM 14N (ftUS) -<32064> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / BLM 15N (ftUS) -<32065> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / BLM 16N (ftUS) -<32066> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / BLM 17N (ftUS) -<32067> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / BLM 14N (feet) -<32074> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / BLM 15N (feet) -<32075> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / BLM 16N (feet) -<32076> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / BLM 17N (feet) -<32077> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD27 / MTM zone 1 -<32081> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 2 -<32082> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 3 -<32083> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 4 -<32084> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 5 -<32085> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / MTM zone 6 -<32086> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD27 / Quebec Lambert -<32098> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD83 / Montana -<32100> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nebraska -<32104> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nevada East -<32107> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nevada Central -<32108> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Nevada West -<32109> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Hampshire -<32110> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Jersey -<32111> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Mexico East -<32112> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Mexico Central -<32113> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New Mexico West -<32114> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New York East -<32115> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New York Central -<32116> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New York West -<32117> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / New York Long Island -<32118> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / North Carolina -<32119> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / North Dakota North -<32120> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / North Dakota South -<32121> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Ohio North -<32122> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Ohio South -<32123> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oklahoma North -<32124> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oklahoma South -<32125> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oregon North -<32126> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Oregon South -<32127> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Pennsylvania North -<32128> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Pennsylvania South -<32129> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Rhode Island -<32130> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / South Carolina -<32133> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / South Dakota North -<32134> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / South Dakota South -<32135> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Tennessee -<32136> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas North -<32137> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas North Central -<32138> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas Central -<32139> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas South Central -<32140> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Texas South -<32141> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Utah North -<32142> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Utah Central -<32143> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Utah South -<32144> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Vermont -<32145> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Virginia North -<32146> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Virginia South -<32147> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Washington North -<32148> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Washington South -<32149> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / West Virginia North -<32150> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / West Virginia South -<32151> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wisconsin North -<32152> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wisconsin Central -<32153> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wisconsin South -<32154> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wyoming East -<32155> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wyoming East Central -<32156> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wyoming West Central -<32157> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Wyoming West -<32158> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Puerto Rico & Virgin Is. -<32161> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / SCoPQ zone 2 -<32180> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 1 -<32181> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 2 -<32182> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 3 -<32183> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 4 -<32184> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 5 -<32185> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 6 -<32186> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 7 -<32187> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 8 -<32188> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 9 -<32189> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 10 -<32190> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 11 -<32191> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 12 -<32192> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 13 -<32193> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 14 -<32194> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 15 -<32195> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 16 -<32196> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / MTM zone 17 -<32197> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NAD83 / Quebec Lambert -<32198> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# WGS 72 / UTM zone 1N -<32201> +proj=utm +zone=1 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 2N -<32202> +proj=utm +zone=2 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 3N -<32203> +proj=utm +zone=3 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 4N -<32204> +proj=utm +zone=4 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 5N -<32205> +proj=utm +zone=5 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 6N -<32206> +proj=utm +zone=6 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 7N -<32207> +proj=utm +zone=7 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 8N -<32208> +proj=utm +zone=8 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 9N -<32209> +proj=utm +zone=9 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 10N -<32210> +proj=utm +zone=10 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 11N -<32211> +proj=utm +zone=11 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 12N -<32212> +proj=utm +zone=12 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 13N -<32213> +proj=utm +zone=13 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 14N -<32214> +proj=utm +zone=14 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 15N -<32215> +proj=utm +zone=15 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 16N -<32216> +proj=utm +zone=16 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 17N -<32217> +proj=utm +zone=17 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 18N -<32218> +proj=utm +zone=18 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 19N -<32219> +proj=utm +zone=19 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 20N -<32220> +proj=utm +zone=20 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 21N -<32221> +proj=utm +zone=21 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 22N -<32222> +proj=utm +zone=22 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 23N -<32223> +proj=utm +zone=23 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 24N -<32224> +proj=utm +zone=24 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 25N -<32225> +proj=utm +zone=25 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 26N -<32226> +proj=utm +zone=26 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 27N -<32227> +proj=utm +zone=27 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 28N -<32228> +proj=utm +zone=28 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 29N -<32229> +proj=utm +zone=29 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 30N -<32230> +proj=utm +zone=30 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 31N -<32231> +proj=utm +zone=31 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 32N -<32232> +proj=utm +zone=32 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 33N -<32233> +proj=utm +zone=33 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 34N -<32234> +proj=utm +zone=34 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 35N -<32235> +proj=utm +zone=35 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 36N -<32236> +proj=utm +zone=36 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 37N -<32237> +proj=utm +zone=37 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 38N -<32238> +proj=utm +zone=38 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 39N -<32239> +proj=utm +zone=39 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 40N -<32240> +proj=utm +zone=40 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 41N -<32241> +proj=utm +zone=41 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 42N -<32242> +proj=utm +zone=42 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 43N -<32243> +proj=utm +zone=43 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 44N -<32244> +proj=utm +zone=44 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 45N -<32245> +proj=utm +zone=45 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 46N -<32246> +proj=utm +zone=46 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 47N -<32247> +proj=utm +zone=47 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 48N -<32248> +proj=utm +zone=48 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 49N -<32249> +proj=utm +zone=49 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 50N -<32250> +proj=utm +zone=50 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 51N -<32251> +proj=utm +zone=51 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 52N -<32252> +proj=utm +zone=52 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 53N -<32253> +proj=utm +zone=53 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 54N -<32254> +proj=utm +zone=54 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 55N -<32255> +proj=utm +zone=55 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 56N -<32256> +proj=utm +zone=56 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 57N -<32257> +proj=utm +zone=57 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 58N -<32258> +proj=utm +zone=58 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 59N -<32259> +proj=utm +zone=59 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 60N -<32260> +proj=utm +zone=60 +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 1S -<32301> +proj=utm +zone=1 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 2S -<32302> +proj=utm +zone=2 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 3S -<32303> +proj=utm +zone=3 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 4S -<32304> +proj=utm +zone=4 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 5S -<32305> +proj=utm +zone=5 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 6S -<32306> +proj=utm +zone=6 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 7S -<32307> +proj=utm +zone=7 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 8S -<32308> +proj=utm +zone=8 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 9S -<32309> +proj=utm +zone=9 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 10S -<32310> +proj=utm +zone=10 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 11S -<32311> +proj=utm +zone=11 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 12S -<32312> +proj=utm +zone=12 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 13S -<32313> +proj=utm +zone=13 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 14S -<32314> +proj=utm +zone=14 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 15S -<32315> +proj=utm +zone=15 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 16S -<32316> +proj=utm +zone=16 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 17S -<32317> +proj=utm +zone=17 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 18S -<32318> +proj=utm +zone=18 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 19S -<32319> +proj=utm +zone=19 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 20S -<32320> +proj=utm +zone=20 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 21S -<32321> +proj=utm +zone=21 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 22S -<32322> +proj=utm +zone=22 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 23S -<32323> +proj=utm +zone=23 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 24S -<32324> +proj=utm +zone=24 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 25S -<32325> +proj=utm +zone=25 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 26S -<32326> +proj=utm +zone=26 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 27S -<32327> +proj=utm +zone=27 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 28S -<32328> +proj=utm +zone=28 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 29S -<32329> +proj=utm +zone=29 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 30S -<32330> +proj=utm +zone=30 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 31S -<32331> +proj=utm +zone=31 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 32S -<32332> +proj=utm +zone=32 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 33S -<32333> +proj=utm +zone=33 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 34S -<32334> +proj=utm +zone=34 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 35S -<32335> +proj=utm +zone=35 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 36S -<32336> +proj=utm +zone=36 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 37S -<32337> +proj=utm +zone=37 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 38S -<32338> +proj=utm +zone=38 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 39S -<32339> +proj=utm +zone=39 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 40S -<32340> +proj=utm +zone=40 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 41S -<32341> +proj=utm +zone=41 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 42S -<32342> +proj=utm +zone=42 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 43S -<32343> +proj=utm +zone=43 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 44S -<32344> +proj=utm +zone=44 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 45S -<32345> +proj=utm +zone=45 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 46S -<32346> +proj=utm +zone=46 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 47S -<32347> +proj=utm +zone=47 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 48S -<32348> +proj=utm +zone=48 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 49S -<32349> +proj=utm +zone=49 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 50S -<32350> +proj=utm +zone=50 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 51S -<32351> +proj=utm +zone=51 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 52S -<32352> +proj=utm +zone=52 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 53S -<32353> +proj=utm +zone=53 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 54S -<32354> +proj=utm +zone=54 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 55S -<32355> +proj=utm +zone=55 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 56S -<32356> +proj=utm +zone=56 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 57S -<32357> +proj=utm +zone=57 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 58S -<32358> +proj=utm +zone=58 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 59S -<32359> +proj=utm +zone=59 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72 / UTM zone 60S -<32360> +proj=utm +zone=60 +south +ellps=WGS72 +units=m +no_defs <> -# WGS 72BE / UTM zone 1N -<32401> +proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 2N -<32402> +proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 3N -<32403> +proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 4N -<32404> +proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 5N -<32405> +proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 6N -<32406> +proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 7N -<32407> +proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 8N -<32408> +proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 9N -<32409> +proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 10N -<32410> +proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 11N -<32411> +proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 12N -<32412> +proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 13N -<32413> +proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 14N -<32414> +proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 15N -<32415> +proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 16N -<32416> +proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 17N -<32417> +proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 18N -<32418> +proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 19N -<32419> +proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 20N -<32420> +proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 21N -<32421> +proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 22N -<32422> +proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 23N -<32423> +proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 24N -<32424> +proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 25N -<32425> +proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 26N -<32426> +proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 27N -<32427> +proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 28N -<32428> +proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 29N -<32429> +proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 30N -<32430> +proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 31N -<32431> +proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 32N -<32432> +proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 33N -<32433> +proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 34N -<32434> +proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 35N -<32435> +proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 36N -<32436> +proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 37N -<32437> +proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 38N -<32438> +proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 39N -<32439> +proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 40N -<32440> +proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 41N -<32441> +proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 42N -<32442> +proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 43N -<32443> +proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 44N -<32444> +proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 45N -<32445> +proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 46N -<32446> +proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 47N -<32447> +proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 48N -<32448> +proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 49N -<32449> +proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 50N -<32450> +proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 51N -<32451> +proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 52N -<32452> +proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 53N -<32453> +proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 54N -<32454> +proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 55N -<32455> +proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 56N -<32456> +proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 57N -<32457> +proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 58N -<32458> +proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 59N -<32459> +proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 60N -<32460> +proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 1S -<32501> +proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 2S -<32502> +proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 3S -<32503> +proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 4S -<32504> +proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 5S -<32505> +proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 6S -<32506> +proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 7S -<32507> +proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 8S -<32508> +proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 9S -<32509> +proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 10S -<32510> +proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 11S -<32511> +proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 12S -<32512> +proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 13S -<32513> +proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 14S -<32514> +proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 15S -<32515> +proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 16S -<32516> +proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 17S -<32517> +proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 18S -<32518> +proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 19S -<32519> +proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 20S -<32520> +proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 21S -<32521> +proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 22S -<32522> +proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 23S -<32523> +proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 24S -<32524> +proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 25S -<32525> +proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 26S -<32526> +proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 27S -<32527> +proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 28S -<32528> +proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 29S -<32529> +proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 30S -<32530> +proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 31S -<32531> +proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 32S -<32532> +proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 33S -<32533> +proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 34S -<32534> +proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 35S -<32535> +proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 36S -<32536> +proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 37S -<32537> +proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 38S -<32538> +proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 39S -<32539> +proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 40S -<32540> +proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 41S -<32541> +proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 42S -<32542> +proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 43S -<32543> +proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 44S -<32544> +proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 45S -<32545> +proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 46S -<32546> +proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 47S -<32547> +proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 48S -<32548> +proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 49S -<32549> +proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 50S -<32550> +proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 51S -<32551> +proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 52S -<32552> +proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 53S -<32553> +proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 54S -<32554> +proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 55S -<32555> +proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 56S -<32556> +proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 57S -<32557> +proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 58S -<32558> +proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 59S -<32559> +proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 72BE / UTM zone 60S -<32560> +proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> -# WGS 84 / UTM zone 1N -<32601> +proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 2N -<32602> +proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 3N -<32603> +proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 4N -<32604> +proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 5N -<32605> +proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 6N -<32606> +proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 7N -<32607> +proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 8N -<32608> +proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 9N -<32609> +proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 10N -<32610> +proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 11N -<32611> +proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 12N -<32612> +proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 13N -<32613> +proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 14N -<32614> +proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 15N -<32615> +proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 16N -<32616> +proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 17N -<32617> +proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 18N -<32618> +proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 19N -<32619> +proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 20N -<32620> +proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 21N -<32621> +proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 22N -<32622> +proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 23N -<32623> +proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 24N -<32624> +proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 25N -<32625> +proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 26N -<32626> +proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 27N -<32627> +proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 28N -<32628> +proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 29N -<32629> +proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 30N -<32630> +proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 31N -<32631> +proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 32N -<32632> +proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 33N -<32633> +proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 34N -<32634> +proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 35N -<32635> +proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 36N -<32636> +proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 37N -<32637> +proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 38N -<32638> +proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 39N -<32639> +proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 40N -<32640> +proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 41N -<32641> +proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 42N -<32642> +proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 43N -<32643> +proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 44N -<32644> +proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 45N -<32645> +proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 46N -<32646> +proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 47N -<32647> +proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 48N -<32648> +proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 49N -<32649> +proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 50N -<32650> +proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 51N -<32651> +proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 52N -<32652> +proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 53N -<32653> +proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 54N -<32654> +proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 55N -<32655> +proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 56N -<32656> +proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 57N -<32657> +proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 58N -<32658> +proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 59N -<32659> +proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 60N -<32660> +proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UPS North -<32661> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 1S -<32701> +proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 2S -<32702> +proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 3S -<32703> +proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 4S -<32704> +proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 5S -<32705> +proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 6S -<32706> +proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 7S -<32707> +proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 8S -<32708> +proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 9S -<32709> +proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 10S -<32710> +proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 11S -<32711> +proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 12S -<32712> +proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 13S -<32713> +proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 14S -<32714> +proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 15S -<32715> +proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 16S -<32716> +proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 17S -<32717> +proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 18S -<32718> +proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 19S -<32719> +proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 20S -<32720> +proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 21S -<32721> +proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 22S -<32722> +proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 23S -<32723> +proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 24S -<32724> +proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 25S -<32725> +proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 26S -<32726> +proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 27S -<32727> +proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 28S -<32728> +proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 29S -<32729> +proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 30S -<32730> +proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 31S -<32731> +proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 32S -<32732> +proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 33S -<32733> +proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 34S -<32734> +proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 35S -<32735> +proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 36S -<32736> +proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 37S -<32737> +proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 38S -<32738> +proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 39S -<32739> +proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 40S -<32740> +proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 41S -<32741> +proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 42S -<32742> +proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 43S -<32743> +proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 44S -<32744> +proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 45S -<32745> +proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 46S -<32746> +proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 47S -<32747> +proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 48S -<32748> +proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 49S -<32749> +proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 50S -<32750> +proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 51S -<32751> +proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 52S -<32752> +proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 53S -<32753> +proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 54S -<32754> +proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 55S -<32755> +proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 56S -<32756> +proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 57S -<32757> +proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 58S -<32758> +proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 59S -<32759> +proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UTM zone 60S -<32760> +proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / UPS South -<32761> +proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# WGS 84 / TM 36 SE -<32766> +proj=tmerc +lat_0=0 +lon_0=36 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Pulkovo 1995 GK Zone 2 -<20002> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 GK Zone 3 -<20003> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 GK Zone 2N -<20062> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1995 GK Zone 3N -<20063> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# La Canoa UTM Zone 21N -<24721> +proj=utm +zone=21 +ellps=intl +units=m +no_defs <> -# NAD 1927 StatePlane Hawaii 1 FIPS 5101 -<26761> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 StatePlane Hawaii 2 FIPS 5102 -<26762> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 StatePlane Hawaii 3 FIPS 5103 -<26763> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 StatePlane Hawaii 4 FIPS 5104 -<26764> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 StatePlane Hawaii 5 FIPS 5105 -<26765> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 StatePlane Michigan North FIPS 2111 -<26788> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 StatePlane Michigan Central FIPS 2112 -<26789> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 StatePlane Michigan South FIPS 2113 -<26790> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# Nord Algerie -<30591> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs <> -# Sud Algerie -<30592> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs <> -# Germany Zone 1 -<31491> +proj=tmerc +lat_0=0 +lon_0=3 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Germany Zone 2 -<31492> +proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Germany Zone 3 -<31493> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Germany Zone 4 -<31494> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Germany Zone 5 -<31495> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> -# NAD 1927 StatePlane Puerto Rico FIPS 5201 -<32059> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 StatePlane Virgin Islands St Croix FIPS 5202 -<32060> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012193 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# Sphere Plate Carree -<53001> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Equidistant Cylindrical -<53002> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Miller Cylindrical -<53003> +proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Mercator -<53004> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Sinusoidal -<53008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Mollweide -<53009> +proj=moll +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Eckert VI -<53010> +proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Eckert V -<53011> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Eckert IV -<53012> +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Eckert III -<53013> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Eckert II -<53014> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Eckert I -<53015> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Gall Stereographic -<53016> +proj=gall +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Behrmann -<53017> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Winkel I -<53018> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Winkel II -<53019> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Polyconic -<53021> +proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Quartic Authalic -<53022> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Loximuthal -<53023> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Bonne -<53024> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Hotine -<53025> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Stereographic -<53026> +proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Equidistant Conic -<53027> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Cassini -<53028> +proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Van der Grinten I -<53029> +proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Robinson -<53030> +proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Two Point Equidistant -<53031> +a=6371000 +b=6371000 +units=m +no_defs <> -# Sphere Azimuthal Equidistant -<53032> +proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs <> -# World Plate Carree -<54001> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Equidistant Cylindrical -<54002> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Miller Cylindrical -<54003> +proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Mercator -<54004> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Sinusoidal -<54008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Mollweide -<54009> +proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Eckert VI -<54010> +proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Eckert V -<54011> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Eckert IV -<54012> +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Eckert III -<54013> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Eckert II -<54014> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Eckert I -<54015> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Gall Stereographic -<54016> +proj=gall +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Behrmann -<54017> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Winkel I -<54018> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Winkel II -<54019> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Polyconic -<54021> +proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Quartic Authalic -<54022> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Loximuthal -<54023> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Bonne -<54024> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Hotine -<54025> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Stereographic -<54026> +proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Equidistant Conic -<54027> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Cassini -<54028> +proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Van der Grinten I -<54029> +proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Robinson -<54030> +proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Two Point Equidistant -<54031> +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# World Azimuthal Equidistant -<54032> +proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# NAD 1927 StatePlane Guam FIPS 5400 -<65061> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000.00000000001 +y_0=50000.00000000001 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Guam FIPS 5400 -<65161> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000 +y_0=50000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# Canada Albers Equal Area Conic -<102001> +proj=aea +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# Canada Lambert Conformal Conic -<102002> +proj=lcc +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# USA Contiguous Albers Equal Area Conic -<102003> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# USA Contiguous Lambert Conformal Conic -<102004> +proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# USA Contiguous Equidistant Conic -<102005> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# Alaska Albers Equal Area Conic -<102006> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# Hawaii Albers Equal Area Conic -<102007> +proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# North America Albers Equal Area Conic -<102008> +proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# North America Lambert Conformal Conic -<102009> +proj=lcc +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# North America Equidistant Conic -<102010> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=60 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# Africa Sinusoidal -<102011> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Asia Lambert Conformal Conic -<102012> +proj=lcc +lat_1=30 +lat_2=62 +lat_0=0 +lon_0=105 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Europe Albers Equal Area Conic -<102013> +proj=aea +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs <> -# Europe Lambert Conformal Conic -<102014> +proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs <> -# South America Lambert Conformal Conic -<102015> +proj=lcc +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs <> -# North Pole Azimuthal Equidistant -<102016> +proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# North Pole Lambert Azimuthal Equal Area -<102017> +proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# North Pole Stereographic -<102018> +proj=stere +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# South Pole Azimuthal Equidistant -<102019> +proj=aeqd +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# South Pole Lambert Azimuthal Equal Area -<102020> +proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# South Pole Stereographic -<102021> +proj=stere +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Africa Albers Equal Area Conic -<102022> +proj=aea +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Africa Equidistant Conic -<102023> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=-23 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Africa Lambert Conformal Conic -<102024> +proj=lcc +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Asia North Albers Equal Area Conic -<102025> +proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Asia North Equidistant Conic -<102026> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=15 +lat_2=65 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Asia North Lambert Conformal Conic -<102027> +proj=lcc +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Asia South Albers Equal Area Conic -<102028> +proj=aea +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Asia South Equidistant Conic -<102029> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=7 +lat_2=-32 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Asia South Lambert Conformal Conic -<102030> +proj=lcc +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# Europe Equidistant Conic -<102031> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=43 +lat_2=62 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs <> -# South America Equidistant Conic -<102032> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=-5 +lat_2=-42 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs <> -# South America Albers Equal Area Conic -<102033> +proj=aea +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m +no_defs <> -# S-JTSK Krovak -<102065> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# S-JTSK Ferro Krovak East North -<102066> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m +no_defs <> -# S-JTSK Krovak East North -<102067> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> -# Monte Mario Italy 1 -<102091> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs <> -# Monte Mario Italy 2 -<102092> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +units=m +no_defs <> -# NGO 1948 Norway Zone 1 -<102101> +proj=tmerc +lat_0=58 +lon_0=6.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 Norway Zone 2 -<102102> +proj=tmerc +lat_0=58 +lon_0=8.389583333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 Norway Zone 3 -<102103> +proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 Norway Zone 4 -<102104> +proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 Norway Zone 5 -<102105> +proj=tmerc +lat_0=58 +lon_0=16.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 Norway Zone 6 -<102106> +proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 Norway Zone 7 -<102107> +proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 Norway Zone 8 -<102108> +proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# RGF 1993 Lambert 93 -<102110> +proj=lcc +lat_1=44 +lat_2=49 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m +no_defs <> -# Old Hawaiian UTM Zone 4N -<102114> +proj=utm +zone=4 +ellps=clrk66 +units=m +no_defs <> -# Old Hawaiian UTM Zone 5N -<102115> +proj=utm +zone=5 +ellps=clrk66 +units=m +no_defs <> -# NAD 1927 Michigan GeoRef Feet US -<102120> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 Michigan GeoRef Feet US -<102121> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1927 Michigan GeoRef Meters -<102122> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> -# NAD 1983 Michigan GeoRef Meters -<102123> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> -# NGO 1948 UTM Zone 32N -<102132> +proj=utm +zone=32 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 UTM Zone 33N -<102133> +proj=utm +zone=33 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 UTM Zone 34N -<102134> +proj=utm +zone=34 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# NGO 1948 UTM Zone 35N -<102135> +proj=utm +zone=35 +a=6377492.018 +b=6356173.508712696 +units=m +no_defs <> -# Hong Kong 1980 Grid -<102140> +proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1.000000 +x_0=836694.05 +y_0=819069.8 +ellps=intl +units=m +no_defs <> -# Hong Kong 1980 UTM Zone 49N -<102141> +proj=utm +zone=49 +ellps=intl +units=m +no_defs <> -# Hong Kong 1980 UTM Zone 50N -<102142> +proj=utm +zone=50 +ellps=intl +units=m +no_defs <> -# Tokyo UTM Zone 51N -<102151> +proj=utm +zone=51 +ellps=bessel +units=m +no_defs <> -# Tokyo UTM Zone 52N -<102152> +proj=utm +zone=52 +ellps=bessel +units=m +no_defs <> -# Tokyo UTM Zone 53N -<102153> +proj=utm +zone=53 +ellps=bessel +units=m +no_defs <> -# Tokyo UTM Zone 54N -<102154> +proj=utm +zone=54 +ellps=bessel +units=m +no_defs <> -# Tokyo UTM Zone 55N -<102155> +proj=utm +zone=55 +ellps=bessel +units=m +no_defs <> -# Tokyo UTM Zone 56N -<102156> +proj=utm +zone=56 +ellps=bessel +units=m +no_defs <> -# Datum 73 Hayford Gauss IGeoE -<102160> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200180.598 +y_0=299913.01 +ellps=intl +units=m +no_defs <> -# Datum 73 Hayford Gauss IPCC -<102161> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs <> -# Graciosa Base SW 1948 UTM Zone 26N -<102162> +proj=utm +zone=26 +ellps=intl +units=m +no_defs <> -# Lisboa Bessel Bonne -<102163> +ellps=bessel +units=m +no_defs <> -# Lisboa Hayford Gauss IGeoE -<102164> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs <> -# Lisboa Hayford Gauss IPCC -<102165> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs <> -# Observ Meteorologico 1939 UTM Zone 25N -<102166> +proj=utm +zone=25 +ellps=intl +units=m +no_defs <> -# Porto Santo 1936 UTM Zone 28N -<102167> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> -# Sao Braz UTM Zone 26N -<102168> +proj=utm +zone=26 +ellps=intl +units=m +no_defs <> -# Selvagem Grande 1938 UTM Zone 28N -<102169> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> -# Nord Maroc Degree -<102191> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# Sud Maroc Degree -<102192> +proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# Sahara Degree -<102193> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Alabama East FIPS 0101 -<102229> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Alabama West FIPS 0102 -<102230> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane California I FIPS 0401 -<102241> +proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane California II FIPS 0402 -<102242> +proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane California III FIPS 0403 -<102243> +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane California IV FIPS 0404 -<102244> +proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane California V FIPS 0405 -<102245> +proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane California VI FIPS 0406 -<102246> +proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Arizona East FIPS 0201 -<102248> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Arizona Central FIPS 0202 -<102249> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Arizona West FIPS 0203 -<102250> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Arkansas North FIPS 0301 -<102251> +proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Arkansas South FIPS 0302 -<102252> +proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Colorado North FIPS 0501 -<102253> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Colorado Central FIPS 0502 -<102254> +proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Colorado South FIPS 0503 -<102255> +proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Connecticut FIPS 0600 -<102256> +proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Delaware FIPS 0700 -<102257> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Florida East FIPS 0901 -<102258> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Florida West FIPS 0902 -<102259> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Florida North FIPS 0903 -<102260> +proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Hawaii 1 FIPS 5101 -<102261> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Hawaii 2 FIPS 5102 -<102262> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Hawaii 3 FIPS 5103 -<102263> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Hawaii 4 FIPS 5104 -<102264> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Hawaii 5 FIPS 5105 -<102265> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Georgia East FIPS 1001 -<102266> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Georgia West FIPS 1002 -<102267> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Idaho East FIPS 1101 -<102268> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Idaho Central FIPS 1102 -<102269> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Idaho West FIPS 1103 -<102270> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Illinois East FIPS 1201 -<102271> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Illinois West FIPS 1202 -<102272> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Indiana East FIPS 1301 -<102273> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Indiana West FIPS 1302 -<102274> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Kansas North FIPS 1501 -<102277> +proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Kansas South FIPS 1502 -<102278> +proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Kentucky North FIPS 1601 -<102279> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Kentucky South FIPS 1602 -<102280> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Louisiana North FIPS 1701 -<102281> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Louisiana South FIPS 1702 -<102282> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Maine East FIPS 1801 -<102283> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Maine West FIPS 1802 -<102284> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Maryland FIPS 1900 -<102285> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Massachusetts Mainland FIPS 2001 -<102286> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Massachusetts Island FIPS 2002 -<102287> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Michigan North FIPS 2111 -<102288> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Michigan Central FIPS 2112 -<102289> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Michigan South FIPS 2113 -<102290> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Minnesota North FIPS 2201 -<102291> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Minnesota Central FIPS 2202 -<102292> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Minnesota South FIPS 2203 -<102293> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Mississippi East FIPS 2301 -<102294> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Mississippi West FIPS 2302 -<102295> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Missouri East FIPS 2401 -<102296> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Missouri Central FIPS 2402 -<102297> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Missouri West FIPS 2403 -<102298> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Montana FIPS 2500 -<102300> +proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Nebraska FIPS 2600 -<102304> +proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Nevada East FIPS 2701 -<102307> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Nevada Central FIPS 2702 -<102308> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Nevada West FIPS 2703 -<102309> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New Hampshire FIPS 2800 -<102310> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New Jersey FIPS 2900 -<102311> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New Mexico East FIPS 3001 -<102312> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New Mexico Central FIPS 3002 -<102313> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New Mexico West FIPS 3003 -<102314> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New York East FIPS 3101 -<102315> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New York Central FIPS 3102 -<102316> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New York West FIPS 3103 -<102317> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane New York Long Island FIPS 3104 -<102318> +proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane North Dakota North FIPS 3301 -<102320> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane North Dakota South FIPS 3302 -<102321> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Ohio North FIPS 3401 -<102322> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Ohio South FIPS 3402 -<102323> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Oklahoma North FIPS 3501 -<102324> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Oklahoma South FIPS 3502 -<102325> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Oregon North FIPS 3601 -<102326> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Oregon South FIPS 3602 -<102327> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Rhode Island FIPS 3800 -<102330> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane South Dakota North FIPS 4001 -<102334> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane South Dakota South FIPS 4002 -<102335> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Tennessee FIPS 4100 -<102336> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Texas North FIPS 4201 -<102337> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Texas North Central FIPS 4202 -<102338> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Texas Central FIPS 4203 -<102339> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Texas South Central FIPS 4204 -<102340> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Texas South FIPS 4205 -<102341> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Utah North FIPS 4301 -<102342> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Utah Central FIPS 4302 -<102343> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Utah South FIPS 4303 -<102344> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Vermont FIPS 4400 -<102345> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Virginia North FIPS 4501 -<102346> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Virginia South FIPS 4502 -<102347> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Washington North FIPS 4601 -<102348> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Washington South FIPS 4602 -<102349> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane West Virginia North FIPS 4701 -<102350> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane West Virginia South FIPS 4702 -<102351> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Wisconsin North FIPS 4801 -<102352> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Wisconsin Central FIPS 4802 -<102353> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Wisconsin South FIPS 4803 -<102354> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Wyoming East FIPS 4901 -<102355> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Wyoming East Central FIPS 4902 -<102356> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Wyoming West Central FIPS 4903 -<102357> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Wyoming West FIPS 4904 -<102358> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> -# NAD 1983 HARN StatePlane Puerto Rico Virgin Islands FIPS 5200 -<102361> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs <> -# Nord Algerie Ancienne Degree -<102491> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# Sud Algerie Ancienne Degree -<102492> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# NTF France I degrees -<102581> +proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# NTF France II degrees -<102582> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# NTF France III degrees -<102583> +proj=lcc +lat_1=44.1 +lat_0=44.1 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# NTF France IV degrees -<102584> +proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356514.999904194 +units=m +no_defs <> -# Nord Algerie Degree -<102591> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs <> -# Sud Algerie Degree -<102592> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs <> -# NAD 1983 StatePlane Alabama East FIPS 0101 Feet -<102629> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alabama West FIPS 0102 Feet -<102630> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 1 FIPS 5001 Feet -<102631> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=4999999.999999999 +y_0=-4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 2 FIPS 5002 Feet -<102632> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 3 FIPS 5003 Feet -<102633> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 4 FIPS 5004 Feet -<102634> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 5 FIPS 5005 Feet -<102635> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 6 FIPS 5006 Feet -<102636> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 7 FIPS 5007 Feet -<102637> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 8 FIPS 5008 Feet -<102638> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 9 FIPS 5009 Feet -<102639> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Alaska 10 FIPS 5010 Feet -<102640> +proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane California I FIPS 0401 Feet -<102641> +proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane California II FIPS 0402 Feet -<102642> +proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane California III FIPS 0403 Feet -<102643> +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane California IV FIPS 0404 Feet -<102644> +proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane California V FIPS 0405 Feet -<102645> +proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane California VI FIPS 0406 Feet -<102646> +proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Arizona East FIPS 0201 Feet -<102648> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Arizona Central FIPS 0202 Feet -<102649> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Arizona West FIPS 0203 Feet -<102650> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Arkansas North FIPS 0301 Feet -<102651> +proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Arkansas South FIPS 0302 Feet -<102652> +proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Colorado North FIPS 0501 Feet -<102653> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Colorado Central FIPS 0502 Feet -<102654> +proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Colorado South FIPS 0503 Feet -<102655> +proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Connecticut FIPS 0600 Feet -<102656> +proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Delaware FIPS 0700 Feet -<102657> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Florida East FIPS 0901 Feet -<102658> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Florida West FIPS 0902 Feet -<102659> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Florida North FIPS 0903 Feet -<102660> +proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Hawaii 1 FIPS 5101 Feet -<102661> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Hawaii 2 FIPS 5102 Feet -<102662> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Hawaii 3 FIPS 5103 Feet -<102663> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Hawaii 4 FIPS 5104 Feet -<102664> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Hawaii 5 FIPS 5105 Feet -<102665> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Georgia East FIPS 1001 Feet -<102666> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Georgia West FIPS 1002 Feet -<102667> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Idaho East FIPS 1101 Feet -<102668> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Idaho Central FIPS 1102 Feet -<102669> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Idaho West FIPS 1103 Feet -<102670> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=799999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Illinois East FIPS 1201 Feet -<102671> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Illinois West FIPS 1202 Feet -<102672> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Indiana East FIPS 1301 Feet -<102673> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Indiana West FIPS 1302 Feet -<102674> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000.0000000001 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Iowa North FIPS 1401 Feet -<102675> +proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Iowa South FIPS 1402 Feet -<102676> +proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Kansas North FIPS 1501 Feet -<102677> +proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Kansas South FIPS 1502 Feet -<102678> +proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Kentucky North FIPS 1601 Feet -<102679> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Kentucky South FIPS 1602 Feet -<102680> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0000000002 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Louisiana North FIPS 1701 Feet -<102681> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Louisiana South FIPS 1702 Feet -<102682> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Maine East FIPS 1801 Feet -<102683> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Maine West FIPS 1802 Feet -<102684> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Maryland FIPS 1900 Feet -<102685> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Massachusetts Mainland FIPS 2001 Feet -<102686> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Massachusetts Island FIPS 2002 Feet -<102687> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Michigan North FIPS 2111 Feet -<102688> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Michigan Central FIPS 2112 Feet -<102689> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000.000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Michigan South FIPS 2113 Feet -<102690> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Minnesota North FIPS 2201 Feet -<102691> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Minnesota Central FIPS 2202 Feet -<102692> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Minnesota South FIPS 2203 Feet -<102693> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Mississippi East FIPS 2301 Feet -<102694> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Mississippi West FIPS 2302 Feet -<102695> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Missouri East FIPS 2401 Feet -<102696> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Missouri Central FIPS 2402 Feet -<102697> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Missouri West FIPS 2403 Feet -<102698> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Montana FIPS 2500 Feet -<102700> +proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Nebraska FIPS 2600 Feet -<102704> +proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Nevada East FIPS 2701 Feet -<102707> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=7999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Nevada Central FIPS 2702 Feet -<102708> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000.0000000002 +y_0=6000000.000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Nevada West FIPS 2703 Feet -<102709> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=799999.9999999999 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New Hampshire FIPS 2800 Feet -<102710> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New Jersey FIPS 2900 Feet -<102711> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New Mexico East FIPS 3001 Feet -<102712> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New Mexico Central FIPS 3002 Feet -<102713> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New Mexico West FIPS 3003 Feet -<102714> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=829999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New York East FIPS 3101 Feet -<102715> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New York Central FIPS 3102 Feet -<102716> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New York West FIPS 3103 Feet -<102717> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane New York Long Island FIPS 3104 Feet -<102718> +proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane North Carolina FIPS 3200 Feet -<102719> +proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2199999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane North Dakota North FIPS 3301 Feet -<102720> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane North Dakota South FIPS 3302 Feet -<102721> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Ohio North FIPS 3401 Feet -<102722> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Ohio South FIPS 3402 Feet -<102723> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Oklahoma North FIPS 3501 Feet -<102724> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Oklahoma South FIPS 3502 Feet -<102725> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Oregon North FIPS 3601 Feet -<102726> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Oregon South FIPS 3602 Feet -<102727> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Pennsylvania North FIPS 3701 Feet -<102728> +proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Pennsylvania South FIPS 3702 Feet -<102729> +proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Rhode Island FIPS 3800 Feet -<102730> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane South Carolina FIPS 3900 Feet -<102733> +proj=lcc +lat_1=32.5 +lat_2=34.83333333333334 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane South Dakota North FIPS 4001 Feet -<102734> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane South Dakota South FIPS 4002 Feet -<102735> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Tennessee FIPS 4100 Feet -<102736> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Texas North FIPS 4201 Feet -<102737> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Texas North Central FIPS 4202 Feet -<102738> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000.0000000001 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Texas Central FIPS 4203 Feet -<102739> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Texas South Central FIPS 4204 Feet -<102740> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000.0000000001 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Texas South FIPS 4205 Feet -<102741> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Utah North FIPS 4301 Feet -<102742> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Utah Central FIPS 4302 Feet -<102743> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Utah South FIPS 4303 Feet -<102744> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Vermont FIPS 4400 Feet -<102745> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Virginia North FIPS 4501 Feet -<102746> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Virginia South FIPS 4502 Feet -<102747> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Washington North FIPS 4601 Feet -<102748> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Washington South FIPS 4602 Feet -<102749> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane West Virginia North FIPS 4701 Feet -<102750> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane West Virginia South FIPS 4702 Feet -<102751> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Wisconsin North FIPS 4801 Feet -<102752> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Wisconsin Central FIPS 4802 Feet -<102753> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Wisconsin South FIPS 4803 Feet -<102754> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Wyoming East FIPS 4901 Feet -<102755> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Wyoming East Central FIPS 4902 Feet -<102756> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=399999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Wyoming West Central FIPS 4903 Feet -<102757> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Wyoming West FIPS 4904 Feet -<102758> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Puerto Rico Virgin Islands FIPS 5200 Feet -<102761> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# NAD 1983 StatePlane Guam FIPS 5400 Feet -<102766> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=49999.99999999999 +y_0=49999.99999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> -# Belge Lambert 1972 -<103300> +proj=lcc +lat_1=49.8333339 +lat_2=51.16666733333333 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m +no_defs <> -# GCS International 1967 -<4023> +proj=longlat +ellps=aust_SA +no_defs <> -# GCS Bern 1898 -<4217> +proj=longlat +ellps=bessel +no_defs <> -# GCS Voirol Unifie 1960 -<4305> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS Montserrat 1958 -<4404> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS Voirol Unifie 1960 Paris -<4812> +proj=longlat +ellps=clrk80 +pm=2.337229166666667 +no_defs <> -# GCS WGS 1966 -<37001> +proj=longlat +ellps=WGS66 +no_defs <> -# GCS Fischer 1960 -<37002> +proj=longlat +a=6378166 +b=6356784.283607107 +no_defs <> -# GCS Fischer 1968 -<37003> +proj=longlat +a=6378150 +b=6356768.337244385 +no_defs <> -# GCS Fischer Modified -<37004> +proj=longlat +ellps=fschr60m +no_defs <> -# GCS Hough 1960 -<37005> +proj=longlat +a=6378270 +b=6356794.343434343 +no_defs <> -# GCS Everest Modified 1969 -<37006> +proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs <> -# GCS Walbeck -<37007> +proj=longlat +a=6376896 +b=6355834.846687363 +no_defs <> -# GCS Sphere ARC INFO -<37008> +proj=longlat +a=6370997 +b=6370997 +no_defs <> -# GCS European 1979 -<37201> +proj=longlat +ellps=intl +no_defs <> -# GCS Everest Bangladesh -<37202> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <> -# GCS Everest India Nepal -<37203> +proj=longlat +a=6377301.243 +b=6356100.230165385 +no_defs <> -# GCS Hjorsey 1955 -<37204> +proj=longlat +ellps=intl +no_defs <> -# GCS Hong Kong 1963 -<37205> +proj=longlat +ellps=intl +no_defs <> -# GCS Oman -<37206> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS South Asia Singapore -<37207> +proj=longlat +ellps=fschr60m +no_defs <> -# GCS Ayabelle -<37208> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS Point 58 -<37211> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS Beacon E 1945 -<37212> +proj=longlat +ellps=intl +no_defs <> -# GCS Tern Island 1961 -<37213> +proj=longlat +ellps=intl +no_defs <> -# GCS Astro 1952 -<37214> +proj=longlat +ellps=intl +no_defs <> -# GCS Bellevue IGN -<37215> +proj=longlat +ellps=intl +no_defs <> -# GCS Canton 1966 -<37216> +proj=longlat +ellps=intl +no_defs <> -# GCS Chatham Island 1971 -<37217> +proj=longlat +ellps=intl +no_defs <> -# GCS DOS 1968 -<37218> +proj=longlat +ellps=intl +no_defs <> -# GCS Easter Island 1967 -<37219> +proj=longlat +ellps=intl +no_defs <> -# GCS Guam 1963 -<37220> +proj=longlat +ellps=clrk66 +no_defs <> -# GCS GUX 1 -<37221> +proj=longlat +ellps=intl +no_defs <> -# GCS Johnston Island 1961 -<37222> +proj=longlat +ellps=intl +no_defs <> -# GCS Carthage Degree -<37223> +proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs <> -# GCS Midway 1961 -<37224> +proj=longlat +ellps=intl +no_defs <> -# GCS Pitcairn 1967 -<37226> +proj=longlat +ellps=intl +no_defs <> -# GCS Santo DOS 1965 -<37227> +proj=longlat +ellps=intl +no_defs <> -# GCS Viti Levu 1916 -<37228> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS Wake Eniwetok 1960 -<37229> +proj=longlat +a=6378270 +b=6356794.343434343 +no_defs <> -# GCS Wake Island 1952 -<37230> +proj=longlat +ellps=intl +no_defs <> -# GCS Anna 1 1965 -<37231> +proj=longlat +ellps=aust_SA +no_defs <> -# GCS Gan 1970 -<37232> +proj=longlat +ellps=intl +no_defs <> -# GCS ISTS 073 1969 -<37233> +proj=longlat +ellps=intl +no_defs <> -# GCS Kerguelen Island 1949 -<37234> +proj=longlat +ellps=intl +no_defs <> -# GCS Reunion -<37235> +proj=longlat +ellps=intl +no_defs <> -# GCS Ascension Island 1958 -<37237> +proj=longlat +ellps=intl +no_defs <> -# GCS DOS 71 4 -<37238> +proj=longlat +ellps=intl +no_defs <> -# GCS Cape Canaveral -<37239> +proj=longlat +ellps=clrk66 +no_defs <> -# GCS Fort Thomas 1955 -<37240> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS Graciosa Base SW 1948 -<37241> +proj=longlat +ellps=intl +no_defs <> -# GCS ISTS 061 1968 -<37242> +proj=longlat +ellps=intl +no_defs <> -# GCS LC5 1961 -<37243> +proj=longlat +ellps=clrk66 +no_defs <> -# GCS Observ Meteorologico 1939 -<37245> +proj=longlat +ellps=intl +no_defs <> -# GCS Pico de Las Nieves -<37246> +proj=longlat +ellps=intl +no_defs <> -# GCS Porto Santo 1936 -<37247> +proj=longlat +ellps=intl +no_defs <> -# GCS Sao Braz -<37249> +proj=longlat +ellps=intl +no_defs <> -# GCS Selvagem Grande 1938 -<37250> +proj=longlat +ellps=intl +no_defs <> -# GCS Tristan 1968 -<37251> +proj=longlat +ellps=intl +no_defs <> -# GCS Samoa 1962 -<37252> +proj=longlat +ellps=clrk66 +no_defs <> -# GCS Camp Area -<37253> +proj=longlat +ellps=intl +no_defs <> -# GCS Deception Island -<37254> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS Gunung Segara -<37255> +proj=longlat +ellps=bessel +no_defs <> -# GCS S42 Hungary -<37257> +proj=longlat +ellps=krass +no_defs <> -# GCS Kusaie 1951 -<37259> +proj=longlat +ellps=intl +no_defs <> -# GCS Alaskan Islands -<37260> +proj=longlat +ellps=clrk66 +no_defs <> -# GCS Assumed Geographic 1 -<104000> +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs <> -# GCS Estonia 1937 -<104101> +proj=longlat +ellps=bessel +no_defs <> -# GCS Hermannskogel -<104102> +proj=longlat +ellps=bessel +no_defs <> -# GCS Sierra Leone 1960 -<104103> +proj=longlat +ellps=clrk80 +no_defs <> -# GCS Hong Kong 1980 -<104104> +proj=longlat +ellps=intl +no_defs <> -# GCS Datum Lisboa Bessel -<104105> +proj=longlat +ellps=bessel +no_defs <> -# GCS Datum Lisboa Hayford -<104106> +proj=longlat +ellps=intl +no_defs <> -# GCS RGF 1993 -<104107> +proj=longlat +ellps=GRS80 +no_defs <> -# GCS NZGD 2000 -<104108> +proj=longlat +ellps=GRS80 +no_defs <> -# GCS Merchich Degree -<104261> +proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs <> -# GCS Voirol 1875 Degree -<104304> +proj=longlat +a=6378249.2 +b=6356514.999904194 +no_defs <> -# GCS Voirol Unifie 1960 Degree -<104305> +proj=longlat +ellps=clrk80 +no_defs <> diff --git a/data/esri.extra b/data/esri.extra deleted file mode 100644 index 611dd660..00000000 --- a/data/esri.extra +++ /dev/null @@ -1,948 +0,0 @@ -# Pulkovo 1995 GK Zone 2 -<20002> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=krass +units=m no_defs <> -# Pulkovo 1995 GK Zone 3 -<20003> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +units=m no_defs <> -# Pulkovo 1995 GK Zone 2N -<20062> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m no_defs <> -# Pulkovo 1995 GK Zone 3N -<20063> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m no_defs <> -# La Canoa UTM Zone 21N -<24721> +proj=utm +zone=21 +ellps=intl +units=m no_defs <> -# NAD 1927 StatePlane Hawaii 1 FIPS 5101 -<26761> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 StatePlane Hawaii 2 FIPS 5102 -<26762> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 StatePlane Hawaii 3 FIPS 5103 -<26763> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 StatePlane Hawaii 4 FIPS 5104 -<26764> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 StatePlane Hawaii 5 FIPS 5105 -<26765> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 StatePlane Michigan North FIPS 2111 -<26788> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 StatePlane Michigan Central FIPS 2112 -<26789> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 StatePlane Michigan South FIPS 2113 -<26790> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# Nord Algerie -<30591> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> -# Sud Algerie -<30592> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> -# Germany Zone 1 -<31491> +proj=tmerc +lat_0=0 +lon_0=3 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m no_defs <> -# Germany Zone 2 -<31492> +proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m no_defs <> -# Germany Zone 3 -<31493> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m no_defs <> -# Germany Zone 4 -<31494> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m no_defs <> -# Germany Zone 5 -<31495> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m no_defs <> -# NAD 1927 StatePlane Puerto Rico FIPS 5201 -<32059> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 StatePlane Virgin Islands St Croix FIPS 5202 -<32060> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012193 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# Sphere Plate Carree -<53001> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Equidistant Cylindrical -<53002> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Miller Cylindrical -<53003> +proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Mercator -<53004> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Sinusoidal -<53008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Mollweide -<53009> +proj=moll +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Eckert VI -<53010> +proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Eckert V -<53011> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Eckert IV -<53012> +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Eckert III -<53013> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Eckert II -<53014> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Eckert I -<53015> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Gall Stereographic -<53016> +proj=gall +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Behrmann -<53017> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Winkel I -<53018> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Winkel II -<53019> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Polyconic -<53021> +proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Quartic Authalic -<53022> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Loximuthal -<53023> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Bonne -<53024> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Hotine -<53025> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Stereographic -<53026> +proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Equidistant Conic -<53027> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Cassini -<53028> +proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Van der Grinten I -<53029> +proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Robinson -<53030> +proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Two Point Equidistant -<53031> +a=6371000 +b=6371000 +units=m no_defs <> -# Sphere Azimuthal Equidistant -<53032> +proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> -# World Plate Carree -<54001> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Equidistant Cylindrical -<54002> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Miller Cylindrical -<54003> +proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Mercator -<54004> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Sinusoidal -<54008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Mollweide -<54009> +proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Eckert VI -<54010> +proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Eckert V -<54011> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Eckert IV -<54012> +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Eckert III -<54013> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Eckert II -<54014> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Eckert I -<54015> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Gall Stereographic -<54016> +proj=gall +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Behrmann -<54017> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Winkel I -<54018> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Winkel II -<54019> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Polyconic -<54021> +proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Quartic Authalic -<54022> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Loximuthal -<54023> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Bonne -<54024> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Hotine -<54025> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Stereographic -<54026> +proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Equidistant Conic -<54027> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Cassini -<54028> +proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Van der Grinten I -<54029> +proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Robinson -<54030> +proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Two Point Equidistant -<54031> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# World Azimuthal Equidistant -<54032> +proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# NAD 1927 StatePlane Guam FIPS 5400 -<65061> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000.00000000001 +y_0=50000.00000000001 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Guam FIPS 5400 -<65161> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000 +y_0=50000 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# Canada Albers Equal Area Conic -<102001> +proj=aea +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# Canada Lambert Conformal Conic -<102002> +proj=lcc +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# USA Contiguous Albers Equal Area Conic -<102003> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# USA Contiguous Lambert Conformal Conic -<102004> +proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# USA Contiguous Equidistant Conic -<102005> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# Alaska Albers Equal Area Conic -<102006> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# Hawaii Albers Equal Area Conic -<102007> +proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# North America Albers Equal Area Conic -<102008> +proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# North America Lambert Conformal Conic -<102009> +proj=lcc +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# North America Equidistant Conic -<102010> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=60 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# Africa Sinusoidal -<102011> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Asia Lambert Conformal Conic -<102012> +proj=lcc +lat_1=30 +lat_2=62 +lat_0=0 +lon_0=105 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Europe Albers Equal Area Conic -<102013> +proj=aea +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> -# Europe Lambert Conformal Conic -<102014> +proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> -# South America Lambert Conformal Conic -<102015> +proj=lcc +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> -# North Pole Azimuthal Equidistant -<102016> +proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# North Pole Lambert Azimuthal Equal Area -<102017> +proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# North Pole Stereographic -<102018> +proj=stere +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# South Pole Azimuthal Equidistant -<102019> +proj=aeqd +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# South Pole Lambert Azimuthal Equal Area -<102020> +proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# South Pole Stereographic -<102021> +proj=stere +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Africa Albers Equal Area Conic -<102022> +proj=aea +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Africa Equidistant Conic -<102023> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=-23 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Africa Lambert Conformal Conic -<102024> +proj=lcc +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Asia North Albers Equal Area Conic -<102025> +proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Asia North Equidistant Conic -<102026> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=15 +lat_2=65 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Asia North Lambert Conformal Conic -<102027> +proj=lcc +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Asia South Albers Equal Area Conic -<102028> +proj=aea +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Asia South Equidistant Conic -<102029> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=7 +lat_2=-32 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Asia South Lambert Conformal Conic -<102030> +proj=lcc +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> -# Europe Equidistant Conic -<102031> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=43 +lat_2=62 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> -# South America Equidistant Conic -<102032> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=-5 +lat_2=-42 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> -# South America Albers Equal Area Conic -<102033> +proj=aea +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> -# S-JTSK Krovak -<102065> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m no_defs <> -# S-JTSK Ferro Krovak East North -<102066> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m no_defs <> -# S-JTSK Krovak East North -<102067> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m no_defs <> -# Monte Mario Italy 1 -<102091> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +units=m no_defs <> -# Monte Mario Italy 2 -<102092> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +units=m no_defs <> -# NGO 1948 Norway Zone 1 -<102101> +proj=tmerc +lat_0=58 +lon_0=6.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 Norway Zone 2 -<102102> +proj=tmerc +lat_0=58 +lon_0=8.389583333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 Norway Zone 3 -<102103> +proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 Norway Zone 4 -<102104> +proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 Norway Zone 5 -<102105> +proj=tmerc +lat_0=58 +lon_0=16.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 Norway Zone 6 -<102106> +proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 Norway Zone 7 -<102107> +proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 Norway Zone 8 -<102108> +proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# RGF 1993 Lambert 93 -<102110> +proj=lcc +lat_1=44 +lat_2=49 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m no_defs <> -# Old Hawaiian UTM Zone 4N -<102114> +proj=utm +zone=4 +ellps=clrk66 +units=m no_defs <> -# Old Hawaiian UTM Zone 5N -<102115> +proj=utm +zone=5 +ellps=clrk66 +units=m no_defs <> -# NAD 1927 Michigan GeoRef Feet US -<102120> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 Michigan GeoRef Feet US -<102121> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1927 Michigan GeoRef Meters -<102122> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=clrk66 +datum=NAD27 +units=m no_defs <> -# NAD 1983 Michigan GeoRef Meters -<102123> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> -# NGO 1948 UTM Zone 32N -<102132> +proj=utm +zone=32 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 UTM Zone 33N -<102133> +proj=utm +zone=33 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 UTM Zone 34N -<102134> +proj=utm +zone=34 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# NGO 1948 UTM Zone 35N -<102135> +proj=utm +zone=35 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> -# Hong Kong 1980 Grid -<102140> +proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1.000000 +x_0=836694.05 +y_0=819069.8 +ellps=intl +units=m no_defs <> -# Hong Kong 1980 UTM Zone 49N -<102141> +proj=utm +zone=49 +ellps=intl +units=m no_defs <> -# Hong Kong 1980 UTM Zone 50N -<102142> +proj=utm +zone=50 +ellps=intl +units=m no_defs <> -# Tokyo UTM Zone 51N -<102151> +proj=utm +zone=51 +ellps=bessel +units=m no_defs <> -# Tokyo UTM Zone 52N -<102152> +proj=utm +zone=52 +ellps=bessel +units=m no_defs <> -# Tokyo UTM Zone 53N -<102153> +proj=utm +zone=53 +ellps=bessel +units=m no_defs <> -# Tokyo UTM Zone 54N -<102154> +proj=utm +zone=54 +ellps=bessel +units=m no_defs <> -# Tokyo UTM Zone 55N -<102155> +proj=utm +zone=55 +ellps=bessel +units=m no_defs <> -# Tokyo UTM Zone 56N -<102156> +proj=utm +zone=56 +ellps=bessel +units=m no_defs <> -# Datum 73 Hayford Gauss IGeoE -<102160> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200180.598 +y_0=299913.01 +ellps=intl +units=m no_defs <> -# Datum 73 Hayford Gauss IPCC -<102161> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m no_defs <> -# Graciosa Base SW 1948 UTM Zone 26N -<102162> +proj=utm +zone=26 +ellps=intl +units=m no_defs <> -# Lisboa Bessel Bonne -<102163> +ellps=bessel +units=m no_defs <> -# Lisboa Hayford Gauss IGeoE -<102164> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +units=m no_defs <> -# Lisboa Hayford Gauss IPCC -<102165> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> -# Observ Meteorologico 1939 UTM Zone 25N -<102166> +proj=utm +zone=25 +ellps=intl +units=m no_defs <> -# Porto Santo 1936 UTM Zone 28N -<102167> +proj=utm +zone=28 +ellps=intl +units=m no_defs <> -# Sao Braz UTM Zone 26N -<102168> +proj=utm +zone=26 +ellps=intl +units=m no_defs <> -# Selvagem Grande 1938 UTM Zone 28N -<102169> +proj=utm +zone=28 +ellps=intl +units=m no_defs <> -# Nord Maroc Degree -<102191> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# Sud Maroc Degree -<102192> +proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# Sahara Degree -<102193> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# NAD 1983 HARN StatePlane Alabama East FIPS 0101 -<102229> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Alabama West FIPS 0102 -<102230> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane California I FIPS 0401 -<102241> +proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane California II FIPS 0402 -<102242> +proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane California III FIPS 0403 -<102243> +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane California IV FIPS 0404 -<102244> +proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane California V FIPS 0405 -<102245> +proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane California VI FIPS 0406 -<102246> +proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Arizona East FIPS 0201 -<102248> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Arizona Central FIPS 0202 -<102249> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Arizona West FIPS 0203 -<102250> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Arkansas North FIPS 0301 -<102251> +proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Arkansas South FIPS 0302 -<102252> +proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Colorado North FIPS 0501 -<102253> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Colorado Central FIPS 0502 -<102254> +proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Colorado South FIPS 0503 -<102255> +proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Connecticut FIPS 0600 -<102256> +proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Delaware FIPS 0700 -<102257> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Florida East FIPS 0901 -<102258> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Florida West FIPS 0902 -<102259> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Florida North FIPS 0903 -<102260> +proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Hawaii 1 FIPS 5101 -<102261> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Hawaii 2 FIPS 5102 -<102262> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Hawaii 3 FIPS 5103 -<102263> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Hawaii 4 FIPS 5104 -<102264> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Hawaii 5 FIPS 5105 -<102265> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Georgia East FIPS 1001 -<102266> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Georgia West FIPS 1002 -<102267> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Idaho East FIPS 1101 -<102268> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Idaho Central FIPS 1102 -<102269> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Idaho West FIPS 1103 -<102270> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Illinois East FIPS 1201 -<102271> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Illinois West FIPS 1202 -<102272> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Indiana East FIPS 1301 -<102273> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Indiana West FIPS 1302 -<102274> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Kansas North FIPS 1501 -<102277> +proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Kansas South FIPS 1502 -<102278> +proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Kentucky North FIPS 1601 -<102279> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Kentucky South FIPS 1602 -<102280> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Louisiana North FIPS 1701 -<102281> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Louisiana South FIPS 1702 -<102282> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Maine East FIPS 1801 -<102283> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Maine West FIPS 1802 -<102284> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Maryland FIPS 1900 -<102285> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Massachusetts Mainland FIPS 2001 -<102286> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Massachusetts Island FIPS 2002 -<102287> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Michigan North FIPS 2111 -<102288> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Michigan Central FIPS 2112 -<102289> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Michigan South FIPS 2113 -<102290> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Minnesota North FIPS 2201 -<102291> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Minnesota Central FIPS 2202 -<102292> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Minnesota South FIPS 2203 -<102293> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Mississippi East FIPS 2301 -<102294> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Mississippi West FIPS 2302 -<102295> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Missouri East FIPS 2401 -<102296> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Missouri Central FIPS 2402 -<102297> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Missouri West FIPS 2403 -<102298> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Montana FIPS 2500 -<102300> +proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Nebraska FIPS 2600 -<102304> +proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Nevada East FIPS 2701 -<102307> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Nevada Central FIPS 2702 -<102308> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Nevada West FIPS 2703 -<102309> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New Hampshire FIPS 2800 -<102310> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New Jersey FIPS 2900 -<102311> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New Mexico East FIPS 3001 -<102312> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New Mexico Central FIPS 3002 -<102313> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New Mexico West FIPS 3003 -<102314> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New York East FIPS 3101 -<102315> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New York Central FIPS 3102 -<102316> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New York West FIPS 3103 -<102317> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane New York Long Island FIPS 3104 -<102318> +proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane North Dakota North FIPS 3301 -<102320> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane North Dakota South FIPS 3302 -<102321> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Ohio North FIPS 3401 -<102322> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Ohio South FIPS 3402 -<102323> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Oklahoma North FIPS 3501 -<102324> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Oklahoma South FIPS 3502 -<102325> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Oregon North FIPS 3601 -<102326> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Oregon South FIPS 3602 -<102327> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Rhode Island FIPS 3800 -<102330> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane South Dakota North FIPS 4001 -<102334> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane South Dakota South FIPS 4002 -<102335> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Tennessee FIPS 4100 -<102336> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Texas North FIPS 4201 -<102337> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Texas North Central FIPS 4202 -<102338> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Texas Central FIPS 4203 -<102339> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Texas South Central FIPS 4204 -<102340> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Texas South FIPS 4205 -<102341> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Utah North FIPS 4301 -<102342> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Utah Central FIPS 4302 -<102343> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Utah South FIPS 4303 -<102344> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Vermont FIPS 4400 -<102345> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Virginia North FIPS 4501 -<102346> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Virginia South FIPS 4502 -<102347> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Washington North FIPS 4601 -<102348> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Washington South FIPS 4602 -<102349> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane West Virginia North FIPS 4701 -<102350> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane West Virginia South FIPS 4702 -<102351> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Wisconsin North FIPS 4801 -<102352> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Wisconsin Central FIPS 4802 -<102353> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Wisconsin South FIPS 4803 -<102354> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Wyoming East FIPS 4901 -<102355> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Wyoming East Central FIPS 4902 -<102356> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Wyoming West Central FIPS 4903 -<102357> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Wyoming West FIPS 4904 -<102358> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> -# NAD 1983 HARN StatePlane Puerto Rico Virgin Islands FIPS 5200 -<102361> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m no_defs <> -# Nord Algerie Ancienne Degree -<102491> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# Sud Algerie Ancienne Degree -<102492> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# NTF France I degrees -<102581> +proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# NTF France II degrees -<102582> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# NTF France III degrees -<102583> +proj=lcc +lat_1=44.1 +lat_0=44.1 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# NTF France IV degrees -<102584> +proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> -# Nord Algerie Degree -<102591> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> -# Sud Algerie Degree -<102592> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> -# NAD 1983 StatePlane Alabama East FIPS 0101 Feet -<102629> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alabama West FIPS 0102 Feet -<102630> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 1 FIPS 5001 Feet -<102631> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=4999999.999999999 +y_0=-4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 2 FIPS 5002 Feet -<102632> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 3 FIPS 5003 Feet -<102633> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 4 FIPS 5004 Feet -<102634> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 5 FIPS 5005 Feet -<102635> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 6 FIPS 5006 Feet -<102636> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 7 FIPS 5007 Feet -<102637> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 8 FIPS 5008 Feet -<102638> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 9 FIPS 5009 Feet -<102639> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Alaska 10 FIPS 5010 Feet -<102640> +proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane California I FIPS 0401 Feet -<102641> +proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane California II FIPS 0402 Feet -<102642> +proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane California III FIPS 0403 Feet -<102643> +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane California IV FIPS 0404 Feet -<102644> +proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane California V FIPS 0405 Feet -<102645> +proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane California VI FIPS 0406 Feet -<102646> +proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Arizona East FIPS 0201 Feet -<102648> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Arizona Central FIPS 0202 Feet -<102649> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Arizona West FIPS 0203 Feet -<102650> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Arkansas North FIPS 0301 Feet -<102651> +proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Arkansas South FIPS 0302 Feet -<102652> +proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Colorado North FIPS 0501 Feet -<102653> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Colorado Central FIPS 0502 Feet -<102654> +proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Colorado South FIPS 0503 Feet -<102655> +proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Connecticut FIPS 0600 Feet -<102656> +proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Delaware FIPS 0700 Feet -<102657> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Florida East FIPS 0901 Feet -<102658> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Florida West FIPS 0902 Feet -<102659> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Florida North FIPS 0903 Feet -<102660> +proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Hawaii 1 FIPS 5101 Feet -<102661> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Hawaii 2 FIPS 5102 Feet -<102662> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Hawaii 3 FIPS 5103 Feet -<102663> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Hawaii 4 FIPS 5104 Feet -<102664> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Hawaii 5 FIPS 5105 Feet -<102665> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Georgia East FIPS 1001 Feet -<102666> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Georgia West FIPS 1002 Feet -<102667> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Idaho East FIPS 1101 Feet -<102668> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Idaho Central FIPS 1102 Feet -<102669> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Idaho West FIPS 1103 Feet -<102670> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=799999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Illinois East FIPS 1201 Feet -<102671> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Illinois West FIPS 1202 Feet -<102672> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Indiana East FIPS 1301 Feet -<102673> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Indiana West FIPS 1302 Feet -<102674> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000.0000000001 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Iowa North FIPS 1401 Feet -<102675> +proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Iowa South FIPS 1402 Feet -<102676> +proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Kansas North FIPS 1501 Feet -<102677> +proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Kansas South FIPS 1502 Feet -<102678> +proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Kentucky North FIPS 1601 Feet -<102679> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Kentucky South FIPS 1602 Feet -<102680> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0000000002 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Louisiana North FIPS 1701 Feet -<102681> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Louisiana South FIPS 1702 Feet -<102682> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Maine East FIPS 1801 Feet -<102683> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Maine West FIPS 1802 Feet -<102684> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Maryland FIPS 1900 Feet -<102685> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Massachusetts Mainland FIPS 2001 Feet -<102686> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Massachusetts Island FIPS 2002 Feet -<102687> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Michigan North FIPS 2111 Feet -<102688> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Michigan Central FIPS 2112 Feet -<102689> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000.000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Michigan South FIPS 2113 Feet -<102690> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Minnesota North FIPS 2201 Feet -<102691> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Minnesota Central FIPS 2202 Feet -<102692> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Minnesota South FIPS 2203 Feet -<102693> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Mississippi East FIPS 2301 Feet -<102694> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Mississippi West FIPS 2302 Feet -<102695> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Missouri East FIPS 2401 Feet -<102696> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Missouri Central FIPS 2402 Feet -<102697> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Missouri West FIPS 2403 Feet -<102698> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Montana FIPS 2500 Feet -<102700> +proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Nebraska FIPS 2600 Feet -<102704> +proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Nevada East FIPS 2701 Feet -<102707> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=7999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Nevada Central FIPS 2702 Feet -<102708> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000.0000000002 +y_0=6000000.000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Nevada West FIPS 2703 Feet -<102709> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=799999.9999999999 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New Hampshire FIPS 2800 Feet -<102710> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New Jersey FIPS 2900 Feet -<102711> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New Mexico East FIPS 3001 Feet -<102712> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New Mexico Central FIPS 3002 Feet -<102713> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New Mexico West FIPS 3003 Feet -<102714> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=829999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New York East FIPS 3101 Feet -<102715> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New York Central FIPS 3102 Feet -<102716> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New York West FIPS 3103 Feet -<102717> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane New York Long Island FIPS 3104 Feet -<102718> +proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane North Carolina FIPS 3200 Feet -<102719> +proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2199999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane North Dakota North FIPS 3301 Feet -<102720> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane North Dakota South FIPS 3302 Feet -<102721> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Ohio North FIPS 3401 Feet -<102722> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Ohio South FIPS 3402 Feet -<102723> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Oklahoma North FIPS 3501 Feet -<102724> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Oklahoma South FIPS 3502 Feet -<102725> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Oregon North FIPS 3601 Feet -<102726> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Oregon South FIPS 3602 Feet -<102727> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Pennsylvania North FIPS 3701 Feet -<102728> +proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Pennsylvania South FIPS 3702 Feet -<102729> +proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Rhode Island FIPS 3800 Feet -<102730> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane South Carolina FIPS 3900 Feet -<102733> +proj=lcc +lat_1=32.5 +lat_2=34.83333333333334 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane South Dakota North FIPS 4001 Feet -<102734> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane South Dakota South FIPS 4002 Feet -<102735> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Tennessee FIPS 4100 Feet -<102736> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Texas North FIPS 4201 Feet -<102737> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Texas North Central FIPS 4202 Feet -<102738> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000.0000000001 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Texas Central FIPS 4203 Feet -<102739> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Texas South Central FIPS 4204 Feet -<102740> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000.0000000001 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Texas South FIPS 4205 Feet -<102741> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Utah North FIPS 4301 Feet -<102742> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Utah Central FIPS 4302 Feet -<102743> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Utah South FIPS 4303 Feet -<102744> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Vermont FIPS 4400 Feet -<102745> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Virginia North FIPS 4501 Feet -<102746> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Virginia South FIPS 4502 Feet -<102747> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Washington North FIPS 4601 Feet -<102748> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Washington South FIPS 4602 Feet -<102749> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane West Virginia North FIPS 4701 Feet -<102750> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane West Virginia South FIPS 4702 Feet -<102751> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Wisconsin North FIPS 4801 Feet -<102752> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Wisconsin Central FIPS 4802 Feet -<102753> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Wisconsin South FIPS 4803 Feet -<102754> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Wyoming East FIPS 4901 Feet -<102755> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Wyoming East Central FIPS 4902 Feet -<102756> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=399999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Wyoming West Central FIPS 4903 Feet -<102757> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Wyoming West FIPS 4904 Feet -<102758> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Puerto Rico Virgin Islands FIPS 5200 Feet -<102761> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# NAD 1983 StatePlane Guam FIPS 5400 Feet -<102766> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=49999.99999999999 +y_0=49999.99999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> -# Belge Lambert 1972 -<103300> +proj=lcc +lat_1=49.8333339 +lat_2=51.16666733333333 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m no_defs <> -# GCS International 1967 -<4023> +proj=longlat +ellps=aust_SA no_defs <> -# GCS Bern 1898 -<4217> +proj=longlat +ellps=bessel no_defs <> -# GCS Voirol Unifie 1960 -<4305> +proj=longlat +ellps=clrk80 no_defs <> -# GCS Montserrat 1958 -<4404> +proj=longlat +ellps=clrk80 no_defs <> -# GCS Voirol Unifie 1960 Paris -<4812> +proj=longlat +ellps=clrk80 +pm=2.337229166666667 no_defs <> -# GCS WGS 1966 -<37001> +proj=longlat +ellps=WGS66 no_defs <> -# GCS Fischer 1960 -<37002> +proj=longlat +a=6378166 +b=6356784.283607107 no_defs <> -# GCS Fischer 1968 -<37003> +proj=longlat +a=6378150 +b=6356768.337244385 no_defs <> -# GCS Fischer Modified -<37004> +proj=longlat +ellps=fschr60m no_defs <> -# GCS Hough 1960 -<37005> +proj=longlat +a=6378270 +b=6356794.343434343 no_defs <> -# GCS Everest Modified 1969 -<37006> +proj=longlat +a=6377295.664 +b=6356094.667915204 no_defs <> -# GCS Walbeck -<37007> +proj=longlat +a=6376896 +b=6355834.846687363 no_defs <> -# GCS Sphere ARC INFO -<37008> +proj=longlat +a=6370997 +b=6370997 no_defs <> -# GCS European 1979 -<37201> +proj=longlat +ellps=intl no_defs <> -# GCS Everest Bangladesh -<37202> +proj=longlat +a=6377276.345 +b=6356075.413140239 no_defs <> -# GCS Everest India Nepal -<37203> +proj=longlat +a=6377301.243 +b=6356100.230165385 no_defs <> -# GCS Hjorsey 1955 -<37204> +proj=longlat +ellps=intl no_defs <> -# GCS Hong Kong 1963 -<37205> +proj=longlat +ellps=intl no_defs <> -# GCS Oman -<37206> +proj=longlat +ellps=clrk80 no_defs <> -# GCS South Asia Singapore -<37207> +proj=longlat +ellps=fschr60m no_defs <> -# GCS Ayabelle -<37208> +proj=longlat +ellps=clrk80 no_defs <> -# GCS Point 58 -<37211> +proj=longlat +ellps=clrk80 no_defs <> -# GCS Beacon E 1945 -<37212> +proj=longlat +ellps=intl no_defs <> -# GCS Tern Island 1961 -<37213> +proj=longlat +ellps=intl no_defs <> -# GCS Astro 1952 -<37214> +proj=longlat +ellps=intl no_defs <> -# GCS Bellevue IGN -<37215> +proj=longlat +ellps=intl no_defs <> -# GCS Canton 1966 -<37216> +proj=longlat +ellps=intl no_defs <> -# GCS Chatham Island 1971 -<37217> +proj=longlat +ellps=intl no_defs <> -# GCS DOS 1968 -<37218> +proj=longlat +ellps=intl no_defs <> -# GCS Easter Island 1967 -<37219> +proj=longlat +ellps=intl no_defs <> -# GCS Guam 1963 -<37220> +proj=longlat +ellps=clrk66 no_defs <> -# GCS GUX 1 -<37221> +proj=longlat +ellps=intl no_defs <> -# GCS Johnston Island 1961 -<37222> +proj=longlat +ellps=intl no_defs <> -# GCS Carthage Degree -<37223> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> -# GCS Midway 1961 -<37224> +proj=longlat +ellps=intl no_defs <> -# GCS Pitcairn 1967 -<37226> +proj=longlat +ellps=intl no_defs <> -# GCS Santo DOS 1965 -<37227> +proj=longlat +ellps=intl no_defs <> -# GCS Viti Levu 1916 -<37228> +proj=longlat +ellps=clrk80 no_defs <> -# GCS Wake Eniwetok 1960 -<37229> +proj=longlat +a=6378270 +b=6356794.343434343 no_defs <> -# GCS Wake Island 1952 -<37230> +proj=longlat +ellps=intl no_defs <> -# GCS Anna 1 1965 -<37231> +proj=longlat +ellps=aust_SA no_defs <> -# GCS Gan 1970 -<37232> +proj=longlat +ellps=intl no_defs <> -# GCS ISTS 073 1969 -<37233> +proj=longlat +ellps=intl no_defs <> -# GCS Kerguelen Island 1949 -<37234> +proj=longlat +ellps=intl no_defs <> -# GCS Reunion -<37235> +proj=longlat +ellps=intl no_defs <> -# GCS Ascension Island 1958 -<37237> +proj=longlat +ellps=intl no_defs <> -# GCS DOS 71 4 -<37238> +proj=longlat +ellps=intl no_defs <> -# GCS Cape Canaveral -<37239> +proj=longlat +ellps=clrk66 no_defs <> -# GCS Fort Thomas 1955 -<37240> +proj=longlat +ellps=clrk80 no_defs <> -# GCS Graciosa Base SW 1948 -<37241> +proj=longlat +ellps=intl no_defs <> -# GCS ISTS 061 1968 -<37242> +proj=longlat +ellps=intl no_defs <> -# GCS LC5 1961 -<37243> +proj=longlat +ellps=clrk66 no_defs <> -# GCS Observ Meteorologico 1939 -<37245> +proj=longlat +ellps=intl no_defs <> -# GCS Pico de Las Nieves -<37246> +proj=longlat +ellps=intl no_defs <> -# GCS Porto Santo 1936 -<37247> +proj=longlat +ellps=intl no_defs <> -# GCS Sao Braz -<37249> +proj=longlat +ellps=intl no_defs <> -# GCS Selvagem Grande 1938 -<37250> +proj=longlat +ellps=intl no_defs <> -# GCS Tristan 1968 -<37251> +proj=longlat +ellps=intl no_defs <> -# GCS Samoa 1962 -<37252> +proj=longlat +ellps=clrk66 no_defs <> -# GCS Camp Area -<37253> +proj=longlat +ellps=intl no_defs <> -# GCS Deception Island -<37254> +proj=longlat +ellps=clrk80 no_defs <> -# GCS Gunung Segara -<37255> +proj=longlat +ellps=bessel no_defs <> -# GCS S42 Hungary -<37257> +proj=longlat +ellps=krass no_defs <> -# GCS Kusaie 1951 -<37259> +proj=longlat +ellps=intl no_defs <> -# GCS Alaskan Islands -<37260> +proj=longlat +ellps=clrk66 no_defs <> -# GCS Assumed Geographic 1 -<104000> +proj=longlat +ellps=clrk66 +datum=NAD27 no_defs <> -# GCS Estonia 1937 -<104101> +proj=longlat +ellps=bessel no_defs <> -# GCS Hermannskogel -<104102> +proj=longlat +ellps=bessel no_defs <> -# GCS Sierra Leone 1960 -<104103> +proj=longlat +ellps=clrk80 no_defs <> -# GCS Hong Kong 1980 -<104104> +proj=longlat +ellps=intl no_defs <> -# GCS Datum Lisboa Bessel -<104105> +proj=longlat +ellps=bessel no_defs <> -# GCS Datum Lisboa Hayford -<104106> +proj=longlat +ellps=intl no_defs <> -# GCS RGF 1993 -<104107> +proj=longlat +ellps=GRS80 no_defs <> -# GCS NZGD 2000 -<104108> +proj=longlat +ellps=GRS80 no_defs <> -# GCS Merchich Degree -<104261> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> -# GCS Voirol 1875 Degree -<104304> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> -# GCS Voirol Unifie 1960 Degree -<104305> +proj=longlat +ellps=clrk80 no_defs <> -- cgit v1.2.3 From 47cada7c3a0d55bcc071f124e3bc0ea403cfff64 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 27 Nov 2018 11:51:27 +0100 Subject: Update proj_symbol_rename.h --- src/proj_symbol_rename.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/proj_symbol_rename.h b/src/proj_symbol_rename.h index 353473b5..53b324e7 100644 --- a/src/proj_symbol_rename.h +++ b/src/proj_symbol_rename.h @@ -108,6 +108,7 @@ #define proj_context_delete_cpp_context internal_proj_context_delete_cpp_context #define proj_context_destroy internal_proj_context_destroy #define proj_context_errno internal_proj_context_errno +#define proj_context_get_database_metadata internal_proj_context_get_database_metadata #define proj_context_get_database_path internal_proj_context_get_database_path #define proj_context_get_use_proj4_init_rules internal_proj_context_get_use_proj4_init_rules #define proj_context_guess_wkt_dialect internal_proj_context_guess_wkt_dialect @@ -227,10 +228,14 @@ #define proj_obj_create_projected_crs_WagnerVI internal_proj_obj_create_projected_crs_WagnerVI #define proj_obj_create_projected_crs_WagnerVII internal_proj_obj_create_projected_crs_WagnerVII #define proj_obj_crs_create_bound_crs_to_WGS84 internal_proj_obj_crs_create_bound_crs_to_WGS84 +#define proj_obj_crs_get_coordinate_system internal_proj_obj_crs_get_coordinate_system #define proj_obj_crs_get_coordoperation internal_proj_obj_crs_get_coordoperation #define proj_obj_crs_get_geodetic_crs internal_proj_obj_crs_get_geodetic_crs #define proj_obj_crs_get_horizontal_datum internal_proj_obj_crs_get_horizontal_datum #define proj_obj_crs_get_sub_crs internal_proj_obj_crs_get_sub_crs +#define proj_obj_cs_get_axis_count internal_proj_obj_cs_get_axis_count +#define proj_obj_cs_get_axis_info internal_proj_obj_cs_get_axis_info +#define proj_obj_cs_get_type internal_proj_obj_cs_get_type #define proj_obj_ellipsoid_get_parameters internal_proj_obj_ellipsoid_get_parameters #define proj_obj_get_area_of_use internal_proj_obj_get_area_of_use #define proj_obj_get_ellipsoid internal_proj_obj_get_ellipsoid -- cgit v1.2.3 From 492763fec2bb4fa9c0c52b906feda0a2a96d866c Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 28 Nov 2018 15:47:03 +0100 Subject: Build: change back link-time-optimization default to off I've found that if building PROJ with lto, but GDAL without lto, exceptions thrown in PROJ are not properly captured by try {} blocks in PROJ C API, and unexpectedly go back up to GDAL. Might be a defect of the particular compiler I use (gcc 5.4 Ubuntu 16.04) --- configure.ac | 4 ++-- src/lib_proj.cmake | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 31cb2a8a..25675d6a 100644 --- a/configure.ac +++ b/configure.ac @@ -151,10 +151,10 @@ AC_MSG_CHECKING([to enable LTO (link time optimization) build]) AC_ARG_ENABLE(lto, AS_HELP_STRING([--enable-lto], - [enable LTO(link time optimization) (enabled by default)])) + [enable LTO(link time optimization) (disabled by default)])) FLTO_FLAG="" -if test "x$enable_lto" = "xyes" -o "x$enable_lto" = "x"; then +if test "x$enable_lto" = "xyes"; then AC_LANG_PUSH([C++]) AX_CHECK_COMPILE_FLAG([-flto], [FLTO_FLAG="-flto"],,[$ERROR_ON_UNKNOWN_OPTIONS]) if test "$FLTO_FLAG" != ""; then diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake index 6fe84944..bb45db44 100644 --- a/src/lib_proj.cmake +++ b/src/lib_proj.cmake @@ -32,7 +32,7 @@ elseif(USE_THREAD AND NOT Threads_FOUND) message(FATAL_ERROR "No thread library found and thread/mutex support is required by USE_THREAD option") endif() -option(ENABLE_LTO "Build library with LTO optimization (if available)." ON) +option(ENABLE_LTO "Build library with LTO optimization (if available)." OFF) if(ENABLE_LTO) if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") include (CheckCXXSourceCompiles) -- cgit v1.2.3 From ff7f5da97563f697fd70eeb161dbebe24b39e8d2 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 28 Nov 2018 19:51:49 +0100 Subject: importFromWKT: check we have a valid unit where we need one --- src/io.cpp | 36 ++++++++++------ test/unit/test_io.cpp | 112 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 99 insertions(+), 49 deletions(-) diff --git a/src/io.cpp b/src/io.cpp index 7a0a7435..749b3e14 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -1166,6 +1166,7 @@ struct WKTParser::Private { MeridianNNPtr buildMeridian(const WKTNodeNNPtr &node); CoordinateSystemAxisNNPtr buildAxis(const WKTNodeNNPtr &node, const UnitOfMeasure &unitIn, + const UnitOfMeasure::Type &unitType, bool isGeocentric, int expectedOrderNum); @@ -2039,10 +2040,17 @@ MeridianNNPtr WKTParser::Private::buildMeridian(const WKTNodeNNPtr &node) { // --------------------------------------------------------------------------- +PROJ_NO_RETURN static void ThrowParsingExceptionMissingUNIT() { + throw ParsingException("buildCS: missing UNIT"); +} + +// --------------------------------------------------------------------------- + CoordinateSystemAxisNNPtr WKTParser::Private::buildAxis(const WKTNodeNNPtr &node, - const UnitOfMeasure &unitIn, bool isGeocentric, - int expectedOrderNum) { + const UnitOfMeasure &unitIn, + const UnitOfMeasure::Type &unitType, + bool isGeocentric, int expectedOrderNum) { const auto *nodeP = node->GP(); const auto &children = nodeP->children(); if (children.size() < 2) { @@ -2128,7 +2136,8 @@ WKTParser::Private::buildAxis(const WKTNodeNNPtr &node, abbreviation = AxisAbbreviation::Y; direction = &AxisDirection::GEOCENTRIC_Y; } else if (isGeocentric && axisName == AxisName::Geocentric_Z && - dirString == AxisDirectionWKT1::NORTH.toString()) { + (dirString == AxisDirectionWKT1::NORTH.toString() || + dirString == AxisDirectionWKT1::OTHER.toString())) { abbreviation = AxisAbbreviation::Z; direction = &AxisDirection::GEOCENTRIC_Z; } else if (dirString == AxisDirectionWKT1::OTHER.toString()) { @@ -2146,6 +2155,11 @@ WKTParser::Private::buildAxis(const WKTNodeNNPtr &node, // If no unit in the AXIS node, use the one potentially coming from // the CS. unit = unitIn; + if (unit == UnitOfMeasure::NONE && + unitType != UnitOfMeasure::Type::NONE && + unitType != UnitOfMeasure::Type::TIME) { + ThrowParsingExceptionMissingUNIT(); + } } auto &meridianNode = nodeP->lookForChild(WKTConstants::MERIDIAN); @@ -2165,10 +2179,6 @@ PROJ_NO_RETURN static void ThrowParsingException(const std::string &msg) { throw ParsingException(msg); } -PROJ_NO_RETURN static void ThrowParsingExceptionMissingUNIT() { - throw ParsingException("buildCS: missing UNIT"); -} - static ParsingException buildParsingExceptionInvalidAxisCount(const std::string &csType) { return ParsingException( @@ -2331,8 +2341,7 @@ WKTParser::Private::buildCS(const WKTNodeNNPtr &node, /* maybe null */ "and number of AXIS are inconsistent"); } - UnitOfMeasure unit = buildUnitInSubNode( - parentNode, + const auto unitType = ci_equal(csType, "ellipsoidal") ? UnitOfMeasure::Type::ANGULAR : ci_equal(csType, "ordinal") @@ -2347,13 +2356,14 @@ WKTParser::Private::buildCS(const WKTNodeNNPtr &node, /* maybe null */ ci_equal(csType, "TemporalCount") || ci_equal(csType, "TemporalMeasure")) ? UnitOfMeasure::Type::TIME - : UnitOfMeasure::Type::UNKNOWN); + : UnitOfMeasure::Type::UNKNOWN; + UnitOfMeasure unit = buildUnitInSubNode(parentNode, unitType); std::vector axisList; for (int i = 0; i < axisCount; i++) { axisList.emplace_back( buildAxis(parentNode->GP()->lookForChild(WKTConstants::AXIS, i), - unit, isGeocentric, i + 1)); + unit, unitType, isGeocentric, i + 1)); }; const PropertyMap &csMap = emptyPropertyMap; @@ -3173,11 +3183,11 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard( projCRSNode->countChildrenOfName(WKTConstants::AXIS) == 2 && &buildAxis( projCRSNode->GP()->lookForChild(WKTConstants::AXIS, 0), - defaultLinearUnit, false, + defaultLinearUnit, UnitOfMeasure::Type::LINEAR, false, 1)->direction() == &AxisDirection::SOUTH && &buildAxis( projCRSNode->GP()->lookForChild(WKTConstants::AXIS, 1), - defaultLinearUnit, false, + defaultLinearUnit, UnitOfMeasure::Type::LINEAR, false, 2)->direction() == &AxisDirection::WEST) { mapping = getMapping(EPSG_CODE_METHOD_KROVAK); } diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index a2a865ad..fa0305cc 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -768,6 +768,28 @@ TEST(wkt_parse, wkt1_geocentric) { // --------------------------------------------------------------------------- +TEST(wkt_parse, wkt1_geocentric_with_z_OTHER) { + auto wkt = "GEOCCS[\"WGS 84 (geocentric)\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",9001]],\n" + " AXIS[\"Geocentric X\",OTHER],\n" + " AXIS[\"Geocentric Y\",OTHER],\n" + " AXIS[\"Geocentric Z\",OTHER],\n" + " AUTHORITY[\"EPSG\",\"4328\"]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + checkGeocentric(crs); +} + +// --------------------------------------------------------------------------- + static void checkProjected(ProjectedCRSPtr crs, bool checkEPSGCodes = true) { EXPECT_EQ(crs->nameStr(), "WGS 84 / UTM zone 31N"); ASSERT_EQ(crs->identifiers().size(), 1); @@ -2641,9 +2663,10 @@ TEST(wkt_parse, LOCAL_CS_short) { // --------------------------------------------------------------------------- -TEST(wkt_parse, LOCAL_CS_long_one_aix) { +TEST(wkt_parse, LOCAL_CS_long_one_axis) { auto wkt = "LOCAL_CS[\"Engineering CRS\",\n" " LOCAL_DATUM[\"Engineering datum\",12345],\n" + " UNIT[\"meter\",1],\n" " AXIS[\"height\",up]]"; auto obj = WKTParser().createFromWKT(wkt); @@ -2661,6 +2684,7 @@ TEST(wkt_parse, LOCAL_CS_long_one_aix) { TEST(wkt_parse, LOCAL_CS_long_two_axis) { auto wkt = "LOCAL_CS[\"Engineering CRS\",\n" " LOCAL_DATUM[\"Engineering datum\",12345],\n" + " UNIT[\"meter\",1],\n" " AXIS[\"Easting\",EAST],\n" " AXIS[\"Northing\",NORTH]]"; @@ -4139,7 +4163,7 @@ TEST(wkt_parse, invalid_GEOGCS) { TEST(wkt_parse, invalid_UNIT) { std::string startWKT("GEODCRS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],CS[" "ellipsoidal,2],AXIS[\"latitude\",north],AXIS[" - "\"longitude\",east,"); + "\"longitude\",east],"); EXPECT_NO_THROW(WKTParser().createFromWKT( startWKT + "UNIT[\"degree\",0.0174532925199433]]]")); @@ -4228,31 +4252,35 @@ TEST(wkt_parse, invalid_CS_of_GEODCRS) { // CS: OK EXPECT_NO_THROW(WKTParser().createFromWKT( startWKT + ",CS[ellipsoidal,2],AXIS[\"latitude\",north],AXIS[" - "\"longitude\",east]]")); + "\"longitude\",east],UNIT[\"degree\",0.0174532925199433]]")); // CS: Cartesian with 2 axis unexpected - EXPECT_THROW(WKTParser().createFromWKT(startWKT + - ",CS[Cartesian,2],AXIS[\"latitude\"," - "north],AXIS[\"longitude\",east]]"), + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + ",CS[Cartesian,2],AXIS[\"latitude\"," + "north],AXIS[\"longitude\",east]," + "UNIT[\"degree\",0.0174532925199433]]"), ParsingException); // CS: missing axis EXPECT_THROW(WKTParser().createFromWKT( - startWKT + ",CS[ellipsoidal,2],AXIS[\"latitude\",north]]"), + startWKT + ",CS[ellipsoidal,2],AXIS[\"latitude\",north]," + "UNIT[\"degree\",0.0174532925199433]]"), ParsingException); // not enough children in AXIS EXPECT_THROW( WKTParser().createFromWKT( startWKT + - ",CS[ellipsoidal,2],AXIS[\"latitude\",north],AXIS[\"longitude\"]]"), + ",CS[ellipsoidal,2],AXIS[\"latitude\",north],AXIS[\"longitude\"]," + "UNIT[\"degree\",0.0174532925199433]]"), ParsingException); // not enough children in ORDER EXPECT_THROW(WKTParser().createFromWKT( startWKT + ",CS[ellipsoidal,2],AXIS[\"latitude\",north,ORDER[]],AXIS[" - "\"longitude\",east]]"), + "\"longitude\",east]," + "UNIT[\"degree\",0.0174532925199433]]"), ParsingException); // invalid value in ORDER @@ -4260,7 +4288,7 @@ TEST(wkt_parse, invalid_CS_of_GEODCRS) { WKTParser().createFromWKT( startWKT + ",CS[ellipsoidal,2],AXIS[\"latitude\",north,ORDER[\"x\"]],AXIS[" - "\"longitude\",east]]"), + "\"longitude\",east],UNIT[\"degree\",0.0174532925199433]]"), ParsingException); // unexpected ORDER value @@ -4268,7 +4296,7 @@ TEST(wkt_parse, invalid_CS_of_GEODCRS) { WKTParser().createFromWKT( startWKT + ",CS[ellipsoidal,2],AXIS[\"latitude\",north,ORDER[2]],AXIS[" - "\"longitude\",east]]"), + "\"longitude\",east],UNIT[\"degree\",0.0174532925199433]]"), ParsingException); // Invalid CS type @@ -4794,7 +4822,8 @@ TEST(wkt_parse, invalid_DerivedGeographicCRS) { " METHOD[\"bar\"]],\n" " CS[ellipsoidal,2],\n" " AXIS[\"latitude\",north],\n" - " AXIS[\"longitude\",east]]")); + " AXIS[\"longitude\",east],\n" + " UNIT[\"degree\",0.0174532925199433]]")); // Missing DERIVINGCONVERSION EXPECT_THROW( @@ -4805,7 +4834,8 @@ TEST(wkt_parse, invalid_DerivedGeographicCRS) { " ELLIPSOID[\"WGS 84\",6378137,298.257223563]]],\n" " CS[ellipsoidal,2],\n" " AXIS[\"latitude\",north],\n" - " AXIS[\"longitude\",east]]"), + " AXIS[\"longitude\",east],\n" + " UNIT[\"degree\",0.0174532925199433]]"), ParsingException); // Missing CS @@ -4982,18 +5012,20 @@ TEST(wkt_parse, invalid_LOCAL_CS) { TEST(wkt_parse, invalid_ParametricCRS) { - EXPECT_NO_THROW( - WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" - " PDATUM[\"name\"],\n" - " CS[parametric,1],\n" - " AXIS[\"time (T)\",future]]")); + EXPECT_NO_THROW(WKTParser().createFromWKT( + "PARAMETRICCRS[\"name\",\n" + " PDATUM[\"name\"],\n" + " CS[parametric,1],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]")); // Missing PDATUM - EXPECT_THROW( - WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" - " CS[parametric,1],\n" - " AXIS[\"time (T)\",future]]"), - ParsingException); + EXPECT_THROW(WKTParser().createFromWKT( + "PARAMETRICCRS[\"name\",\n" + " CS[parametric,1],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]"), + ParsingException); // Missing CS EXPECT_THROW(WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" @@ -5001,13 +5033,15 @@ TEST(wkt_parse, invalid_ParametricCRS) { ParsingException); // Invalid number of axis for CS - EXPECT_THROW( - WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" - " PDATUM[\"name\"],\n" - " CS[parametric,2],\n" - " AXIS[\"time (T)\",future],\n" - " AXIS[\"time (T)\",future]]"), - ParsingException); + EXPECT_THROW(WKTParser().createFromWKT( + "PARAMETRICCRS[\"name\",\n" + " PDATUM[\"name\"],\n" + " CS[parametric,2],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]"), + ParsingException); // Invalid CS type EXPECT_THROW( @@ -5034,7 +5068,8 @@ TEST(wkt_parse, invalid_DERIVEDPROJCRS) { " METHOD[\"PROJ unimplemented\"]],\n" " CS[Cartesian,2],\n" " AXIS[\"(E)\",east],\n" - " AXIS[\"(N)\",north]]")); + " AXIS[\"(N)\",north],\n" + " UNIT[\"metre\",1]]")); EXPECT_THROW( WKTParser().createFromWKT("DERIVEDPROJCRS[\"derived projectedCRS\",\n" @@ -5042,7 +5077,8 @@ TEST(wkt_parse, invalid_DERIVEDPROJCRS) { " METHOD[\"PROJ unimplemented\"]],\n" " CS[Cartesian,2],\n" " AXIS[\"(E)\",east],\n" - " AXIS[\"(N)\",north]]"), + " AXIS[\"(N)\",north],\n" + " UNIT[\"metre\",1]]"), ParsingException); // Missing DERIVINGCONVERSION @@ -5058,7 +5094,8 @@ TEST(wkt_parse, invalid_DERIVEDPROJCRS) { " METHOD[\"PROJ unimplemented\"]]],\n" " CS[Cartesian,2],\n" " AXIS[\"(E)\",east],\n" - " AXIS[\"(N)\",north]]"), + " AXIS[\"(N)\",north],\n" + " UNIT[\"metre\",1]]"), ParsingException); // Missing CS @@ -5087,7 +5124,8 @@ TEST(wkt_parse, invalid_DerivedVerticalCRS) { " DERIVINGCONVERSION[\"unnamed\",\n" " METHOD[\"PROJ unimplemented\"]],\n" " CS[vertical,1],\n" - " AXIS[\"gravity-related height (H)\",up]]")); + " AXIS[\"gravity-related height (H)\",up],\n" + " UNIT[\"metre\",1]]")); // Missing DERIVINGCONVERSION EXPECT_THROW(WKTParser().createFromWKT( @@ -5095,7 +5133,8 @@ TEST(wkt_parse, invalid_DerivedVerticalCRS) { " BASEVERTCRS[\"ODN height\",\n" " VDATUM[\"Ordnance Datum Newlyn\"]],\n" " CS[vertical,1],\n" - " AXIS[\"gravity-related height (H)\",up]]"), + " AXIS[\"gravity-related height (H)\",up],\n" + " UNIT[\"metre\",1]]"), ParsingException); // Missing CS @@ -5115,7 +5154,8 @@ TEST(wkt_parse, invalid_DerivedVerticalCRS) { " DERIVINGCONVERSION[\"unnamed\",\n" " METHOD[\"PROJ unimplemented\"]],\n" " CS[parametric,1],\n" - " AXIS[\"gravity-related height (H)\",up]]"), + " AXIS[\"gravity-related height (H)\",up],\n" + " UNIT[\"metre\",1]]"), ParsingException); } -- cgit v1.2.3 From d87573cf62b339f22b24595fd05714f1b4e3bda3 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 28 Nov 2018 20:13:42 +0100 Subject: exportToWKT WKT1_GDAL: export axis by default for GeocentricCRS --- src/crs.cpp | 9 +++++++++ test/unit/test_crs.cpp | 3 +++ test/unit/test_io.cpp | 3 +++ 3 files changed, 15 insertions(+) diff --git a/src/crs.cpp b/src/crs.cpp index eec7a926..aa9209cd 100644 --- a/src/crs.cpp +++ b/src/crs.cpp @@ -861,7 +861,16 @@ void GeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const { if (!isWKT2) { unit._exportToWKT(formatter); } + + const auto oldAxisOutputRule = formatter->outputAxis(); + if (oldAxisOutputRule == + io::WKTFormatter::OutputAxisRule::WKT1_GDAL_EPSG_STYLE && + isGeocentric()) { + formatter->setOutputAxis(io::WKTFormatter::OutputAxisRule::YES); + } cs->_exportToWKT(formatter); + formatter->setOutputAxis(oldAxisOutputRule); + ObjectUsage::baseExportToWKT(formatter); if (!isWKT2 && !formatter->useESRIDialect()) { diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp index 55df5875..fa64620c 100644 --- a/test/unit/test_crs.cpp +++ b/test/unit/test_crs.cpp @@ -1107,6 +1107,9 @@ TEST(crs, geocentricCRS_as_WKT1_GDAL) { " AUTHORITY[\"EPSG\",\"8901\"]],\n" " UNIT[\"metre\",1,\n" " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Geocentric X\",OTHER],\n" + " AXIS[\"Geocentric Y\",OTHER],\n" + " AXIS[\"Geocentric Z\",NORTH],\n" " AUTHORITY[\"EPSG\",\"4328\"]]"); } diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index fa0305cc..7fdb1358 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -493,6 +493,9 @@ TEST(wkt_parse, wkt1_geocentric_with_PROJ4_extension) { " SPHEROID[\"WGS84\",6378137,298.257223563]],\n" " PRIMEM[\"Greenwich\",0],\n" " UNIT[\"Meter\",1],\n" + " AXIS[\"Geocentric X\",OTHER],\n" + " AXIS[\"Geocentric Y\",OTHER],\n" + " AXIS[\"Geocentric Z\",NORTH],\n" " EXTENSION[\"PROJ4\",\"+proj=geocent +foo=bar +wktext\"]]"; auto obj = WKTParser().createFromWKT(wkt); -- cgit v1.2.3 From 6d9a1a909886762cc99e1d8f289e2b60ea787bf7 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 29 Nov 2018 02:52:22 +0100 Subject: Preserve EPSG code when importFromWKT WKT1_GDAL of EPSG:3857 --- src/io.cpp | 11 ++++++----- test/unit/test_operation.cpp | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/io.cpp b/src/io.cpp index 749b3e14..90732a32 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -2829,7 +2829,7 @@ bool WKTParser::Private::hasWebMercPROJ4String( projCRSNode->countChildrenOfName("center_latitude") == 0) { // Hack to detect the hacky way of encodign webmerc in GDAL WKT1 - // with a EXTENSION["PROJ", "+proj=merc +a=6378137 +b=6378137 + // with a EXTENSION["PROJ4", "+proj=merc +a=6378137 +b=6378137 // +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m // +nadgrids=@null +wktext +no_defs"] node if (extensionNode && extensionNode->GP()->childrenSize() == 2 && @@ -3274,14 +3274,16 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { if (isNull(conversionNode) && isNull(projectionNode)) { ThrowMissing(WKTConstants::CONVERSION); } + + auto props = buildProperties(node); + if (isNull(conversionNode) && hasWebMercPROJ4String(node, projectionNode)) { auto conversion = Conversion::createPopularVisualisationPseudoMercator( PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0), Angle(0), Length(0), Length(0)); + props.set(IdentifiedObject::NAME_KEY, "WGS 84 / Pseudo-Mercator"); return ProjectedCRS::create( - PropertyMap().set(IdentifiedObject::NAME_KEY, - "WGS 84 / Pseudo-Mercator"), - GeographicCRS::EPSG_4326, conversion, + props, GeographicCRS::EPSG_4326, conversion, CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); } @@ -3377,7 +3379,6 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { ThrowNotExpectedCSType("Cartesian"); } - auto props = buildProperties(node); if (esriStyle_ && dbContext_) { auto projCRSName = stripQuotes(nodeP->children()[0]); diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index 818c10ec..c2e35e89 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -3016,6 +3016,29 @@ TEST(operation, webmerc_import_from_GDAL_wkt1) { // --------------------------------------------------------------------------- +TEST(operation, webmerc_import_from_GDAL_wkt1_with_EPSG_code) { + + auto projCRS = ProjectedCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, "Pseudo-Mercator") + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, "3857"), + GeographicCRS::EPSG_4326, + Conversion::createPopularVisualisationPseudoMercator( + PropertyMap(), Angle(0), Angle(0), Length(0), Length(0)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto wkt1 = projCRS->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()); + EXPECT_TRUE(wkt1.find("3857") != std::string::npos) << wkt1; + auto obj = WKTParser().createFromWKT(wkt1); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->identifiers().size(), 1); +} + +// --------------------------------------------------------------------------- + TEST(operation, webmerc_import_from_GDAL_wkt1_EPSG_3785_deprecated) { auto wkt1 = -- cgit v1.2.3 From cf855b24d2b901054bee90309cdc5df00dfb3085 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 28 Nov 2018 14:52:56 +0100 Subject: C API extensions and renaming - proj_obj_create_projected_XXXXX() are renamed to proj_obj_create_conversion_snake_case() and just instanciate a Conversion object - Advanced manipulation functions are moved to a dedicated section at bottom of proj.h - New C API needed for GDAL OGRSpatialReference --- include/proj/coordinateoperation.hpp | 3 + include/proj/coordinatesystem.hpp | 29 + include/proj/crs.hpp | 11 + scripts/create_c_api_projections.py | 55 +- src/c_api.cpp | 3318 +++++++++++++++++++++++----------- src/coordinateoperation.cpp | 52 + src/coordinatesystem.cpp | 97 + src/crs.cpp | 117 ++ src/proj.h | 1026 ++++++----- src/proj_symbol_rename.h | 1 + test/unit/test_c_api.cpp | 656 ++++--- test/unit/test_crs.cpp | 133 ++ 12 files changed, 3810 insertions(+), 1688 deletions(-) diff --git a/include/proj/coordinateoperation.hpp b/include/proj/coordinateoperation.hpp index 4005176a..4dd85e96 100644 --- a/include/proj/coordinateoperation.hpp +++ b/include/proj/coordinateoperation.hpp @@ -1286,6 +1286,9 @@ class PROJ_GCC_DLL Conversion : public SingleOperation { PROJ_INTERNAL ConversionNNPtr shallowClone() const; + PROJ_INTERNAL ConversionNNPtr alterParametersLinearUnit( + const common::UnitOfMeasure &unit, bool convertToNewUnit) const; + //! @endcond protected: diff --git a/include/proj/coordinatesystem.hpp b/include/proj/coordinatesystem.hpp index 89c2f99c..a301adab 100644 --- a/include/proj/coordinatesystem.hpp +++ b/include/proj/coordinatesystem.hpp @@ -208,6 +208,9 @@ class PROJ_GCC_DLL CoordinateSystemAxis final PROJ_INTERNAL static CoordinateSystemAxisNNPtr createLONG_EAST(const common::UnitOfMeasure &unit); + PROJ_INTERNAL CoordinateSystemAxisNNPtr + alterUnit(const common::UnitOfMeasure &newUnit) const; + //! @endcond private: @@ -372,6 +375,13 @@ class PROJ_GCC_DLL EllipsoidalCS final : public CoordinateSystem { }; PROJ_INTERNAL AxisOrder axisOrder() const; + + PROJ_INTERNAL EllipsoidalCSNNPtr + alterAngularUnit(const common::UnitOfMeasure &angularUnit) const; + + PROJ_INTERNAL EllipsoidalCSNNPtr + alterLinearUnit(const common::UnitOfMeasure &linearUnit) const; + //! @endcond protected: @@ -416,6 +426,13 @@ class PROJ_GCC_DLL VerticalCS final : public CoordinateSystem { PROJ_DLL static VerticalCSNNPtr createGravityRelatedHeight(const common::UnitOfMeasure &unit); + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL VerticalCSNNPtr + alterUnit(const common::UnitOfMeasure &unit) const; + + //! @endcond + protected: PROJ_INTERNAL explicit VerticalCS(const CoordinateSystemAxisNNPtr &axisIn); INLINED_MAKE_SHARED @@ -460,11 +477,23 @@ class PROJ_GCC_DLL CartesianCS final : public CoordinateSystem { const CoordinateSystemAxisNNPtr &axis1, const CoordinateSystemAxisNNPtr &axis2, const CoordinateSystemAxisNNPtr &axis3); + PROJ_DLL static CartesianCSNNPtr createEastingNorthing(const common::UnitOfMeasure &unit); + + PROJ_DLL static CartesianCSNNPtr + createNorthingEasting(const common::UnitOfMeasure &unit); + PROJ_DLL static CartesianCSNNPtr createGeocentric(const common::UnitOfMeasure &unit); + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL CartesianCSNNPtr + alterUnit(const common::UnitOfMeasure &unit) const; + + //! @endcond + protected: PROJ_INTERNAL explicit CartesianCS( const std::vector &axisIn); diff --git a/include/proj/crs.hpp b/include/proj/crs.hpp index 10e0a639..bdb36cd4 100644 --- a/include/proj/crs.hpp +++ b/include/proj/crs.hpp @@ -108,8 +108,16 @@ class PROJ_GCC_DLL CRS : public common::ObjectUsage { PROJ_FOR_TEST CRSNNPtr shallowClone() const; + PROJ_FOR_TEST CRSNNPtr alterName(const std::string &newName) const; + PROJ_INTERNAL const std::string &getExtensionProj4() const noexcept; + PROJ_FOR_TEST CRSNNPtr + alterGeodeticCRS(const GeodeticCRSNNPtr &newGeodCRS) const; + + PROJ_FOR_TEST CRSNNPtr + alterCSLinearUnit(const common::UnitOfMeasure &unit) const; + //! @endcond protected: @@ -557,6 +565,9 @@ class PROJ_GCC_DLL ProjectedCRS final : public DerivedCRS, PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) const override; // throw(io::FormattingException) + PROJ_FOR_TEST ProjectedCRSNNPtr alterParametersLinearUnit( + const common::UnitOfMeasure &unit, bool convertToNewUnit) const; + //! @endcond protected: diff --git a/scripts/create_c_api_projections.py b/scripts/create_c_api_projections.py index 5d10a16b..a56e99b3 100755 --- a/scripts/create_c_api_projections.py +++ b/scripts/create_c_api_projections.py @@ -56,6 +56,21 @@ cppfile.write("\n"); test_cppfile.write("/* BEGIN: Generated by scripts/create_c_api_projections.py*/\n") +def snake_casify(s): + out = '' + lastWasLowerAlpha = False + for c in s: + if c.isupper(): + if lastWasLowerAlpha: + out += '_' + out += c.lower() + lastWasLowerAlpha = False + else: + out += c + lastWasLowerAlpha = c.isalpha() + return out + + for sectiondef in compounddef.iter('sectiondef'): if sectiondef.attrib['kind'] == 'public-static-func': for func in sectiondef.iter('memberdef'): @@ -79,22 +94,31 @@ for sectiondef in compounddef.iter('sectiondef'): params.append((type, paramname)) shortName = name[len('create'):] + c_shortName = snake_casify(shortName) - decl = "proj_obj_create_projected_crs_" - decl += shortName + decl = "proj_obj_create_conversion_" + decl += c_shortName decl += "(\n" - decl += " PJ_OBJ* geodetic_crs, const char* crs_name,\n" + decl += " PJ_CONTEXT *ctx,\n" + has_output_params = False for param in params: + if has_output_params: + decl += ",\n" + if param[0] in ('int', 'bool'): - decl += " int " + param[1] + ",\n" + decl += " int " + param[1] else: - decl += " double " + param[1] + ",\n" + decl += " double " + param[1] + has_output_params = True + if has_angle: + if has_output_params: + decl += ",\n" decl += " const char* angUnitName, double angUnitConvFactor" - if has_linear: - decl += "," - decl += "\n" + has_output_params = True if has_linear: + if has_output_params: + decl += ",\n" decl += " const char* linearUnitName, double linearUnitConvFactor" decl += ")" @@ -113,9 +137,8 @@ for sectiondef in compounddef.iter('sectiondef'): cppfile.write(" * Angular parameters are expressed in (angUnitName, angUnitConvFactor).\n") cppfile.write(" */\n") cppfile.write("PJ_OBJ* " + decl + "{\n"); - if not has_linear: - cppfile.write(" const auto& linearUnit = UnitOfMeasure::METRE;\n") - else: + cppfile.write(" try {\n"); + if has_linear: cppfile.write(" UnitOfMeasure linearUnit(createLinearUnit(linearUnitName, linearUnitConvFactor));\n") if has_angle: cppfile.write(" UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor));\n") @@ -133,12 +156,16 @@ for sectiondef in compounddef.iter('sectiondef'): cppfile.write(", Scale(" + param[1] + ")") cppfile.write(");\n") - cppfile.write(" return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, linearUnit);\n") + cppfile.write(" return proj_obj_create_conversion(ctx, conv);\n") + cppfile.write(" } catch (const std::exception &e) {\n"); + cppfile.write(" proj_log_error(ctx, __FUNCTION__, e.what());\n") + cppfile.write(" }\n") + cppfile.write(" return nullptr;\n") cppfile.write("}\n") test_cppfile.write("{\n") - test_cppfile.write(" auto projCRS = proj_obj_create_projected_crs_" + shortName + "(\n") - test_cppfile.write(" geogCRS, nullptr") + test_cppfile.write(" auto projCRS = proj_obj_create_conversion_" + c_shortName + "(\n") + test_cppfile.write(" m_ctxt") for param in params: test_cppfile.write(", 0") if has_angle: diff --git a/src/c_api.cpp b/src/c_api.cpp index e74f4347..dc7bc3e6 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -96,10 +96,10 @@ struct PJ_OBJ { IdentifiedObjectNNPtr obj; // cached results - std::string lastWKT{}; - std::string lastPROJString{}; - bool gridsNeededAsked = false; - std::vector gridsNeeded{}; + mutable std::string lastWKT{}; + mutable std::string lastPROJString{}; + mutable bool gridsNeededAsked = false; + mutable std::vector gridsNeeded{}; explicit PJ_OBJ(PJ_CONTEXT *ctxIn, const IdentifiedObjectNNPtr &objIn) : ctx(ctxIn), obj(objIn) {} @@ -312,6 +312,29 @@ static const char *getOptionValue(const char *option, // --------------------------------------------------------------------------- +/** \brief "Clone" an object. + * + * Technically this just increases the reference counter on the object, since + * PJ_OBJ objects are immutable. + * + * The returned object must be unreferenced with proj_obj_unref() after use. + * It should be used by at most one thread at a time. + * + * @param obj Object to clone. Must not be NULL. + * @return Object that must be unreferenced with proj_obj_unref(), or NULL in + * case of error. + */ +PJ_OBJ *proj_obj_clone(const PJ_OBJ *obj) { + try { + return PJ_OBJ::create(obj->ctx, obj->obj); + } catch (const std::exception &e) { + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + /** \brief Instanciate an object from a WKT string, PROJ string or object code * (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326", * "urn:ogc:def:coordinateOperation:EPSG::1671"). @@ -561,6 +584,10 @@ convertPJObjectTypeToObjectType(PJ_OBJ_TYPE type, bool &valid) { cppType = AuthorityFactory::ObjectType::COMPOUND_CRS; break; + case PJ_OBJ_TYPE_ENGINEERING_CRS: + valid = false; + break; + case PJ_OBJ_TYPE_TEMPORAL_CRS: valid = false; break; @@ -658,7 +685,7 @@ PJ_OBJ_LIST *proj_obj_create_from_name(PJ_CONTEXT *ctx, const char *auth_name, * @param obj Object (must not be NULL) * @return its type. */ -PJ_OBJ_TYPE proj_obj_get_type(PJ_OBJ *obj) { +PJ_OBJ_TYPE proj_obj_get_type(const PJ_OBJ *obj) { assert(obj); auto ptr = obj->obj.get(); if (dynamic_cast(ptr)) { @@ -715,6 +742,9 @@ PJ_OBJ_TYPE proj_obj_get_type(PJ_OBJ *obj) { if (dynamic_cast(ptr)) { return PJ_OBJ_TYPE_TEMPORAL_CRS; } + if (dynamic_cast(ptr)) { + return PJ_OBJ_TYPE_ENGINEERING_CRS; + } if (dynamic_cast(ptr)) { return PJ_OBJ_TYPE_BOUND_CRS; } @@ -745,7 +775,7 @@ PJ_OBJ_TYPE proj_obj_get_type(PJ_OBJ *obj) { * @param obj Object (must not be NULL) * @return TRUE if it is deprecated, FALSE otherwise */ -int proj_obj_is_deprecated(PJ_OBJ *obj) { +int proj_obj_is_deprecated(const PJ_OBJ *obj) { assert(obj); return obj->obj->isDeprecated(); } @@ -759,7 +789,7 @@ int proj_obj_is_deprecated(PJ_OBJ *obj) { * @param criterion Comparison criterion * @return TRUE if they are equivalent */ -int proj_obj_is_equivalent_to(PJ_OBJ *obj, PJ_OBJ *other, +int proj_obj_is_equivalent_to(const PJ_OBJ *obj, const PJ_OBJ *other, PJ_COMPARISON_CRITERION criterion) { assert(obj); assert(other); @@ -796,7 +826,7 @@ int proj_obj_is_equivalent_to(PJ_OBJ *obj, PJ_OBJ *other, * * @param obj Object (must not be NULL) */ -int proj_obj_is_crs(PJ_OBJ *obj) { +int proj_obj_is_crs(const PJ_OBJ *obj) { assert(obj); return dynamic_cast(obj->obj.get()) != nullptr; } @@ -810,7 +840,7 @@ int proj_obj_is_crs(PJ_OBJ *obj) { * @param obj Object (must not be NULL) * @return a string, or NULL in case of error or missing name. */ -const char *proj_obj_get_name(PJ_OBJ *obj) { +const char *proj_obj_get_name(const PJ_OBJ *obj) { assert(obj); const auto &desc = obj->obj->name()->description(); if (!desc.has_value()) { @@ -831,7 +861,7 @@ const char *proj_obj_get_name(PJ_OBJ *obj) { * @param index Index of the identifier. 0 = first identifier * @return a string, or NULL in case of error or missing name. */ -const char *proj_obj_get_id_auth_name(PJ_OBJ *obj, int index) { +const char *proj_obj_get_id_auth_name(const PJ_OBJ *obj, int index) { assert(obj); const auto &ids = obj->obj->identifiers(); if (static_cast(index) >= ids.size()) { @@ -856,7 +886,7 @@ const char *proj_obj_get_id_auth_name(PJ_OBJ *obj, int index) { * @param index Index of the identifier. 0 = first identifier * @return a string, or NULL in case of error or missing name. */ -const char *proj_obj_get_id_code(PJ_OBJ *obj, int index) { +const char *proj_obj_get_id_code(const PJ_OBJ *obj, int index) { assert(obj); const auto &ids = obj->obj->identifiers(); if (static_cast(index) >= ids.size()) { @@ -892,7 +922,7 @@ const char *proj_obj_get_id_code(PJ_OBJ *obj, int index) { * * @return a string, or NULL in case of error. */ -const char *proj_obj_as_wkt(PJ_OBJ *obj, PJ_WKT_TYPE type, +const char *proj_obj_as_wkt(const PJ_OBJ *obj, PJ_WKT_TYPE type, const char *const *options) { assert(obj); @@ -983,7 +1013,7 @@ const char *proj_obj_as_wkt(PJ_OBJ *obj, PJ_WKT_TYPE type, * use of etmerc by utm conversions) * @return a string, or NULL in case of error. */ -const char *proj_obj_as_proj_string(PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, +const char *proj_obj_as_proj_string(const PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, const char *const *options) { assert(obj); auto exportable = @@ -1049,7 +1079,7 @@ const char *proj_obj_as_proj_string(PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, * @return TRUE in case of success, FALSE in case of error or if the area * of use is unknown. */ -int proj_obj_get_area_of_use(PJ_OBJ *obj, double *p_west_lon_degree, +int proj_obj_get_area_of_use(const PJ_OBJ *obj, double *p_west_lon_degree, double *p_south_lat_degree, double *p_east_lon_degree, double *p_north_lat_degree, @@ -1111,7 +1141,8 @@ int proj_obj_get_area_of_use(PJ_OBJ *obj, double *p_west_lon_degree, // --------------------------------------------------------------------------- -static const GeodeticCRS *extractGeodeticCRS(PJ_OBJ *crs, const char *fname) { +static const GeodeticCRS *extractGeodeticCRS(const PJ_OBJ *crs, + const char *fname) { assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { @@ -1137,7 +1168,7 @@ static const GeodeticCRS *extractGeodeticCRS(PJ_OBJ *crs, const char *fname) { * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_get_geodetic_crs(PJ_OBJ *crs) { +PJ_OBJ *proj_obj_crs_get_geodetic_crs(const PJ_OBJ *crs) { auto geodCRS = extractGeodeticCRS(crs, __FUNCTION__); if (!geodCRS) { return nullptr; @@ -1161,7 +1192,7 @@ PJ_OBJ *proj_obj_crs_get_geodetic_crs(PJ_OBJ *crs) { * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_get_sub_crs(PJ_OBJ *crs, int index) { +PJ_OBJ *proj_obj_crs_get_sub_crs(const PJ_OBJ *crs, int index) { assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { @@ -1177,6 +1208,54 @@ PJ_OBJ *proj_obj_crs_get_sub_crs(PJ_OBJ *crs, int index) { // --------------------------------------------------------------------------- +/** \brief Returns a BoundCRS + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param base_crs Base CRS (must not be NULL) + * @param hub_crs Hub CRS (must not be NULL) + * @param transformation Transformation (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error. + */ +PJ_OBJ *proj_obj_crs_create_bound_crs(const PJ_OBJ *base_crs, + const PJ_OBJ *hub_crs, + const PJ_OBJ *transformation) { + assert(base_crs); + assert(hub_crs); + assert(transformation); + auto l_base_crs = util::nn_dynamic_pointer_cast(base_crs->obj); + if (!l_base_crs) { + proj_log_error(base_crs->ctx, __FUNCTION__, "base_crs is not a CRS"); + return nullptr; + } + auto l_hub_crs = util::nn_dynamic_pointer_cast(hub_crs->obj); + if (!l_hub_crs) { + proj_log_error(base_crs->ctx, __FUNCTION__, "hub_crs is not a CRS"); + return nullptr; + } + auto l_transformation = + util::nn_dynamic_pointer_cast(transformation->obj); + if (!l_transformation) { + proj_log_error(base_crs->ctx, __FUNCTION__, + "transformation is not a CRS"); + return nullptr; + } + try { + return PJ_OBJ::create(base_crs->ctx, + BoundCRS::create(NN_NO_CHECK(l_base_crs), + NN_NO_CHECK(l_hub_crs), + NN_NO_CHECK(l_transformation))); + } catch (const std::exception &e) { + proj_log_error(base_crs->ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + /** \brief Returns potentially * a BoundCRS, with a transformation to EPSG:4326, wrapping this CRS * @@ -1191,7 +1270,7 @@ PJ_OBJ *proj_obj_crs_get_sub_crs(PJ_OBJ *crs, int index) { * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_create_bound_crs_to_WGS84(PJ_OBJ *crs) { +PJ_OBJ *proj_obj_crs_create_bound_crs_to_WGS84(const PJ_OBJ *crs) { assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { @@ -1199,8 +1278,13 @@ PJ_OBJ *proj_obj_crs_create_bound_crs_to_WGS84(PJ_OBJ *crs) { return nullptr; } auto dbContext = getDBcontextNoException(crs->ctx, __FUNCTION__); - return PJ_OBJ::create(crs->ctx, - l_crs->createBoundCRSToWGS84IfPossible(dbContext)); + try { + return PJ_OBJ::create( + crs->ctx, l_crs->createBoundCRSToWGS84IfPossible(dbContext)); + } catch (const std::exception &e) { + proj_log_error(crs->ctx, __FUNCTION__, e.what()); + return nullptr; + } } // --------------------------------------------------------------------------- @@ -1215,7 +1299,7 @@ PJ_OBJ *proj_obj_crs_create_bound_crs_to_WGS84(PJ_OBJ *crs) { * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_get_ellipsoid(PJ_OBJ *obj) { +PJ_OBJ *proj_obj_get_ellipsoid(const PJ_OBJ *obj) { auto ptr = obj->obj.get(); if (dynamic_cast(ptr)) { auto geodCRS = extractGeodeticCRS(obj, __FUNCTION__); @@ -1245,7 +1329,7 @@ PJ_OBJ *proj_obj_get_ellipsoid(PJ_OBJ *obj) { * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_get_horizontal_datum(PJ_OBJ *crs) { +PJ_OBJ *proj_obj_crs_get_horizontal_datum(const PJ_OBJ *crs) { auto geodCRS = extractGeodeticCRS(crs, __FUNCTION__); if (!geodCRS) { return nullptr; @@ -1279,7 +1363,7 @@ PJ_OBJ *proj_obj_crs_get_horizontal_datum(PJ_OBJ *crs) { * flattening. or NULL * @return TRUE in case of success. */ -int proj_obj_ellipsoid_get_parameters(PJ_OBJ *ellipsoid, +int proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, double *pSemiMajorMetre, double *pSemiMinorMetre, int *pIsSemiMinorComputed, @@ -1320,7 +1404,7 @@ int proj_obj_ellipsoid_get_parameters(PJ_OBJ *ellipsoid, * in case of error. */ -PJ_OBJ *proj_obj_get_prime_meridian(PJ_OBJ *obj) { +PJ_OBJ *proj_obj_get_prime_meridian(const PJ_OBJ *obj) { auto ptr = obj->obj.get(); if (dynamic_cast(ptr)) { auto geodCRS = extractGeodeticCRS(obj, __FUNCTION__); @@ -1351,7 +1435,7 @@ PJ_OBJ *proj_obj_get_prime_meridian(PJ_OBJ *obj) { * or NULL * @return TRUE in case of success. */ -int proj_obj_prime_meridian_get_parameters(PJ_OBJ *prime_meridian, +int proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, double *pLongitude, double *pLongitudeUnitConvFactor, const char **pLongitudeUnitName) { @@ -1389,7 +1473,7 @@ int proj_obj_prime_meridian_get_parameters(PJ_OBJ *prime_meridian, * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error, or missing source CRS. */ -PJ_OBJ *proj_obj_get_source_crs(PJ_OBJ *obj) { +PJ_OBJ *proj_obj_get_source_crs(const PJ_OBJ *obj) { assert(obj); auto ptr = obj->obj.get(); auto boundCRS = dynamic_cast(ptr); @@ -1426,7 +1510,7 @@ PJ_OBJ *proj_obj_get_source_crs(PJ_OBJ *obj) { * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error, or missing target CRS. */ -PJ_OBJ *proj_obj_get_target_crs(PJ_OBJ *obj) { +PJ_OBJ *proj_obj_get_target_crs(const PJ_OBJ *obj) { assert(obj); auto ptr = obj->obj.get(); auto boundCRS = dynamic_cast(ptr); @@ -1478,7 +1562,7 @@ PJ_OBJ *proj_obj_get_target_crs(PJ_OBJ *obj) { * released with proj_free_int_list(). * @return a list of matching reference CRS, or nullptr in case of error. */ -PJ_OBJ_LIST *proj_obj_identify(PJ_OBJ *obj, const char *auth_name, +PJ_OBJ_LIST *proj_obj_identify(const PJ_OBJ *obj, const char *auth_name, const char *const *options, int **confidence) { assert(obj); (void)options; @@ -1629,7 +1713,8 @@ void proj_free_string_list(PROJ_STRING_LIST list) { * @return Object of type SingleOperation that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_crs_get_coordoperation(PJ_OBJ *crs, const char **pMethodName, +PJ_OBJ *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, + const char **pMethodName, const char **pMethodAuthorityName, const char **pMethodCode) { assert(crs); @@ -1682,8 +1767,9 @@ static PropertyMap createPropertyMapName(const char *name) { // --------------------------------------------------------------------------- static UnitOfMeasure createLinearUnit(const char *name, double convFactor) { - return name == nullptr ? UnitOfMeasure::METRE - : UnitOfMeasure(name, convFactor); + return name == nullptr + ? UnitOfMeasure::METRE + : UnitOfMeasure(name, convFactor, UnitOfMeasure::Type::LINEAR); } // --------------------------------------------------------------------------- @@ -1693,21 +1779,55 @@ static UnitOfMeasure createAngularUnit(const char *name, double convFactor) { ? UnitOfMeasure::DEGREE : ci_equal(name, "grad") ? UnitOfMeasure::GRAD - : UnitOfMeasure(name, convFactor)) + : UnitOfMeasure(name, convFactor, + UnitOfMeasure::Type::ANGULAR)) : UnitOfMeasure::DEGREE; } + +// --------------------------------------------------------------------------- + +static GeodeticReferenceFrameNNPtr createGeodeticReferenceFrame( + PJ_CONTEXT *ctx, const char *datumName, const char *ellipsoidName, + double semiMajorMetre, double invFlattening, const char *primeMeridianName, + double primeMeridianOffset, const char *angularUnits, + double angularUnitsConv) { + const UnitOfMeasure angUnit( + createAngularUnit(angularUnits, angularUnitsConv)); + auto dbContext = getDBcontext(ctx); + auto body = Ellipsoid::guessBodyName(dbContext, semiMajorMetre); + auto ellpsName = createPropertyMapName(ellipsoidName); + auto ellps = + invFlattening != 0.0 + ? Ellipsoid::createFlattenedSphere( + ellpsName, Length(semiMajorMetre), Scale(invFlattening), body) + : Ellipsoid::createSphere(ellpsName, Length(semiMajorMetre), body); + auto pm = PrimeMeridian::create( + PropertyMap().set(common::IdentifiedObject::NAME_KEY, + primeMeridianName ? primeMeridianName + : primeMeridianOffset == 0.0 + ? (ellps->celestialBody() == + Ellipsoid::EARTH + ? "Greenwich" + : "Reference meridian") + : "unnamed"), + Angle(primeMeridianOffset, angUnit)); + return GeodeticReferenceFrame::create(createPropertyMapName(datumName), + ellps, util::optional(), + pm); +} + //! @endcond // --------------------------------------------------------------------------- -/** \brief Create a GeographicCRS 2D from its definition. +/** \brief Create a GeographicCRS. * * The returned object must be unreferenced with proj_obj_unref() after * use. * It should be used by at most one thread at a time. * * @param ctx PROJ context, or NULL for default context - * @param geogName Name of the GeographicCRS. Or NULL + * @param crsName Name of the GeographicCRS. Or NULL * @param datumName Name of the GeodeticReferenceFrame. Or NULL * @param ellipsoidName Name of the Ellipsoid. Or NULL * @param semiMajorMetre Ellipsoid semi-major axis, in metres. @@ -1715,52 +1835,34 @@ static UnitOfMeasure createAngularUnit(const char *name, double convFactor) { * @param primeMeridianName Name of the PrimeMeridian. Or NULL * @param primeMeridianOffset Offset of the prime meridian, expressed in the * specified angular units. - * @param angularUnits Name of the angular units. Or NULL for Degree - * @param angularUnitsConv Conversion factor from the angular unit to radian. Or + * @param pmAngularUnits Name of the angular units. Or NULL for Degree + * @param pmAngularUnitsConv Conversion factor from the angular unit to radian. + * Or * 0 for Degree if angularUnits == NULL. Otherwise should be not NULL - * @param latLongOrder TRUE for Latitude Longitude axis order. + * @param ellipsoidalCS Coordinate system. Must not be NULL. * * @return Object of type GeographicCRS that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_create_geographic_crs( - PJ_CONTEXT *ctx, const char *geogName, const char *datumName, + PJ_CONTEXT *ctx, const char *crsName, const char *datumName, const char *ellipsoidName, double semiMajorMetre, double invFlattening, const char *primeMeridianName, double primeMeridianOffset, - const char *angularUnits, double angularUnitsConv, int latLongOrder) { + const char *pmAngularUnits, double pmAngularUnitsConv, + PJ_OBJ *ellipsoidalCS) { SANITIZE_CTX(ctx); + auto cs = util::nn_dynamic_pointer_cast(ellipsoidalCS->obj); + if (!cs) { + return nullptr; + } try { - const UnitOfMeasure angUnit( - createAngularUnit(angularUnits, angularUnitsConv)); - auto dbContext = getDBcontext(ctx); - auto body = Ellipsoid::guessBodyName(dbContext, semiMajorMetre); - auto ellpsName = createPropertyMapName(ellipsoidName); - auto ellps = - invFlattening != 0.0 - ? Ellipsoid::createFlattenedSphere(ellpsName, - Length(semiMajorMetre), - Scale(invFlattening), body) - : Ellipsoid::createSphere(ellpsName, Length(semiMajorMetre), - body); - auto pm = PrimeMeridian::create( - PropertyMap().set( - common::IdentifiedObject::NAME_KEY, - primeMeridianName - ? primeMeridianName - : primeMeridianOffset == 0.0 - ? (ellps->celestialBody() == Ellipsoid::EARTH - ? "Greenwich" - : "Reference meridian") - : "unnamed"), - Angle(primeMeridianOffset, angUnit)); - auto datum = GeodeticReferenceFrame::create( - createPropertyMapName(datumName), ellps, - util::optional(), pm); - auto geogCRS = GeographicCRS::create( - createPropertyMapName(geogName), datum, - latLongOrder ? cs::EllipsoidalCS::createLatitudeLongitude(angUnit) - : cs::EllipsoidalCS::createLongitudeLatitude(angUnit)); + auto datum = createGeodeticReferenceFrame( + ctx, datumName, ellipsoidName, semiMajorMetre, invFlattening, + primeMeridianName, primeMeridianOffset, pmAngularUnits, + pmAngularUnitsConv); + auto geogCRS = GeographicCRS::create(createPropertyMapName(crsName), + datum, NN_NO_CHECK(cs)); return PJ_OBJ::create(ctx, geogCRS); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -1770,258 +1872,1054 @@ PJ_OBJ *proj_obj_create_geographic_crs( // --------------------------------------------------------------------------- -//! @cond Doxygen_Suppress - -static PJ_OBJ *proj_obj_create_projected_crs(PJ_OBJ *geodetic_crs, - const char *crs_name, - const ConversionNNPtr &conv, - const UnitOfMeasure &linearUnit) { - assert(geodetic_crs); - auto geogCRS = - util::nn_dynamic_pointer_cast(geodetic_crs->obj); - if (!geogCRS) { +/** \brief Create a GeographicCRS. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param crsName Name of the GeographicCRS. Or NULL + * @param datum Datum. Must not be NULL. + * @param ellipsoidalCS Coordinate system. Must not be NULL. + * + * @return Object of type GeographicCRS that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ +PJ_OBJ *proj_obj_create_geographic_crs_from_datum(const char *crsName, + PJ_OBJ *datum, + PJ_OBJ *ellipsoidalCS) { + + auto l_datum = + util::nn_dynamic_pointer_cast(datum->obj); + if (!l_datum) { + proj_log_error(datum->ctx, __FUNCTION__, + "datum is not a GeodeticReferenceFrame"); return nullptr; } - auto crs = ProjectedCRS::create( - createPropertyMapName(crs_name), NN_NO_CHECK(geogCRS), conv, - cs::CartesianCS::createEastingNorthing(linearUnit)); - return PJ_OBJ::create(geodetic_crs->ctx, crs); + auto cs = util::nn_dynamic_pointer_cast(ellipsoidalCS->obj); + if (!cs) { + return nullptr; + } + try { + auto geogCRS = + GeographicCRS::create(createPropertyMapName(crsName), + NN_NO_CHECK(l_datum), NN_NO_CHECK(cs)); + return PJ_OBJ::create(datum->ctx, geogCRS); + } catch (const std::exception &e) { + proj_log_error(datum->ctx, __FUNCTION__, e.what()); + } + return nullptr; } -//! @endcond - -/* BEGIN: Generated by scripts/create_c_api_projections.py*/ - // --------------------------------------------------------------------------- -/** \brief Instanciate a ProjectedCRS with a Universal Transverse Mercator - * conversion. +/** \brief Create a GeodeticCRS of geocentric type. * - * See osgeo::proj::operation::Conversion::createUTM(). + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * @param ctx PROJ context, or NULL for default context + * @param crsName Name of the GeographicCRS. Or NULL + * @param datumName Name of the GeodeticReferenceFrame. Or NULL + * @param ellipsoidName Name of the Ellipsoid. Or NULL + * @param semiMajorMetre Ellipsoid semi-major axis, in metres. + * @param invFlattening Ellipsoid inverse flattening. Or 0 for a sphere. + * @param primeMeridianName Name of the PrimeMeridian. Or NULL + * @param primeMeridianOffset Offset of the prime meridian, expressed in the + * specified angular units. + * @param angularUnits Name of the angular units. Or NULL for Degree + * @param angularUnitsConv Conversion factor from the angular unit to radian. Or + * 0 for Degree if angularUnits == NULL. Otherwise should be not NULL + * @param linearUnits Name of the linear units. Or NULL for Metre + * @param linearUnitsConv Conversion factor from the linear unit to metre. Or + * 0 for Metre if linearUnits == NULL. Otherwise should be not NULL + * + * @return Object of type GeodeticCRS that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_create_projected_crs_UTM(PJ_OBJ *geodetic_crs, - const char *crs_name, int zone, - int north) { - const auto &linearUnit = UnitOfMeasure::METRE; - auto conv = Conversion::createUTM(PropertyMap(), zone, north != 0); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_geocentric_crs( + PJ_CONTEXT *ctx, const char *crsName, const char *datumName, + const char *ellipsoidName, double semiMajorMetre, double invFlattening, + const char *primeMeridianName, double primeMeridianOffset, + const char *angularUnits, double angularUnitsConv, const char *linearUnits, + double linearUnitsConv) { + + SANITIZE_CTX(ctx); + try { + const UnitOfMeasure linearUnit( + createLinearUnit(linearUnits, linearUnitsConv)); + auto datum = createGeodeticReferenceFrame( + ctx, datumName, ellipsoidName, semiMajorMetre, invFlattening, + primeMeridianName, primeMeridianOffset, angularUnits, + angularUnitsConv); + + auto geodCRS = + GeodeticCRS::create(createPropertyMapName(crsName), datum, + cs::CartesianCS::createGeocentric(linearUnit)); + return PJ_OBJ::create(ctx, geodCRS); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } + // --------------------------------------------------------------------------- -/** \brief Instanciate a ProjectedCRS with a conversion based on the Transverse - * Mercator projection method. +/** \brief Create a GeodeticCRS of geocentric type. * - * See osgeo::proj::operation::Conversion::createTransverseMercator(). + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * @param crsName Name of the GeographicCRS. Or NULL + * @param datum Datum. Must not be NULL. + * @param linearUnits Name of the linear units. Or NULL for Metre + * @param linearUnitsConv Conversion factor from the linear unit to metre. Or + * 0 for Metre if linearUnits == NULL. Otherwise should be not NULL + * + * @return Object of type GeodeticCRS that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_create_projected_crs_TransverseMercator( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double scale, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createTransverseMercator( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Scale(scale), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_geocentric_crs_from_datum(const char *crsName, + const PJ_OBJ *datum, + const char *linearUnits, + double linearUnitsConv) { + try { + const UnitOfMeasure linearUnit( + createLinearUnit(linearUnits, linearUnitsConv)); + auto l_datum = + util::nn_dynamic_pointer_cast(datum->obj); + if (!l_datum) { + proj_log_error(datum->ctx, __FUNCTION__, + "datum is not a GeodeticReferenceFrame"); + return nullptr; + } + auto geodCRS = GeodeticCRS::create( + createPropertyMapName(crsName), NN_NO_CHECK(l_datum), + cs::CartesianCS::createGeocentric(linearUnit)); + return PJ_OBJ::create(datum->ctx, geodCRS); + } catch (const std::exception &e) { + proj_log_error(datum->ctx, __FUNCTION__, e.what()); + } + return nullptr; } + // --------------------------------------------------------------------------- -/** \brief Instanciate a ProjectedCRS with a conversion based on the Gauss - * Schreiber Transverse Mercator projection method. +/** \brief Return a copy of the object with its name changed * - * See - * osgeo::proj::operation::Conversion::createGaussSchreiberTransverseMercator(). + * Currently, only implemented on CRS objects. * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double scale, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createGaussSchreiberTransverseMercator( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Scale(scale), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); -} -// --------------------------------------------------------------------------- - -/** \brief Instanciate a ProjectedCRS with a conversion based on the Transverse - * Mercator South Orientated projection method. + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. * - * See - * osgeo::proj::operation::Conversion::createTransverseMercatorSouthOriented(). + * @param obj Object of type CRS. Must not be NULL + * @param name New name. Must not be NULL * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_create_projected_crs_TransverseMercatorSouthOriented( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double scale, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createTransverseMercatorSouthOriented( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Scale(scale), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ PROJ_DLL *proj_obj_alter_name(const PJ_OBJ *obj, const char *name) { + auto crs = dynamic_cast(obj->obj.get()); + if (!crs) { + return nullptr; + } + try { + return PJ_OBJ::create(obj->ctx, crs->alterName(name)); + } catch (const std::exception &e) { + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + } + return nullptr; } + // --------------------------------------------------------------------------- -/** \brief Instanciate a ProjectedCRS with a conversion based on the Two Point - * Equidistant projection method. +/** \brief Return a copy of the CRS with its geodetic CRS changed * - * See osgeo::proj::operation::Conversion::createTwoPointEquidistant(). + * Currently, when obj is a GeodeticCRS, it returns a clone of newGeodCRS + * When obj is a ProjectedCRS, it replaces its base CRS with newGeodCRS. + * When obj is a CompoundCRS, it replaces the GeodeticCRS part of the horizontal + * CRS with newGeodCRS. + * In other cases, it returns a clone of obj. * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_projected_crs_TwoPointEquidistant( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstPoint, - double longitudeFirstPoint, double latitudeSecondPoint, - double longitudeSeconPoint, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createTwoPointEquidistant( - PropertyMap(), Angle(latitudeFirstPoint, angUnit), - Angle(longitudeFirstPoint, angUnit), - Angle(latitudeSecondPoint, angUnit), - Angle(longitudeSeconPoint, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); -} -// --------------------------------------------------------------------------- - -/** \brief Instanciate a ProjectedCRS with a conversion based on the Tunisia - * Mapping Grid projection method. + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. * - * See osgeo::proj::operation::Conversion::createTunisiaMappingGrid(). + * @param obj Object of type CRS. Must not be NULL + * @param newGeodCRS Object of type GeodeticCRS. Must not be NULL * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_create_projected_crs_TunisiaMappingGrid( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createTunisiaMappingGrid( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_crs_alter_geodetic_crs(const PJ_OBJ *obj, + const PJ_OBJ *newGeodCRS) { + auto l_newGeodCRS = + util::nn_dynamic_pointer_cast(newGeodCRS->obj); + if (!l_newGeodCRS) { + proj_log_error(obj->ctx, __FUNCTION__, + "newGeodCRS is not a GeodeticCRS"); + return nullptr; + } + + auto crs = dynamic_cast(obj->obj.get()); + if (!crs) { + proj_log_error(obj->ctx, __FUNCTION__, "obj is not a CRS"); + return nullptr; + } + + try { + return PJ_OBJ::create(obj->ctx, + crs->alterGeodeticCRS(NN_NO_CHECK(l_newGeodCRS))); + } catch (const std::exception &e) { + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + return nullptr; + } } + // --------------------------------------------------------------------------- -/** \brief Instanciate a ProjectedCRS with a conversion based on the Albers - * Conic Equal Area projection method. +/** \brief Return a copy of the CRS with its angular units changed * - * See osgeo::proj::operation::Conversion::createAlbersEqualArea(). + * The CRS must be or contain a GeographicCRS. * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_projected_crs_AlbersEqualArea( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFalseOrigin, - double longitudeFalseOrigin, double latitudeFirstParallel, - double latitudeSecondParallel, double eastingFalseOrigin, - double northingFalseOrigin, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createAlbersEqualArea( - PropertyMap(), Angle(latitudeFalseOrigin, angUnit), - Angle(longitudeFalseOrigin, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(eastingFalseOrigin, linearUnit), - Length(northingFalseOrigin, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); -} -// --------------------------------------------------------------------------- - -/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert - * Conic Conformal 1SP projection method. + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. * - * See osgeo::proj::operation::Conversion::createLambertConicConformal_1SP(). + * @param obj Object of type CRS. Must not be NULL + * @param angularUnits Name of the angular units. Or NULL for Degree + * @param angularUnitsConv Conversion factor from the angular unit to radian. Or + * 0 for Degree if angularUnits == NULL. Otherwise should be not NULL * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_1SP( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double scale, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createLambertConicConformal_1SP( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Scale(scale), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(const PJ_OBJ *obj, + const char *angularUnits, + double angularUnitsConv) { + + auto geodCRS = proj_obj_crs_get_geodetic_crs(obj); + if (!geodCRS) { + return nullptr; + } + auto geogCRS = dynamic_cast(geodCRS->obj.get()); + if (!geogCRS) { + proj_obj_unref(geodCRS); + return nullptr; + } + + PJ_OBJ *geogCRSAltered = nullptr; + try { + const UnitOfMeasure angUnit( + createAngularUnit(angularUnits, angularUnitsConv)); + geogCRSAltered = PJ_OBJ::create( + obj->ctx, + GeographicCRS::create( + createPropertyMapName(proj_obj_get_name(geodCRS)), + geogCRS->datum(), geogCRS->datumEnsemble(), + geogCRS->coordinateSystem()->alterAngularUnit(angUnit))); + proj_obj_unref(geodCRS); + } catch (const std::exception &e) { + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_obj_unref(geodCRS); + return nullptr; + } + + auto ret = proj_obj_crs_alter_geodetic_crs(obj, geogCRSAltered); + proj_obj_unref(geogCRSAltered); + return ret; } + // --------------------------------------------------------------------------- -/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert - * Conic Conformal (2SP) projection method. +/** \brief Return a copy of the CRS with the linear units of its coordinate + * system changed * - * See osgeo::proj::operation::Conversion::createLambertConicConformal_2SP(). + * The CRS must be or contain a ProjectedCRS, VerticalCRS or a GeocentricCRS. * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFalseOrigin, - double longitudeFalseOrigin, double latitudeFirstParallel, - double latitudeSecondParallel, double eastingFalseOrigin, - double northingFalseOrigin, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param obj Object of type CRS. Must not be NULL + * @param linearUnits Name of the linear units. Or NULL for Metre + * @param linearUnitsConv Conversion factor from the linear unit to metre. Or + * 0 for Metre if linearUnits == NULL. Otherwise should be not NULL + * + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ +PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(const PJ_OBJ *obj, + const char *linearUnits, + double linearUnitsConv) { + auto crs = dynamic_cast(obj->obj.get()); + if (!crs) { + return nullptr; + } + + try { + const UnitOfMeasure linearUnit( + createLinearUnit(linearUnits, linearUnitsConv)); + return PJ_OBJ::create(obj->ctx, crs->alterCSLinearUnit(linearUnit)); + } catch (const std::exception &e) { + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Return a copy of the CRS with the lineaer units of the parameters + * of its conversion modified. + * + * The CRS must be or contain a ProjectedCRS, VerticalCRS or a GeocentricCRS. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param obj Object of type ProjectedCRS. Must not be NULL + * @param linearUnits Name of the linear units. Or NULL for Metre + * @param linearUnitsConv Conversion factor from the linear unit to metre. Or + * 0 for Metre if linearUnits == NULL. Otherwise should be not NULL + * @param convertToNewUnit TRUE if exisiting values should be converted from + * their current unit to the new unit. If FALSE, their value will be left + * unchanged and the unit overriden (so the resulting CRS will not be + * equivalent to the original one for reprojection purposes). + * + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ +PJ_OBJ *proj_obj_crs_alter_parameters_linear_unit(const PJ_OBJ *obj, + const char *linearUnits, + double linearUnitsConv, + int convertToNewUnit) { + auto crs = dynamic_cast(obj->obj.get()); + if (!crs) { + return nullptr; + } + + try { + const UnitOfMeasure linearUnit( + createLinearUnit(linearUnits, linearUnitsConv)); + return PJ_OBJ::create( + obj->ctx, crs->alterParametersLinearUnit(linearUnit, + convertToNewUnit == TRUE)); + } catch (const std::exception &e) { + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a EngineeringCRS with just a name + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param crsName CRS name. Or NULL. + * + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ +PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx, + const char *crsName) { + try { + return PJ_OBJ::create( + ctx, EngineeringCRS::create( + createPropertyMapName(crsName), + EngineeringDatum::create(PropertyMap()), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE))); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Conversion + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param name Conversion name. Or NULL. + * @param auth_name Conversion authority name. Or NULL. + * @param code Conversion code. Or NULL. + * @param method_name Method name. Or NULL. + * @param method_auth_name Method authority name. Or NULL. + * @param method_code Method code. Or NULL. + * @param param_count Number of parameters (size of params argument) + * @param params Parameter descriptions (array of size param_count) + * + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ + +PJ_OBJ *proj_obj_create_conversion(PJ_CONTEXT *ctx, const char *name, + const char *auth_name, const char *code, + const char *method_name, + const char *method_auth_name, + const char *method_code, int param_count, + const PJ_PARAM_DESCRIPTION *params) { + try { + PropertyMap propConv; + propConv.set(common::IdentifiedObject::NAME_KEY, + name ? name : "unnamed"); + if (auth_name && code) { + propConv.set(metadata::Identifier::CODESPACE_KEY, auth_name) + .set(metadata::Identifier::CODE_KEY, code); + } + PropertyMap propMethod; + propMethod.set(common::IdentifiedObject::NAME_KEY, + method_name ? method_name : "unnamed"); + if (method_auth_name && method_code) { + propMethod + .set(metadata::Identifier::CODESPACE_KEY, method_auth_name) + .set(metadata::Identifier::CODE_KEY, method_code); + } + std::vector parameters; + std::vector values; + for (int i = 0; i < param_count; i++) { + PropertyMap propParam; + propParam.set(common::IdentifiedObject::NAME_KEY, + params[i].name ? params[i].name : "unnamed"); + if (params[i].auth_name && params[i].code) { + propParam + .set(metadata::Identifier::CODESPACE_KEY, + params[i].auth_name) + .set(metadata::Identifier::CODE_KEY, params[i].code); + } + parameters.emplace_back(OperationParameter::create(propParam)); + auto unit_type = UnitOfMeasure::Type::UNKNOWN; + switch (params[i].unit_type) { + case PJ_UT_ANGULAR: + unit_type = UnitOfMeasure::Type::ANGULAR; + break; + case PJ_UT_LINEAR: + unit_type = UnitOfMeasure::Type::LINEAR; + break; + case PJ_UT_SCALE: + unit_type = UnitOfMeasure::Type::SCALE; + break; + case PJ_UT_TIME: + unit_type = UnitOfMeasure::Type::TIME; + break; + case PJ_UT_PARAMETRIC: + unit_type = UnitOfMeasure::Type::PARAMETRIC; + break; + } + + Measure measure( + params[i].value, + params[i].unit_type == PJ_UT_ANGULAR + ? createAngularUnit(params[i].unit_name, + params[i].unit_conv_factor) + : params[i].unit_type == PJ_UT_LINEAR + ? createLinearUnit(params[i].unit_name, + params[i].unit_conv_factor) + : UnitOfMeasure( + params[i].unit_name ? params[i].unit_name + : "unnamed", + params[i].unit_conv_factor, unit_type)); + values.emplace_back(ParameterValue::create(measure)); + } + return PJ_OBJ::create( + ctx, Conversion::create(propConv, propMethod, parameters, values)); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static CoordinateSystemAxisNNPtr createAxis(const PJ_AXIS_DESCRIPTION &axis) { + const auto dir = + axis.direction ? AxisDirection::valueOf(axis.direction) : nullptr; + if (dir == nullptr) + throw Exception("invalid value for axis direction"); + auto unit_type = UnitOfMeasure::Type::UNKNOWN; + switch (axis.unit_type) { + case PJ_UT_ANGULAR: + unit_type = UnitOfMeasure::Type::ANGULAR; + break; + case PJ_UT_LINEAR: + unit_type = UnitOfMeasure::Type::LINEAR; + break; + case PJ_UT_SCALE: + unit_type = UnitOfMeasure::Type::SCALE; + break; + case PJ_UT_TIME: + unit_type = UnitOfMeasure::Type::TIME; + break; + case PJ_UT_PARAMETRIC: + unit_type = UnitOfMeasure::Type::PARAMETRIC; + break; + } + auto unit = + axis.unit_type == PJ_UT_ANGULAR + ? createAngularUnit(axis.unit_name, axis.unit_conv_factor) + : axis.unit_type == PJ_UT_LINEAR + ? createLinearUnit(axis.unit_name, axis.unit_conv_factor) + : UnitOfMeasure(axis.unit_name ? axis.unit_name : "unnamed", + axis.unit_conv_factor, unit_type); + + return CoordinateSystemAxis::create( + createPropertyMapName(axis.name), + axis.abbreviation ? axis.abbreviation : std::string(), *dir, unit); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CoordinateSystem. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param type Coordinate system type. + * @param axis_count Number of axis + * @param axis Axis description (array of size axis_count) + * + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ + +PJ_OBJ *proj_obj_create_cs(PJ_CONTEXT *ctx, PJ_COORDINATE_SYSTEM_TYPE type, + int axis_count, const PJ_AXIS_DESCRIPTION *axis) { + try { + switch (type) { + case PJ_CS_TYPE_UNKNOWN: + return nullptr; + + case PJ_CS_TYPE_CARTESIAN: { + if (axis_count == 2) { + return PJ_OBJ::create( + ctx, CartesianCS::create(PropertyMap(), createAxis(axis[0]), + createAxis(axis[1]))); + } else if (axis_count == 3) { + return PJ_OBJ::create( + ctx, CartesianCS::create(PropertyMap(), createAxis(axis[0]), + createAxis(axis[1]), + createAxis(axis[2]))); + } + break; + } + + case PJ_CS_TYPE_ELLIPSOIDAL: { + if (axis_count == 2) { + return PJ_OBJ::create( + ctx, + EllipsoidalCS::create(PropertyMap(), createAxis(axis[0]), + createAxis(axis[1]))); + } else if (axis_count == 3) { + return PJ_OBJ::create( + ctx, EllipsoidalCS::create( + PropertyMap(), createAxis(axis[0]), + createAxis(axis[1]), createAxis(axis[2]))); + } + break; + } + + case PJ_CS_TYPE_VERTICAL: { + if (axis_count == 1) { + return PJ_OBJ::create( + ctx, + VerticalCS::create(PropertyMap(), createAxis(axis[0]))); + } + break; + } + + case PJ_CS_TYPE_SPHERICAL: { + if (axis_count == 3) { + return PJ_OBJ::create( + ctx, EllipsoidalCS::create( + PropertyMap(), createAxis(axis[0]), + createAxis(axis[1]), createAxis(axis[2]))); + } + break; + } + + case PJ_CS_TYPE_PARAMETRIC: { + if (axis_count == 1) { + return PJ_OBJ::create( + ctx, + ParametricCS::create(PropertyMap(), createAxis(axis[0]))); + } + break; + } + + case PJ_CS_TYPE_ORDINAL: { + std::vector axisVector; + for (int i = 0; i < axis_count; i++) { + axisVector.emplace_back(createAxis(axis[i])); + } + + return PJ_OBJ::create(ctx, + OrdinalCS::create(PropertyMap(), axisVector)); + } + + case PJ_CS_TYPE_DATETIMETEMPORAL: { + if (axis_count == 1) { + return PJ_OBJ::create( + ctx, DateTimeTemporalCS::create(PropertyMap(), + createAxis(axis[0]))); + } + break; + } + + case PJ_CS_TYPE_TEMPORALCOUNT: { + if (axis_count == 1) { + return PJ_OBJ::create( + ctx, TemporalCountCS::create(PropertyMap(), + createAxis(axis[0]))); + } + break; + } + + case PJ_CS_TYPE_TEMPORALMEASURE: { + if (axis_count == 1) { + return PJ_OBJ::create( + ctx, TemporalMeasureCS::create(PropertyMap(), + createAxis(axis[0]))); + } + break; + } + } + + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + return nullptr; + } + proj_log_error(ctx, __FUNCTION__, "Wrong value for axis_count"); + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CartesiansCS 2D + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param type Coordinate system type. + * @param unit_name Unit name. + * @param unit_conv_factor Unit conversion factor to SI. + * + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ + +PJ_OBJ *proj_obj_create_cartesian_2D_cs(PJ_CONTEXT *ctx, + PJ_CARTESIAN_CS_2D_TYPE type, + const char *unit_name, + double unit_conv_factor) { + try { + switch (type) { + case PJ_CART2D_EASTING_NORTHING: + return PJ_OBJ::create( + ctx, CartesianCS::createEastingNorthing( + createLinearUnit(unit_name, unit_conv_factor))); + + case PJ_CART2D_NORTHING_EASTING: + return PJ_OBJ::create( + ctx, CartesianCS::createNorthingEasting( + createLinearUnit(unit_name, unit_conv_factor))); + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Ellipsoidal 2D + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param type Coordinate system type. + * @param unit_name Unit name. + * @param unit_conv_factor Unit conversion factor to SI. + * + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ + +PJ_OBJ *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx, + PJ_ELLIPSOIDAL_CS_2D_TYPE type, + const char *unit_name, + double unit_conv_factor) { + try { + switch (type) { + case PJ_ELLPS2D_LONGITUDE_LATITUDE: + return PJ_OBJ::create( + ctx, EllipsoidalCS::createLongitudeLatitude( + createAngularUnit(unit_name, unit_conv_factor))); + + case PJ_ELLPS2D_LATITUDE_LONGITUDE: + return PJ_OBJ::create( + ctx, EllipsoidalCS::createLatitudeLongitude( + createAngularUnit(unit_name, unit_conv_factor))); + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param crs_name CRS name. Or NULL + * @param geodetic_crs Base GeodeticCRS. Must not be NULL. + * @param conversion Conversion. Must not be NULL. + * @param coordinate_system Cartesian coordinate system. Must not be NULL. + * + * @return Object that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ + +PJ_OBJ *proj_obj_create_projected_crs(const char *crs_name, + const PJ_OBJ *geodetic_crs, + const PJ_OBJ *conversion, + const PJ_OBJ *coordinate_system) { + auto geodCRS = + util::nn_dynamic_pointer_cast(geodetic_crs->obj); + if (!geodCRS) { + return nullptr; + } + auto conv = util::nn_dynamic_pointer_cast(conversion->obj); + if (!conv) { + return nullptr; + } + auto cs = + util::nn_dynamic_pointer_cast(coordinate_system->obj); + if (!cs) { + return nullptr; + } + try { + return PJ_OBJ::create( + geodetic_crs->ctx, + ProjectedCRS::create(createPropertyMapName(crs_name), + NN_NO_CHECK(geodCRS), NN_NO_CHECK(conv), + NN_NO_CHECK(cs))); + } catch (const std::exception &e) { + proj_log_error(geodetic_crs->ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static PJ_OBJ *proj_obj_create_conversion(PJ_CONTEXT *ctx, + const ConversionNNPtr &conv) { + return PJ_OBJ::create(ctx, conv); +} + +//! @endcond + +/* BEGIN: Generated by scripts/create_c_api_projections.py*/ + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a Universal Transverse Mercator + * conversion. + * + * See osgeo::proj::operation::Conversion::createUTM(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_utm(PJ_CONTEXT *ctx, int zone, int north) { + try { + auto conv = Conversion::createUTM(PropertyMap(), zone, north != 0); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Transverse + * Mercator projection method. + * + * See osgeo::proj::operation::Conversion::createTransverseMercator(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_transverse_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createTransverseMercator( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Gauss + * Schreiber Transverse Mercator projection method. + * + * See + * osgeo::proj::operation::Conversion::createGaussSchreiberTransverseMercator(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGaussSchreiberTransverseMercator( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Transverse + * Mercator South Orientated projection method. + * + * See + * osgeo::proj::operation::Conversion::createTransverseMercatorSouthOriented(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_transverse_mercator_south_oriented( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createTransverseMercatorSouthOriented( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Two Point + * Equidistant projection method. + * + * See osgeo::proj::operation::Conversion::createTwoPointEquidistant(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_two_point_equidistant( + PJ_CONTEXT *ctx, double latitudeFirstPoint, double longitudeFirstPoint, + double latitudeSecondPoint, double longitudeSeconPoint, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createTwoPointEquidistant( + PropertyMap(), Angle(latitudeFirstPoint, angUnit), + Angle(longitudeFirstPoint, angUnit), + Angle(latitudeSecondPoint, angUnit), + Angle(longitudeSeconPoint, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Tunisia + * Mapping Grid projection method. + * + * See osgeo::proj::operation::Conversion::createTunisiaMappingGrid(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_tunisia_mapping_grid( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createTunisiaMappingGrid( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Albers + * Conic Equal Area projection method. + * + * See osgeo::proj::operation::Conversion::createAlbersEqualArea(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_albers_equal_area( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, + double latitudeFirstParallel, double latitudeSecondParallel, + double eastingFalseOrigin, double northingFalseOrigin, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createAlbersEqualArea( + PropertyMap(), Angle(latitudeFalseOrigin, angUnit), + Angle(longitudeFalseOrigin, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(eastingFalseOrigin, linearUnit), + Length(northingFalseOrigin, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Conic Conformal 1SP projection method. + * + * See osgeo::proj::operation::Conversion::createLambertConicConformal_1SP(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_1sp( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createLambertConicConformal_2SP( - PropertyMap(), Angle(latitudeFalseOrigin, angUnit), - Angle(longitudeFalseOrigin, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(eastingFalseOrigin, linearUnit), - Length(northingFalseOrigin, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertConicConformal_1SP( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Conic Conformal (2SP) projection method. + * + * See osgeo::proj::operation::Conversion::createLambertConicConformal_2SP(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, + double latitudeFirstParallel, double latitudeSecondParallel, + double eastingFalseOrigin, double northingFalseOrigin, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(latitudeFalseOrigin, angUnit), + Angle(longitudeFalseOrigin, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(eastingFalseOrigin, linearUnit), + Length(northingFalseOrigin, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2034,25 +2932,31 @@ PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFalseOrigin, - double longitudeFalseOrigin, double latitudeFirstParallel, - double latitudeSecondParallel, double eastingFalseOrigin, - double northingFalseOrigin, double ellipsoidScalingFactor, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createLambertConicConformal_2SP_Michigan( - PropertyMap(), Angle(latitudeFalseOrigin, angUnit), - Angle(longitudeFalseOrigin, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(eastingFalseOrigin, linearUnit), - Length(northingFalseOrigin, linearUnit), Scale(ellipsoidScalingFactor)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, + double latitudeFirstParallel, double latitudeSecondParallel, + double eastingFalseOrigin, double northingFalseOrigin, + double ellipsoidScalingFactor, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertConicConformal_2SP_Michigan( + PropertyMap(), Angle(latitudeFalseOrigin, angUnit), + Angle(longitudeFalseOrigin, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(eastingFalseOrigin, linearUnit), + Length(northingFalseOrigin, linearUnit), + Scale(ellipsoidScalingFactor)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2065,25 +2969,29 @@ PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFalseOrigin, - double longitudeFalseOrigin, double latitudeFirstParallel, - double latitudeSecondParallel, double eastingFalseOrigin, - double northingFalseOrigin, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createLambertConicConformal_2SP_Belgium( - PropertyMap(), Angle(latitudeFalseOrigin, angUnit), - Angle(longitudeFalseOrigin, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(eastingFalseOrigin, linearUnit), - Length(northingFalseOrigin, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, + double latitudeFirstParallel, double latitudeSecondParallel, + double eastingFalseOrigin, double northingFalseOrigin, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertConicConformal_2SP_Belgium( + PropertyMap(), Angle(latitudeFalseOrigin, angUnit), + Angle(longitudeFalseOrigin, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(eastingFalseOrigin, linearUnit), + Length(northingFalseOrigin, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2095,20 +3003,26 @@ PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_AzimuthalEquidistant( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeNatOrigin, - double longitudeNatOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createAzimuthalEquidistant( - PropertyMap(), Angle(latitudeNatOrigin, angUnit), - Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_azimuthal_equidistant( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createAzimuthalEquidistant( + PropertyMap(), Angle(latitudeNatOrigin, angUnit), + Angle(longitudeNatOrigin, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2120,20 +3034,26 @@ PJ_OBJ *proj_obj_create_projected_crs_AzimuthalEquidistant( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_GuamProjection( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeNatOrigin, - double longitudeNatOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createGuamProjection( - PropertyMap(), Angle(latitudeNatOrigin, angUnit), - Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_guam_projection( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGuamProjection( + PropertyMap(), Angle(latitudeNatOrigin, angUnit), + Angle(longitudeNatOrigin, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2145,20 +3065,26 @@ PJ_OBJ *proj_obj_create_projected_crs_GuamProjection( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Bonne( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeNatOrigin, - double longitudeNatOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createBonne( - PropertyMap(), Angle(latitudeNatOrigin, angUnit), - Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_bonne( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createBonne(PropertyMap(), + Angle(latitudeNatOrigin, angUnit), + Angle(longitudeNatOrigin, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2171,20 +3097,26 @@ PJ_OBJ *proj_obj_create_projected_crs_Bonne( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, - double longitudeNatOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createLambertCylindricalEqualAreaSpherical( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertCylindricalEqualAreaSpherical( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(longitudeNatOrigin, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2196,20 +3128,26 @@ PJ_OBJ *proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_LambertCylindricalEqualArea( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, - double longitudeNatOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createLambertCylindricalEqualArea( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertCylindricalEqualArea( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(longitudeNatOrigin, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2221,19 +3159,24 @@ PJ_OBJ *proj_obj_create_projected_crs_LambertCylindricalEqualArea( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_CassiniSoldner( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_cassini_soldner( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createCassiniSoldner( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createCassiniSoldner( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2245,22 +3188,28 @@ PJ_OBJ *proj_obj_create_projected_crs_CassiniSoldner( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EquidistantConic( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double latitudeFirstParallel, - double latitudeSecondParallel, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEquidistantConic( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_equidistant_conic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, + double latitudeFirstParallel, double latitudeSecondParallel, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEquidistantConic( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2272,19 +3221,24 @@ PJ_OBJ *proj_obj_create_projected_crs_EquidistantConic( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EckertI( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEckertI( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_eckert_i( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = + Conversion::createEckertI(PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2296,19 +3250,24 @@ PJ_OBJ *proj_obj_create_projected_crs_EckertI( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EckertII( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEckertII( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_eckert_ii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertII( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2320,19 +3279,24 @@ PJ_OBJ *proj_obj_create_projected_crs_EckertII( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EckertIII( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEckertIII( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_eckert_iii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertIII( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2344,19 +3308,24 @@ PJ_OBJ *proj_obj_create_projected_crs_EckertIII( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EckertIV( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEckertIV( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_eckert_iv( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertIV( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2368,19 +3337,24 @@ PJ_OBJ *proj_obj_create_projected_crs_EckertIV( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EckertV( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEckertV( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_eckert_v( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = + Conversion::createEckertV(PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2392,19 +3366,24 @@ PJ_OBJ *proj_obj_create_projected_crs_EckertV( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EckertVI( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEckertVI( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_eckert_vi( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertVI( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2416,20 +3395,26 @@ PJ_OBJ *proj_obj_create_projected_crs_EckertVI( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EquidistantCylindrical( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, - double longitudeNatOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEquidistantCylindrical( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEquidistantCylindrical( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(longitudeNatOrigin, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2442,20 +3427,26 @@ PJ_OBJ *proj_obj_create_projected_crs_EquidistantCylindrical( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EquidistantCylindricalSpherical( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, - double longitudeNatOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEquidistantCylindricalSpherical( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical_spherical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEquidistantCylindricalSpherical( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(longitudeNatOrigin, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2467,19 +3458,24 @@ PJ_OBJ *proj_obj_create_projected_crs_EquidistantCylindricalSpherical( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Gall( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createGall( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_gall( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = + Conversion::createGall(PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2491,19 +3487,24 @@ PJ_OBJ *proj_obj_create_projected_crs_Gall( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_GoodeHomolosine( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createGoodeHomolosine( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_goode_homolosine( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGoodeHomolosine( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2515,19 +3516,24 @@ PJ_OBJ *proj_obj_create_projected_crs_GoodeHomolosine( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_InterruptedGoodeHomolosine( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createInterruptedGoodeHomolosine( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_interrupted_goode_homolosine( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createInterruptedGoodeHomolosine( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2540,19 +3546,24 @@ PJ_OBJ *proj_obj_create_projected_crs_InterruptedGoodeHomolosine( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_GeostationarySatelliteSweepX( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double height, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_x( + PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createGeostationarySatelliteSweepX( - PropertyMap(), Angle(centerLong, angUnit), Length(height, linearUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGeostationarySatelliteSweepX( + PropertyMap(), Angle(centerLong, angUnit), + Length(height, linearUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2565,19 +3576,24 @@ PJ_OBJ *proj_obj_create_projected_crs_GeostationarySatelliteSweepX( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_GeostationarySatelliteSweepY( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double height, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_y( + PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createGeostationarySatelliteSweepY( - PropertyMap(), Angle(centerLong, angUnit), Length(height, linearUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGeostationarySatelliteSweepY( + PropertyMap(), Angle(centerLong, angUnit), + Length(height, linearUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2589,19 +3605,24 @@ PJ_OBJ *proj_obj_create_projected_crs_GeostationarySatelliteSweepY( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Gnomonic( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_gnomonic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createGnomonic( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGnomonic( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2614,23 +3635,29 @@ PJ_OBJ *proj_obj_create_projected_crs_Gnomonic( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, +PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeProjectionCentre, double azimuthInitialLine, double angleFromRectifiedToSkrewGrid, double scale, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createHotineObliqueMercatorVariantA( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(longitudeProjectionCentre, angUnit), - Angle(azimuthInitialLine, angUnit), - Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createHotineObliqueMercatorVariantA( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(longitudeProjectionCentre, angUnit), + Angle(azimuthInitialLine, angUnit), + Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2643,25 +3670,30 @@ PJ_OBJ *proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, +PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeProjectionCentre, double azimuthInitialLine, double angleFromRectifiedToSkrewGrid, double scale, double eastingProjectionCentre, double northingProjectionCentre, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createHotineObliqueMercatorVariantB( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(longitudeProjectionCentre, angUnit), - Angle(azimuthInitialLine, angUnit), - Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), - Length(eastingProjectionCentre, linearUnit), - Length(northingProjectionCentre, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createHotineObliqueMercatorVariantB( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(longitudeProjectionCentre, angUnit), + Angle(azimuthInitialLine, angUnit), + Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), + Length(eastingProjectionCentre, linearUnit), + Length(northingProjectionCentre, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2675,24 +3707,30 @@ PJ_OBJ *proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ PJ_OBJ * -proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, - double latitudePoint1, double longitudePoint1, double latitudePoint2, - double longitudePoint2, double scale, double eastingProjectionCentre, +proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double latitudePoint1, + double longitudePoint1, double latitudePoint2, double longitudePoint2, + double scale, double eastingProjectionCentre, double northingProjectionCentre, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(latitudePoint1, angUnit), Angle(longitudePoint1, angUnit), - Angle(latitudePoint2, angUnit), Angle(longitudePoint2, angUnit), - Scale(scale), Length(eastingProjectionCentre, linearUnit), - Length(northingProjectionCentre, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = + Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(latitudePoint1, angUnit), Angle(longitudePoint1, angUnit), + Angle(latitudePoint2, angUnit), Angle(longitudePoint2, angUnit), + Scale(scale), Length(eastingProjectionCentre, linearUnit), + Length(northingProjectionCentre, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2705,22 +3743,27 @@ proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_InternationalMapWorldPolyconic( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double latitudeFirstParallel, double latitudeSecondParallel, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createInternationalMapWorldPolyconic( - PropertyMap(), Angle(centerLong, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_international_map_world_polyconic( + PJ_CONTEXT *ctx, double centerLong, double latitudeFirstParallel, + double latitudeSecondParallel, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createInternationalMapWorldPolyconic( + PropertyMap(), Angle(centerLong, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2732,24 +3775,30 @@ PJ_OBJ *proj_obj_create_projected_crs_InternationalMapWorldPolyconic( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_KrovakNorthOriented( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, - double longitudeOfOrigin, double colatitudeConeAxis, - double latitudePseudoStandardParallel, +PJ_OBJ *proj_obj_create_conversion_krovak_north_oriented( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeOfOrigin, + double colatitudeConeAxis, double latitudePseudoStandardParallel, double scaleFactorPseudoStandardParallel, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createKrovakNorthOriented( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(longitudeOfOrigin, angUnit), Angle(colatitudeConeAxis, angUnit), - Angle(latitudePseudoStandardParallel, angUnit), - Scale(scaleFactorPseudoStandardParallel), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createKrovakNorthOriented( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(longitudeOfOrigin, angUnit), + Angle(colatitudeConeAxis, angUnit), + Angle(latitudePseudoStandardParallel, angUnit), + Scale(scaleFactorPseudoStandardParallel), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2761,24 +3810,30 @@ PJ_OBJ *proj_obj_create_projected_crs_KrovakNorthOriented( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Krovak( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, - double longitudeOfOrigin, double colatitudeConeAxis, - double latitudePseudoStandardParallel, +PJ_OBJ *proj_obj_create_conversion_krovak( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeOfOrigin, + double colatitudeConeAxis, double latitudePseudoStandardParallel, double scaleFactorPseudoStandardParallel, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createKrovak( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(longitudeOfOrigin, angUnit), Angle(colatitudeConeAxis, angUnit), - Angle(latitudePseudoStandardParallel, angUnit), - Scale(scaleFactorPseudoStandardParallel), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createKrovak( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(longitudeOfOrigin, angUnit), + Angle(colatitudeConeAxis, angUnit), + Angle(latitudePseudoStandardParallel, angUnit), + Scale(scaleFactorPseudoStandardParallel), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2790,20 +3845,26 @@ PJ_OBJ *proj_obj_create_projected_crs_Krovak( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_LambertAzimuthalEqualArea( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeNatOrigin, - double longitudeNatOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createLambertAzimuthalEqualArea( - PropertyMap(), Angle(latitudeNatOrigin, angUnit), - Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_lambert_azimuthal_equal_area( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertAzimuthalEqualArea( + PropertyMap(), Angle(latitudeNatOrigin, angUnit), + Angle(longitudeNatOrigin, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2815,19 +3876,24 @@ PJ_OBJ *proj_obj_create_projected_crs_LambertAzimuthalEqualArea( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_MillerCylindrical( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createMillerCylindrical( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_miller_cylindrical( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createMillerCylindrical( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2839,20 +3905,26 @@ PJ_OBJ *proj_obj_create_projected_crs_MillerCylindrical( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_MercatorVariantA( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double scale, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createMercatorVariantA( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Scale(scale), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_mercator_variant_a( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createMercatorVariantA( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2864,20 +3936,25 @@ PJ_OBJ *proj_obj_create_projected_crs_MercatorVariantA( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_MercatorVariantB( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createMercatorVariantB( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_mercator_variant_b( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createMercatorVariantB( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2890,19 +3967,24 @@ PJ_OBJ *proj_obj_create_projected_crs_MercatorVariantB( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_PopularVisualisationPseudoMercator( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createPopularVisualisationPseudoMercator( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createPopularVisualisationPseudoMercator( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2914,19 +3996,24 @@ PJ_OBJ *proj_obj_create_projected_crs_PopularVisualisationPseudoMercator( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Mollweide( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createMollweide( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_mollweide( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createMollweide( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2938,19 +4025,24 @@ PJ_OBJ *proj_obj_create_projected_crs_Mollweide( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_NewZealandMappingGrid( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_new_zealand_mapping_grid( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createNewZealandMappingGrid( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createNewZealandMappingGrid( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2962,20 +4054,26 @@ PJ_OBJ *proj_obj_create_projected_crs_NewZealandMappingGrid( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_ObliqueStereographic( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double scale, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createObliqueStereographic( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Scale(scale), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_oblique_stereographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createObliqueStereographic( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -2987,19 +4085,24 @@ PJ_OBJ *proj_obj_create_projected_crs_ObliqueStereographic( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Orthographic( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_orthographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createOrthographic( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createOrthographic( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3011,19 +4114,24 @@ PJ_OBJ *proj_obj_create_projected_crs_Orthographic( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_AmericanPolyconic( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_american_polyconic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createAmericanPolyconic( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createAmericanPolyconic( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3035,20 +4143,26 @@ PJ_OBJ *proj_obj_create_projected_crs_AmericanPolyconic( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_PolarStereographicVariantA( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double scale, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createPolarStereographicVariantA( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Scale(scale), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_a( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createPolarStereographicVariantA( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3060,20 +4174,25 @@ PJ_OBJ *proj_obj_create_projected_crs_PolarStereographicVariantA( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_PolarStereographicVariantB( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeStandardParallel, - double longitudeOfOrigin, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createPolarStereographicVariantB( - PropertyMap(), Angle(latitudeStandardParallel, angUnit), - Angle(longitudeOfOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_b( + PJ_CONTEXT *ctx, double latitudeStandardParallel, double longitudeOfOrigin, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createPolarStereographicVariantB( + PropertyMap(), Angle(latitudeStandardParallel, angUnit), + Angle(longitudeOfOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3085,19 +4204,24 @@ PJ_OBJ *proj_obj_create_projected_crs_PolarStereographicVariantB( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Robinson( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createRobinson( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_robinson( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createRobinson( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3109,19 +4233,24 @@ PJ_OBJ *proj_obj_create_projected_crs_Robinson( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Sinusoidal( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createSinusoidal( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_sinusoidal( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createSinusoidal( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3133,20 +4262,26 @@ PJ_OBJ *proj_obj_create_projected_crs_Sinusoidal( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_Stereographic( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double scale, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createStereographic( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Scale(scale), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_stereographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createStereographic( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Scale(scale), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3158,19 +4293,24 @@ PJ_OBJ *proj_obj_create_projected_crs_Stereographic( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_VanDerGrinten( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createVanDerGrinten( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_van_der_grinten( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createVanDerGrinten( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3182,19 +4322,24 @@ PJ_OBJ *proj_obj_create_projected_crs_VanDerGrinten( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_WagnerI( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createWagnerI( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_wagner_i( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = + Conversion::createWagnerI(PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3206,19 +4351,24 @@ PJ_OBJ *proj_obj_create_projected_crs_WagnerI( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_WagnerII( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createWagnerII( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_wagner_ii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerII( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3230,20 +4380,25 @@ PJ_OBJ *proj_obj_create_projected_crs_WagnerII( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_WagnerIII( - PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeTrueScale, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createWagnerIII( - PropertyMap(), Angle(latitudeTrueScale, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_wagner_iii( + PJ_CONTEXT *ctx, double latitudeTrueScale, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerIII( + PropertyMap(), Angle(latitudeTrueScale, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3255,19 +4410,24 @@ PJ_OBJ *proj_obj_create_projected_crs_WagnerIII( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_WagnerIV( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createWagnerIV( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_wagner_iv( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerIV( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3279,19 +4439,24 @@ PJ_OBJ *proj_obj_create_projected_crs_WagnerIV( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_WagnerV( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createWagnerV( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_wagner_v( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = + Conversion::createWagnerV(PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3303,19 +4468,24 @@ PJ_OBJ *proj_obj_create_projected_crs_WagnerV( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_WagnerVI( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createWagnerVI( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_wagner_vi( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerVI( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3327,19 +4497,24 @@ PJ_OBJ *proj_obj_create_projected_crs_WagnerVI( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_WagnerVII( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createWagnerVII( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_wagner_vii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerVII( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3352,19 +4527,24 @@ PJ_OBJ *proj_obj_create_projected_crs_WagnerVII( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, - double centerLong, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, +PJ_OBJ *proj_obj_create_conversion_quadrilateralized_spherical_cube( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createQuadrilateralizedSphericalCube( - PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createQuadrilateralizedSphericalCube( + PropertyMap(), Angle(centerLat, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3376,20 +4556,25 @@ PJ_OBJ *proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_SphericalCrossTrackHeight( - PJ_OBJ *geodetic_crs, const char *crs_name, double pegPointLat, - double pegPointLong, double pegPointHeading, double pegPointHeight, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createSphericalCrossTrackHeight( - PropertyMap(), Angle(pegPointLat, angUnit), - Angle(pegPointLong, angUnit), Angle(pegPointHeading, angUnit), - Length(pegPointHeight, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_spherical_cross_track_height( + PJ_CONTEXT *ctx, double pegPointLat, double pegPointLong, + double pegPointHeading, double pegPointHeight, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createSphericalCrossTrackHeight( + PropertyMap(), Angle(pegPointLat, angUnit), + Angle(pegPointLong, angUnit), Angle(pegPointHeading, angUnit), + Length(pegPointHeight, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } // --------------------------------------------------------------------------- @@ -3401,19 +4586,24 @@ PJ_OBJ *proj_obj_create_projected_crs_SphericalCrossTrackHeight( * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). * Angular parameters are expressed in (angUnitName, angUnitConvFactor). */ -PJ_OBJ *proj_obj_create_projected_crs_EqualEarth( - PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { - UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); - UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createEqualEarth( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, - linearUnit); +PJ_OBJ *proj_obj_create_conversion_equal_earth( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + try { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit( + createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEqualEarth( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_conversion(ctx, conv); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; } /* END: Generated by scripts/create_c_api_projections.py*/ @@ -3428,7 +4618,7 @@ PJ_OBJ *proj_obj_create_projected_crs_EqualEarth( * @return TRUE or FALSE. */ -int proj_coordoperation_is_instanciable(PJ_OBJ *coordoperation) { +int proj_coordoperation_is_instanciable(const PJ_OBJ *coordoperation) { assert(coordoperation); auto op = dynamic_cast(coordoperation->obj.get()); @@ -3453,7 +4643,7 @@ int proj_coordoperation_is_instanciable(PJ_OBJ *coordoperation) { * (must not be NULL) */ -int proj_coordoperation_get_param_count(PJ_OBJ *coordoperation) { +int proj_coordoperation_get_param_count(const PJ_OBJ *coordoperation) { assert(coordoperation); auto op = dynamic_cast(coordoperation->obj.get()); if (!op) { @@ -3474,7 +4664,7 @@ int proj_coordoperation_get_param_count(PJ_OBJ *coordoperation) { * @return index (>=0), or -1 in case of error. */ -int proj_coordoperation_get_param_index(PJ_OBJ *coordoperation, +int proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, const char *name) { assert(coordoperation); assert(name); @@ -3517,7 +4707,7 @@ int proj_coordoperation_get_param_index(PJ_OBJ *coordoperation, * @return TRUE in case of success. */ -int proj_coordoperation_get_param(PJ_OBJ *coordoperation, int index, +int proj_coordoperation_get_param(const PJ_OBJ *coordoperation, int index, const char **pName, const char **pNameAuthorityName, const char **pNameCode, double *pValue, @@ -3613,7 +4803,7 @@ int proj_coordoperation_get_param(PJ_OBJ *coordoperation, int index, * (must not be NULL) */ -int proj_coordoperation_get_grid_used_count(PJ_OBJ *coordoperation) { +int proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation) { assert(coordoperation); auto co = dynamic_cast(coordoperation->obj.get()); @@ -3662,7 +4852,7 @@ int proj_coordoperation_get_grid_used_count(PJ_OBJ *coordoperation) { * @return TRUE in case of success. */ -int proj_coordoperation_get_grid_used(PJ_OBJ *coordoperation, int index, +int proj_coordoperation_get_grid_used(const PJ_OBJ *coordoperation, int index, const char **pShortName, const char **pFullName, const char **pPackageName, @@ -3993,9 +5183,9 @@ void proj_operation_factory_context_set_allowed_intermediate_crs( * @return a result set that must be unreferenced with * proj_obj_list_unref(), or NULL in case of error. */ -PJ_OBJ_LIST * -proj_obj_create_operations(PJ_OBJ *source_crs, PJ_OBJ *target_crs, - PJ_OPERATION_FACTORY_CONTEXT *operationContext) { +PJ_OBJ_LIST *proj_obj_create_operations( + const PJ_OBJ *source_crs, const PJ_OBJ *target_crs, + const PJ_OPERATION_FACTORY_CONTEXT *operationContext) { assert(source_crs); assert(target_crs); assert(operationContext); @@ -4035,7 +5225,7 @@ proj_obj_create_operations(PJ_OBJ *source_crs, PJ_OBJ *target_crs, * * @param result Objet of type PJ_OBJ_LIST (must not be NULL) */ -int proj_obj_list_get_count(PJ_OBJ_LIST *result) { +int proj_obj_list_get_count(const PJ_OBJ_LIST *result) { assert(result); return static_cast(result->objects.size()); } @@ -4054,7 +5244,7 @@ int proj_obj_list_get_count(PJ_OBJ_LIST *result) { * or nullptr in case of error. */ -PJ_OBJ *proj_obj_list_get(PJ_OBJ_LIST *result, int index) { +PJ_OBJ *proj_obj_list_get(const PJ_OBJ_LIST *result, int index) { assert(result); if (index < 0 || index >= proj_obj_list_get_count(result)) { proj_log_error(result->ctx, __FUNCTION__, "Invalid index"); @@ -4080,7 +5270,7 @@ void proj_obj_list_unref(PJ_OBJ_LIST *result) { delete result; } * * @return the accuracy, or a negative value if unknown or in case of error. */ -double proj_coordoperation_get_accuracy(PJ_OBJ *coordoperation) { +double proj_coordoperation_get_accuracy(const PJ_OBJ *coordoperation) { assert(coordoperation); auto co = dynamic_cast(coordoperation->obj.get()); @@ -4102,6 +5292,32 @@ double proj_coordoperation_get_accuracy(PJ_OBJ *coordoperation) { // --------------------------------------------------------------------------- +/** \brief Returns the datum of a SingleCRS. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param crs Objet of type SingleCRS (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error (or if there is no datum) + */ +PJ_OBJ *proj_obj_crs_get_datum(const PJ_OBJ *crs) { + assert(crs); + auto l_crs = dynamic_cast(crs->obj.get()); + if (!l_crs) { + proj_log_error(crs->ctx, __FUNCTION__, "Object is not a SingleCRS"); + return nullptr; + } + const auto &datum = l_crs->datum(); + if (!datum) { + return nullptr; + } + return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(datum)); +} + +// --------------------------------------------------------------------------- + /** \brief Returns the coordinate system of a SingleCRS. * * The returned object must be unreferenced with proj_obj_unref() after @@ -4112,7 +5328,7 @@ double proj_coordoperation_get_accuracy(PJ_OBJ *coordoperation) { * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_get_coordinate_system(PJ_OBJ *crs) { +PJ_OBJ *proj_obj_crs_get_coordinate_system(const PJ_OBJ *crs) { assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { @@ -4127,44 +5343,44 @@ PJ_OBJ *proj_obj_crs_get_coordinate_system(PJ_OBJ *crs) { /** \brief Returns the type of the coordinate system. * * @param cs Objet of type CoordinateSystem (must not be NULL) - * @return type, or NULL in case of error. + * @return type, or PJ_CS_TYPE_UNKNOWN in case of error. */ -const char *proj_obj_cs_get_type(PJ_OBJ *cs) { +PJ_COORDINATE_SYSTEM_TYPE proj_obj_cs_get_type(const PJ_OBJ *cs) { assert(cs); auto l_cs = dynamic_cast(cs->obj.get()); if (!l_cs) { proj_log_error(cs->ctx, __FUNCTION__, "Object is not a CoordinateSystem"); - return nullptr; + return PJ_CS_TYPE_UNKNOWN; } if (dynamic_cast(l_cs)) { - return "Cartesian"; + return PJ_CS_TYPE_CARTESIAN; } if (dynamic_cast(l_cs)) { - return "Ellipsoidal"; + return PJ_CS_TYPE_ELLIPSOIDAL; } if (dynamic_cast(l_cs)) { - return "Vertical"; + return PJ_CS_TYPE_VERTICAL; } if (dynamic_cast(l_cs)) { - return "Spherical"; + return PJ_CS_TYPE_SPHERICAL; } if (dynamic_cast(l_cs)) { - return "Ordinal"; + return PJ_CS_TYPE_ORDINAL; } if (dynamic_cast(l_cs)) { - return "Parametric"; + return PJ_CS_TYPE_PARAMETRIC; } if (dynamic_cast(l_cs)) { - return "DateTimeTemporal"; + return PJ_CS_TYPE_DATETIMETEMPORAL; } if (dynamic_cast(l_cs)) { - return "TemporalCount"; + return PJ_CS_TYPE_TEMPORALCOUNT; } if (dynamic_cast(l_cs)) { - return "TemporalMeasure"; + return PJ_CS_TYPE_TEMPORALMEASURE; } - return "unknown"; + return PJ_CS_TYPE_UNKNOWN; } // --------------------------------------------------------------------------- @@ -4174,7 +5390,7 @@ const char *proj_obj_cs_get_type(PJ_OBJ *cs) { * @param cs Objet of type CoordinateSystem (must not be NULL) * @return number of axis, or -1 in case of error. */ -int proj_obj_cs_get_axis_count(PJ_OBJ *cs) { +int proj_obj_cs_get_axis_count(const PJ_OBJ *cs) { assert(cs); auto l_cs = dynamic_cast(cs->obj.get()); if (!l_cs) { @@ -4203,7 +5419,7 @@ int proj_obj_cs_get_axis_count(PJ_OBJ *cs) { * unit name. or NULL * @return TRUE in case of success */ -int proj_obj_cs_get_axis_info(PJ_OBJ *cs, int index, const char **pName, +int proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, const char **pName, const char **pAbbrev, const char **pDirection, double *pUnitConvFactor, const char **pUnitName) { assert(cs); diff --git a/src/coordinateoperation.cpp b/src/coordinateoperation.cpp index 893b52d3..dce25653 100644 --- a/src/coordinateoperation.cpp +++ b/src/coordinateoperation.cpp @@ -1898,6 +1898,58 @@ ConversionNNPtr Conversion::shallowClone() const { // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +ConversionNNPtr +Conversion::alterParametersLinearUnit(const common::UnitOfMeasure &unit, + bool convertToNewUnit) const { + + std::vector newValues; + bool changesDone = false; + for (const auto &genOpParamvalue : parameterValues()) { + bool updated = false; + auto opParamvalue = dynamic_cast( + genOpParamvalue.get()); + if (opParamvalue) { + const auto ¶mValue = opParamvalue->parameterValue(); + if (paramValue->type() == ParameterValue::Type::MEASURE) { + const auto &measure = paramValue->value(); + if (measure.unit().type() == + common::UnitOfMeasure::Type::LINEAR) { + if (!measure.unit()._isEquivalentTo( + unit, util::IComparable::Criterion::EQUIVALENT)) { + const double newValue = + convertToNewUnit ? measure.convertToUnit(unit) + : measure.value(); + newValues.emplace_back(OperationParameterValue::create( + opParamvalue->parameter(), + ParameterValue::create( + common::Measure(newValue, unit)))); + updated = true; + } + } + } + } + if (updated) { + changesDone = true; + } else { + newValues.emplace_back(genOpParamvalue); + } + } + if (changesDone) { + auto conv = create(util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, "unknown"), + method(), newValues); + conv->setCRSs(this, false); + return conv; + } else { + return NN_NO_CHECK( + util::nn_dynamic_pointer_cast(shared_from_this())); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + /** \brief Instanciate a Conversion from a vector of GeneralParameterValue. * * @param properties See \ref general_properties. At minimum the name should be diff --git a/src/coordinatesystem.cpp b/src/coordinatesystem.cpp index f8d2d2b3..f1220878 100644 --- a/src/coordinatesystem.cpp +++ b/src/coordinatesystem.cpp @@ -415,6 +415,16 @@ bool CoordinateSystemAxis::_isEquivalentTo( // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +CoordinateSystemAxisNNPtr +CoordinateSystemAxis::alterUnit(const common::UnitOfMeasure &newUnit) const { + return create(util::PropertyMap().set(IdentifiedObject::NAME_KEY, name()), + abbreviation(), direction(), newUnit, meridian()); +} +//! @endcond + +// --------------------------------------------------------------------------- + //! @cond Doxygen_Suppress struct CoordinateSystem::Private { std::vector axisList{}; @@ -737,6 +747,43 @@ EllipsoidalCS::AxisOrder EllipsoidalCS::axisOrder() const { // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +EllipsoidalCSNNPtr EllipsoidalCS::alterAngularUnit( + const common::UnitOfMeasure &angularUnit) const { + const auto &l_axisList = CoordinateSystem::getPrivate()->axisList; + if (l_axisList.size() == 2) { + return EllipsoidalCS::create(util::PropertyMap(), + l_axisList[0]->alterUnit(angularUnit), + l_axisList[1]->alterUnit(angularUnit)); + } else { + assert(l_axisList.size() == 3); + return EllipsoidalCS::create( + util::PropertyMap(), l_axisList[0]->alterUnit(angularUnit), + l_axisList[1]->alterUnit(angularUnit), l_axisList[2]); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +EllipsoidalCSNNPtr +EllipsoidalCS::alterLinearUnit(const common::UnitOfMeasure &linearUnit) const { + const auto &l_axisList = CoordinateSystem::getPrivate()->axisList; + if (l_axisList.size() == 2) { + return EllipsoidalCS::create(util::PropertyMap(), l_axisList[0], + l_axisList[1]); + } else { + assert(l_axisList.size() == 3); + return EllipsoidalCS::create(util::PropertyMap(), l_axisList[0], + l_axisList[1], + l_axisList[2]->alterUnit(linearUnit)); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + //! @cond Doxygen_Suppress VerticalCS::~VerticalCS() = default; //! @endcond @@ -787,6 +834,16 @@ VerticalCS::createGravityRelatedHeight(const common::UnitOfMeasure &unit) { // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +VerticalCSNNPtr VerticalCS::alterUnit(const common::UnitOfMeasure &unit) const { + const auto &l_axisList = CoordinateSystem::getPrivate()->axisList; + return VerticalCS::nn_make_shared( + l_axisList[0]->alterUnit(unit)); +} +//! @endcond + +// --------------------------------------------------------------------------- + //! @cond Doxygen_Suppress CartesianCS::~CartesianCS() = default; //! @endcond @@ -863,6 +920,27 @@ CartesianCS::createEastingNorthing(const common::UnitOfMeasure &unit) { // --------------------------------------------------------------------------- +/** \brief Instanciate a CartesianCS with a Northing (first) and Easting + * (second) axis. + * + * @param unit Linear unit of the axes. + * @return a new CartesianCS. + */ +CartesianCSNNPtr +CartesianCS::createNorthingEasting(const common::UnitOfMeasure &unit) { + return create(util::PropertyMap(), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Northing), + AxisAbbreviation::N, AxisDirection::NORTH, unit), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Easting), + AxisAbbreviation::E, AxisDirection::EAST, unit)); +} + +// --------------------------------------------------------------------------- + /** \brief Instanciate a CartesianCS with the three geocentric axes. * * @param unit Liinear unit of the axes. @@ -887,6 +965,25 @@ CartesianCS::createGeocentric(const common::UnitOfMeasure &unit) { // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +CartesianCSNNPtr +CartesianCS::alterUnit(const common::UnitOfMeasure &unit) const { + const auto &l_axisList = CoordinateSystem::getPrivate()->axisList; + if (l_axisList.size() == 2) { + return CartesianCS::create(util::PropertyMap(), + l_axisList[0]->alterUnit(unit), + l_axisList[1]->alterUnit(unit)); + } else { + assert(l_axisList.size() == 3); + return CartesianCS::create( + util::PropertyMap(), l_axisList[0]->alterUnit(unit), + l_axisList[1]->alterUnit(unit), l_axisList[2]->alterUnit(unit)); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + //! @cond Doxygen_Suppress OrdinalCS::~OrdinalCS() = default; //! @endcond diff --git a/src/crs.cpp b/src/crs.cpp index aa9209cd..1cc5d31a 100644 --- a/src/crs.cpp +++ b/src/crs.cpp @@ -197,6 +197,97 @@ GeographicCRSPtr CRS::extractGeographicCRS() const { // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +static util::PropertyMap createPropertyMapName(const std::string &name) { + return util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, name); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CRSNNPtr CRS::alterGeodeticCRS(const GeodeticCRSNNPtr &newGeodCRS) const { + auto geodCRS = dynamic_cast(this); + if (geodCRS) { + return newGeodCRS; + } + + auto projCRS = dynamic_cast(this); + if (projCRS) { + return ProjectedCRS::create( + createPropertyMapName(nameStr()), newGeodCRS, + projCRS->derivingConversionRef(), projCRS->coordinateSystem()); + } + + auto compoundCRS = dynamic_cast(this); + if (compoundCRS) { + std::vector components; + for (const auto &subCrs : compoundCRS->componentReferenceSystems()) { + components.emplace_back(subCrs->alterGeodeticCRS(newGeodCRS)); + } + return CompoundCRS::create(createPropertyMapName(nameStr()), + components); + } + + return NN_NO_CHECK( + std::dynamic_pointer_cast(shared_from_this().as_nullable())); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CRSNNPtr CRS::alterCSLinearUnit(const common::UnitOfMeasure &unit) const { + { + auto projCRS = dynamic_cast(this); + if (projCRS) { + return ProjectedCRS::create( + createPropertyMapName(projCRS->nameStr().c_str()), + projCRS->baseCRS(), projCRS->derivingConversionRef(), + projCRS->coordinateSystem()->alterUnit(unit)); + } + } + + { + auto geodCRS = dynamic_cast(this); + if (geodCRS && geodCRS->isGeocentric()) { + auto cs = dynamic_cast( + geodCRS->coordinateSystem().get()); + assert(cs); + return GeodeticCRS::create( + createPropertyMapName(geodCRS->nameStr().c_str()), + geodCRS->datum(), geodCRS->datumEnsemble(), + cs->alterUnit(unit)); + } + } + + { + auto geogCRS = dynamic_cast(this); + if (geogCRS && geogCRS->coordinateSystem()->axisList().size() == 3) { + return GeographicCRS::create( + createPropertyMapName(geogCRS->nameStr().c_str()), + geogCRS->datum(), geogCRS->datumEnsemble(), + geogCRS->coordinateSystem()->alterLinearUnit(unit)); + } + } + + { + auto vertCRS = dynamic_cast(this); + if (vertCRS) { + return VerticalCRS::create( + createPropertyMapName(vertCRS->nameStr().c_str()), + vertCRS->datum(), vertCRS->datumEnsemble(), + vertCRS->coordinateSystem()->alterUnit(unit)); + } + } + + return NN_NO_CHECK( + std::dynamic_pointer_cast(shared_from_this().as_nullable())); +} +//! @endcond + +// --------------------------------------------------------------------------- + /** \brief Return the VerticalCRS of the CRS. * * Returns the VerticalCRS contained in a CRS. This works currently with @@ -391,6 +482,19 @@ CRSNNPtr CRS::shallowClone() const { return _shallowClone(); } // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress + +CRSNNPtr CRS::alterName(const std::string &newName) const { + auto crs = shallowClone(); + crs->setProperties( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, newName)); + return crs; +} + +//! @endcond + +// --------------------------------------------------------------------------- + /** \brief Identify the CRS with reference CRSs. * * The candidate CRSs are either hard-coded, or looked in the database when @@ -2493,6 +2597,19 @@ bool ProjectedCRS::_isEquivalentTo( // --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +ProjectedCRSNNPtr +ProjectedCRS::alterParametersLinearUnit(const common::UnitOfMeasure &unit, + bool convertToNewUnit) const { + return create(createPropertyMapName(nameStr()), baseCRS(), + derivingConversionRef()->alterParametersLinearUnit( + unit, convertToNewUnit), + coordinateSystem()); +} +//! @endcond + +// --------------------------------------------------------------------------- + //! @cond Doxygen_Suppress void ProjectedCRS::addUnitConvertAndAxisSwap(io::PROJStringFormatter *formatter, bool axisSpecFound) const { diff --git a/src/proj.h b/src/proj.h index 711f8f66..3f44afb9 100644 --- a/src/proj.h +++ b/src/proj.h @@ -443,6 +443,11 @@ char PROJ_DLL * proj_rtodms(char *s, double r, int pos, int neg); /* Binding in C of C++ API */ /* ------------------------------------------------------------------------- */ +/** + * \defgroup basic_cpp_binding Binding in C of basic methods from the C++ API + * @{ + */ + /*! @cond Doxygen_Suppress */ typedef struct PJ_OBJ PJ_OBJ; /*! @endcond */ @@ -461,6 +466,7 @@ const char PROJ_DLL *proj_context_get_database_path(PJ_CONTEXT *ctx); const char PROJ_DLL *proj_context_get_database_metadata(PJ_CONTEXT* ctx, const char* key); + /** \brief Guessed WKT "dialect". */ typedef enum { @@ -512,9 +518,13 @@ PJ_OBJ PROJ_DLL *proj_obj_create_from_database(PJ_CONTEXT *ctx, void PROJ_DLL proj_obj_unref(PJ_OBJ *obj); +PJ_OBJ PROJ_DLL *proj_obj_clone(const PJ_OBJ *obj); + /** \brief Object type. */ typedef enum { + PJ_OBJ_TYPE_UNKNOWN, + PJ_OBJ_TYPE_ELLIPSOID, PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME, @@ -539,6 +549,7 @@ typedef enum PJ_OBJ_TYPE_PROJECTED_CRS, PJ_OBJ_TYPE_COMPOUND_CRS, PJ_OBJ_TYPE_TEMPORAL_CRS, + PJ_OBJ_TYPE_ENGINEERING_CRS, PJ_OBJ_TYPE_BOUND_CRS, PJ_OBJ_TYPE_OTHER_CRS, @@ -546,8 +557,6 @@ typedef enum PJ_OBJ_TYPE_TRANSFORMATION, PJ_OBJ_TYPE_CONCATENATED_OPERATION, PJ_OBJ_TYPE_OTHER_COORDINATE_OPERATION, - - PJ_OBJ_TYPE_UNKNOWN } PJ_OBJ_TYPE; PJ_OBJ_LIST PROJ_DLL *proj_obj_create_from_name(PJ_CONTEXT *ctx, @@ -559,9 +568,405 @@ PJ_OBJ_LIST PROJ_DLL *proj_obj_create_from_name(PJ_CONTEXT *ctx, size_t limitResultCount, const char* const *options); -PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( +PJ_OBJ_TYPE PROJ_DLL proj_obj_get_type(const PJ_OBJ *obj); + +int PROJ_DLL proj_obj_is_deprecated(const PJ_OBJ *obj); + +/** Comparison criterion. */ +typedef enum +{ + /** All properties are identical. */ + PJ_COMP_STRICT, + + /** The objects are equivalent for the purpose of coordinate + * operations. They can differ by the name of their objects, + * identifiers, other metadata. + * Parameters may be expressed in different units, provided that the + * value is (with some tolerance) the same once expressed in a + * common unit. + */ + PJ_COMP_EQUIVALENT, + + /** Same as EQUIVALENT, relaxed with an exception that the axis order + * of the base CRS of a DerivedCRS/ProjectedCRS or the axis order of + * a GeographicCRS is ignored. Only to be used + * with DerivedCRS/ProjectedCRS/GeographicCRS */ + PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS, +} PJ_COMPARISON_CRITERION; + +int PROJ_DLL proj_obj_is_equivalent_to(const PJ_OBJ *obj, const PJ_OBJ* other, + PJ_COMPARISON_CRITERION criterion); + +int PROJ_DLL proj_obj_is_crs(const PJ_OBJ *obj); + +const char PROJ_DLL* proj_obj_get_name(const PJ_OBJ *obj); + +const char PROJ_DLL* proj_obj_get_id_auth_name(const PJ_OBJ *obj, int index); + +const char PROJ_DLL* proj_obj_get_id_code(const PJ_OBJ *obj, int index); + +int PROJ_DLL proj_obj_get_area_of_use(const PJ_OBJ *obj, + double* p_west_lon_degree, + double* p_south_lat_degree, + double* p_east_lon_degree, + double* p_north_lat_degree, + const char **p_area_name); + +/** \brief WKT version. */ +typedef enum +{ + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2 */ + PJ_WKT2_2015, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_SIMPLIFIED */ + PJ_WKT2_2015_SIMPLIFIED, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018 */ + PJ_WKT2_2018, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018_SIMPLIFIED */ + PJ_WKT2_2018_SIMPLIFIED, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_GDAL */ + PJ_WKT1_GDAL, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_ESRI */ + PJ_WKT1_ESRI +} PJ_WKT_TYPE; + +const char PROJ_DLL* proj_obj_as_wkt(const PJ_OBJ *obj, PJ_WKT_TYPE type, + const char* const *options); + +/** \brief PROJ string version. */ +typedef enum +{ + /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_5 */ + PJ_PROJ_5, + /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_4 */ + PJ_PROJ_4 +} PJ_PROJ_STRING_TYPE; + +const char PROJ_DLL* proj_obj_as_proj_string(const PJ_OBJ *obj, + PJ_PROJ_STRING_TYPE type, + const char* const *options); + +PJ_OBJ PROJ_DLL *proj_obj_get_source_crs(const PJ_OBJ *obj); + +PJ_OBJ PROJ_DLL *proj_obj_get_target_crs(const PJ_OBJ *obj); + +PJ_OBJ_LIST PROJ_DLL *proj_obj_identify(const PJ_OBJ* obj, + const char *auth_name, + const char* const *options, + int **confidence); + +void PROJ_DLL proj_free_int_list(int* list); + +/* ------------------------------------------------------------------------- */ + +/** \brief Type representing a NULL terminated list of NUL-terminate strings. */ +typedef char **PROJ_STRING_LIST; + +PROJ_STRING_LIST PROJ_DLL proj_get_authorities_from_database(PJ_CONTEXT *ctx); + +PROJ_STRING_LIST PROJ_DLL proj_get_codes_from_database(PJ_CONTEXT *ctx, + const char *auth_name, + PJ_OBJ_TYPE type, + int allow_deprecated); + +void PROJ_DLL proj_free_string_list(PROJ_STRING_LIST list); + +/* ------------------------------------------------------------------------- */ + + +/*! @cond Doxygen_Suppress */ +typedef struct PJ_OPERATION_FACTORY_CONTEXT PJ_OPERATION_FACTORY_CONTEXT; +/*! @endcond */ + +PJ_OPERATION_FACTORY_CONTEXT PROJ_DLL *proj_create_operation_factory_context( + PJ_CONTEXT *ctx, + const char *authority); + +void PROJ_DLL proj_operation_factory_context_unref( + PJ_OPERATION_FACTORY_CONTEXT *ctxt); + +void PROJ_DLL proj_operation_factory_context_set_desired_accuracy( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + double accuracy); + +void PROJ_DLL proj_operation_factory_context_set_area_of_interest( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + double west_lon_degree, + double south_lat_degree, + double east_lon_degree, + double north_lat_degree); + +/** Specify how source and target CRS extent should be used to restrict + * candidate operations (only taken into account if no explicit area of + * interest is specified. */ +typedef enum +{ + /** Ignore CRS extent */ + PJ_CRS_EXTENT_NONE, + + /** Test coordinate operation extent against both CRS extent. */ + PJ_CRS_EXTENT_BOTH, + + /** Test coordinate operation extent against the intersection of both + CRS extent. */ + PJ_CRS_EXTENT_INTERSECTION, + + /** Test coordinate operation against the smallest of both CRS extent. */ + PJ_CRS_EXTENT_SMALLEST +} PROJ_CRS_EXTENT_USE; + +void PROJ_DLL proj_operation_factory_context_set_crs_extent_use( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_CRS_EXTENT_USE use); + +/** Spatial criterion to restrict candiate operations. */ +typedef enum { + /** The area of validity of transforms should strictly contain the + * are of interest. */ + PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT, + + /** The area of validity of transforms should at least intersect the + * area of interest. */ + PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION +} PROJ_SPATIAL_CRITERION; + +void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_SPATIAL_CRITERION criterion); + + +/** Describe how grid availability is used. */ +typedef enum { + /** Grid availability is only used for sorting results. Operations + * where some grids are missing will be sorted last. */ + PROJ_GRID_AVAILABILITY_USED_FOR_SORTING, + + /** Completely discard an operation if a required grid is missing. */ + PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID, + + /** Ignore grid availability at all. Results will be presented as if + * all grids were available. */ + PROJ_GRID_AVAILABILITY_IGNORED, +} PROJ_GRID_AVAILABILITY_USE; + +void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_GRID_AVAILABILITY_USE use); + +void PROJ_DLL proj_operation_factory_context_set_use_proj_alternative_grid_names( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + int usePROJNames); + +void PROJ_DLL proj_operation_factory_context_set_allow_use_intermediate_crs( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, int allow); + +void PROJ_DLL proj_operation_factory_context_set_allowed_intermediate_crs( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + const char* const *list_of_auth_name_codes); + +/* ------------------------------------------------------------------------- */ + + +PJ_OBJ_LIST PROJ_DLL *proj_obj_create_operations( + const PJ_OBJ *source_crs, + const PJ_OBJ *target_crs, + const PJ_OPERATION_FACTORY_CONTEXT *operationContext); + +int PROJ_DLL proj_obj_list_get_count(const PJ_OBJ_LIST *result); + +PJ_OBJ PROJ_DLL *proj_obj_list_get(const PJ_OBJ_LIST *result, + int index); + +void PROJ_DLL proj_obj_list_unref(PJ_OBJ_LIST *result); + +/* ------------------------------------------------------------------------- */ + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_geodetic_crs(const PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_horizontal_datum(const PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_sub_crs(const PJ_OBJ *crs, int index); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_datum(const PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordinate_system(const PJ_OBJ *crs); + +/** Type of coordinate system. */ +typedef enum +{ + PJ_CS_TYPE_UNKNOWN, + + PJ_CS_TYPE_CARTESIAN, + PJ_CS_TYPE_ELLIPSOIDAL, + PJ_CS_TYPE_VERTICAL, + PJ_CS_TYPE_SPHERICAL, + PJ_CS_TYPE_ORDINAL, + PJ_CS_TYPE_PARAMETRIC, + PJ_CS_TYPE_DATETIMETEMPORAL, + PJ_CS_TYPE_TEMPORALCOUNT, + PJ_CS_TYPE_TEMPORALMEASURE +} PJ_COORDINATE_SYSTEM_TYPE; + +PJ_COORDINATE_SYSTEM_TYPE PROJ_DLL proj_obj_cs_get_type(const PJ_OBJ* cs); + +int PROJ_DLL proj_obj_cs_get_axis_count(const PJ_OBJ *cs); + +int PROJ_DLL proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, + const char **pName, + const char **pAbbrev, + const char **pDirection, + double *pUnitConvFactor, + const char **pUnitName); + +PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(const PJ_OBJ *obj); + +int PROJ_DLL proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, + double *pSemiMajorMetre, + double *pSemiMinorMetre, + int *pIsSemiMinorComputed, + double *pInverseFlattening); + +PJ_OBJ PROJ_DLL *proj_obj_get_prime_meridian(const PJ_OBJ *obj); + +int PROJ_DLL proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, + double *pLongitude, + double *pLongitudeUnitConvFactor, + const char **pLongitudeUnitName); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, + const char **pMethodName, + const char **pMethodAuthorityName, + const char **pMethodCode); + +int PROJ_DLL proj_coordoperation_is_instanciable(const PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_param_count(const PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, + const char *name); + +int PROJ_DLL proj_coordoperation_get_param(const PJ_OBJ *coordoperation, + int index, + const char **pName, + const char **pNameAuthorityName, + const char **pNameCode, + double *pValue, + const char **pValueString, + double *pValueUnitConvFactor, + const char **pValueUnitName); + +int PROJ_DLL proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_grid_used(const PJ_OBJ *coordoperation, + int index, + const char **pShortName, + const char **pFullName, + const char **pPackageName, + const char **pURL, + int *pDirectDownload, + int *pOpenLicense, + int *pAvailable); + +double PROJ_DLL proj_coordoperation_get_accuracy(const PJ_OBJ* obj); + +/**@}*/ + +/* ------------------------------------------------------------------------- */ +/* Binding in C of advanced methods from the C++ API */ +/* */ +/* Manual construction of CRS objects. */ +/* ------------------------------------------------------------------------- */ + +/** + * \defgroup advanced_cpp_binding Binding in C of advanced methods from the C++ API + * @{ + */ + +/** Type of unit of measure. */ +typedef enum +{ + /** Angular unit of measure */ + PJ_UT_ANGULAR, + /** Linear unit of measure */ + PJ_UT_LINEAR, + /** Scale unit of measure */ + PJ_UT_SCALE, + /** Time unit of measure */ + PJ_UT_TIME, + /** Parametric unit of measure */ + PJ_UT_PARAMETRIC +} PJ_UNIT_TYPE; + +/** Axis description. */ +typedef struct +{ + /** Axis name. */ + char* name; + /** Axis abbreviation. */ + char* abbreviation; + /** Axis direction. */ + char* direction; + /** Axis unit name. */ + char* unit_name; + /** Conversion factor to SI of the unit. */ + double unit_conv_factor; + /** Type of unit */ + PJ_UNIT_TYPE unit_type; +} PJ_AXIS_DESCRIPTION; + +PJ_OBJ PROJ_DLL *proj_obj_create_cs(PJ_CONTEXT *ctx, + PJ_COORDINATE_SYSTEM_TYPE type, + int axis_count, + const PJ_AXIS_DESCRIPTION* axis); + +/** Type of Cartesian 2D coordinate system. */ +typedef enum +{ + /* Easting-Norting */ + PJ_CART2D_EASTING_NORTHING, + /* Northing-Easting */ + PJ_CART2D_NORTHING_EASTING, +} PJ_CARTESIAN_CS_2D_TYPE; + +PJ_OBJ PROJ_DLL *proj_obj_create_cartesian_2D_cs(PJ_CONTEXT *ctx, + PJ_CARTESIAN_CS_2D_TYPE type, + const char* unit_name, + double unit_conv_factor); + + +/** Type of Cartesian 2D coordinate system. */ +typedef enum +{ + /* Longitude-Latitude */ + PJ_ELLPS2D_LONGITUDE_LATITUDE, + /* Latitude-Longitude */ + PJ_ELLPS2D_LATITUDE_LONGITUDE, +} PJ_ELLIPSOIDAL_CS_2D_TYPE; + +PJ_OBJ PROJ_DLL *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx, + PJ_ELLIPSOIDAL_CS_2D_TYPE type, + const char* unit_name, + double unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( + PJ_CONTEXT *ctx, + const char *crsName, + const char *datumName, + const char *ellipsoidName, + double semiMajorMetre, double invFlattening, + const char *primeMeridianName, + double primeMeridianOffset, + const char *pmAngularUnits, + double pmUnitsConv, + PJ_OBJ* ellipsoidalCS); + +PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs_from_datum( + const char *crsName, + PJ_OBJ* datum, + PJ_OBJ* ellipsoidalCS); + +PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs( PJ_CONTEXT *ctx, - const char *geogName, + const char *crsName, const char *datumName, const char *ellipsoidName, double semiMajorMetre, double invFlattening, @@ -569,17 +974,84 @@ PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( double primeMeridianOffset, const char *angularUnits, double angularUnitsConv, - int latLongOrder); + const char *linearUnits, + double linearUnitsConv); + +PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs_from_datum( + const char *crsName, + const PJ_OBJ* datum, + const char *linearUnits, + double linearUnitsConv); + +PJ_OBJ PROJ_DLL *proj_obj_alter_name(const PJ_OBJ* obj, const char* name); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(const PJ_OBJ* obj, + const PJ_OBJ* newGeodCRS); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(const PJ_OBJ* obj, + const char *angularUnits, + double angularUnitsConv); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(const PJ_OBJ* obj, + const char *linearUnits, + double linearUnitsConv); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(const PJ_OBJ* obj, + const char *linearUnits, + double linearUnitsConv, + int convertToNewUnit); + +PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx, + const char *crsName); + +/** Description of a parameter value for a Conversion. */ +typedef struct +{ + /** Parameter name. */ + const char* name; + /** Parameter authority name. */ + const char* auth_name; + /** Parameter code. */ + const char* code; + /** Parameter value. */ + double value; + /** Name of unit in which parameter value is expressed. */ + const char* unit_name; + /** Conversion factor to SI of the unit. */ + double unit_conv_factor; + /** Type of unit */ + PJ_UNIT_TYPE unit_type; +} PJ_PARAM_DESCRIPTION; + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion(PJ_CONTEXT *ctx, + const char* name, + const char* auth_name, + const char* code, + const char* method_name, + const char* method_auth_name, + const char* method_code, + int param_count, + const PJ_PARAM_DESCRIPTION* params); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs(const char* crs_name, + const PJ_OBJ* geodetic_crs, + const PJ_OBJ* conversion, + const PJ_OBJ* coordinate_system); + +PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs(const PJ_OBJ *base_crs, + const PJ_OBJ *hub_crs, + const PJ_OBJ *transformation); + +PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(const PJ_OBJ *crs); /* BEGIN: Generated by scripts/create_c_api_projections.py*/ -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_UTM( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_utm( + PJ_CONTEXT *ctx, int zone, - int north -); + int north); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercator( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -588,8 +1060,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercator( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -598,8 +1070,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercatorSouthOriented( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator_south_oriented( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -608,8 +1080,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercatorSouthOriented( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TwoPointEquidistant( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_two_point_equidistant( + PJ_CONTEXT *ctx, double latitudeFirstPoint, double longitudeFirstPoint, double latitudeSecondPoint, @@ -619,8 +1091,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TwoPointEquidistant( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TunisiaMappingGrid( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_tunisia_mapping_grid( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -628,8 +1100,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TunisiaMappingGrid( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AlbersEqualArea( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_albers_equal_area( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, double latitudeFirstParallel, @@ -639,8 +1111,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AlbersEqualArea( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_1SP( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_1sp( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -649,8 +1121,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_1SP( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, double latitudeFirstParallel, @@ -660,8 +1132,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, double latitudeFirstParallel, @@ -672,8 +1144,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Michiga const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( + PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, double latitudeFirstParallel, @@ -683,8 +1155,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AzimuthalEquidistant( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_azimuthal_equidistant( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, double falseEasting, @@ -692,8 +1164,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AzimuthalEquidistant( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GuamProjection( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_guam_projection( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, double falseEasting, @@ -701,8 +1173,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GuamProjection( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Bonne( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_bonne( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, double falseEasting, @@ -710,8 +1182,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Bonne( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, double falseEasting, @@ -719,8 +1191,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpheri const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualArea( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, double falseEasting, @@ -728,8 +1200,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualArea( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_CassiniSoldner( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_cassini_soldner( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -737,8 +1209,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_CassiniSoldner( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantConic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_conic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double latitudeFirstParallel, @@ -748,56 +1220,56 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantConic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertI( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_i( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_ii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertIII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertIV( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iv( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertV( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_v( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertVI( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_vi( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindrical( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, double falseEasting, @@ -805,8 +1277,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindrical( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindricalSpherical( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical_spherical( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, double falseEasting, @@ -814,32 +1286,32 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindricalSpherical( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Gall( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gall( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GoodeHomolosine( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_goode_homolosine( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_InterruptedGoodeHomolosine( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_interrupted_goode_homolosine( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepX( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_x( + PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, @@ -847,8 +1319,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepX( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepY( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_y( + PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, @@ -856,8 +1328,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepY( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Gnomonic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gnomonic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -865,8 +1337,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Gnomonic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeProjectionCentre, double azimuthInitialLine, @@ -877,8 +1349,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeProjectionCentre, double azimuthInitialLine, @@ -889,8 +1361,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double latitudePoint1, double longitudePoint1, @@ -902,8 +1374,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNatu const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_InternationalMapWorldPolyconic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_international_map_world_polyconic( + PJ_CONTEXT *ctx, double centerLong, double latitudeFirstParallel, double latitudeSecondParallel, @@ -912,8 +1384,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_InternationalMapWorldPolyconic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_KrovakNorthOriented( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak_north_oriented( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeOfOrigin, double colatitudeConeAxis, @@ -924,8 +1396,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_KrovakNorthOriented( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Krovak( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak( + PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeOfOrigin, double colatitudeConeAxis, @@ -936,8 +1408,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Krovak( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertAzimuthalEqualArea( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_azimuthal_equal_area( + PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, double falseEasting, @@ -945,16 +1417,16 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertAzimuthalEqualArea( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MillerCylindrical( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_miller_cylindrical( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantA( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_a( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -963,8 +1435,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantA( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantB( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_b( + PJ_CONTEXT *ctx, double latitudeFirstParallel, double centerLong, double falseEasting, @@ -972,8 +1444,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantB( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PopularVisualisationPseudoMercator( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -981,16 +1453,16 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PopularVisualisationPseudoMercato const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Mollweide( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mollweide( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_NewZealandMappingGrid( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_new_zealand_mapping_grid( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -998,8 +1470,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_NewZealandMappingGrid( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_ObliqueStereographic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_oblique_stereographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -1008,8 +1480,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_ObliqueStereographic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Orthographic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_orthographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -1017,8 +1489,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Orthographic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AmericanPolyconic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_american_polyconic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -1026,8 +1498,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AmericanPolyconic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantA( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_a( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -1036,8 +1508,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantA( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantB( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_b( + PJ_CONTEXT *ctx, double latitudeStandardParallel, double longitudeOfOrigin, double falseEasting, @@ -1045,24 +1517,24 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantB( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Robinson( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_robinson( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Sinusoidal( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_sinusoidal( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Stereographic( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_stereographic( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, @@ -1071,32 +1543,32 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Stereographic( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_VanDerGrinten( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_van_der_grinten( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerI( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_i( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_ii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerIII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iii( + PJ_CONTEXT *ctx, double latitudeTrueScale, double centerLong, double falseEasting, @@ -1104,40 +1576,40 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerIII( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerIV( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iv( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerV( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_v( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerVI( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vi( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerVII( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vii( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_quadrilateralized_spherical_cube( + PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, @@ -1145,8 +1617,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_SphericalCrossTrackHeight( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_spherical_cross_track_height( + PJ_CONTEXT *ctx, double pegPointLat, double pegPointLong, double pegPointHeading, @@ -1154,8 +1626,8 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_SphericalCrossTrackHeight( const char* angUnitName, double angUnitConvFactor, const char* linearUnitName, double linearUnitConvFactor); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EqualEarth( - PJ_OBJ* geodetic_crs, const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equal_earth( + PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, @@ -1164,289 +1636,7 @@ PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EqualEarth( /* END: Generated by scripts/create_c_api_projections.py*/ -PJ_OBJ_TYPE PROJ_DLL proj_obj_get_type(PJ_OBJ *obj); - -int PROJ_DLL proj_obj_is_deprecated(PJ_OBJ *obj); - -/** Comparison criterion. */ -typedef enum -{ - /** All properties are identical. */ - PJ_COMP_STRICT, - - /** The objects are equivalent for the purpose of coordinate - * operations. They can differ by the name of their objects, - * identifiers, other metadata. - * Parameters may be expressed in different units, provided that the - * value is (with some tolerance) the same once expressed in a - * common unit. - */ - PJ_COMP_EQUIVALENT, - - /** Same as EQUIVALENT, relaxed with an exception that the axis order - * of the base CRS of a DerivedCRS/ProjectedCRS or the axis order of - * a GeographicCRS is ignored. Only to be used - * with DerivedCRS/ProjectedCRS/GeographicCRS */ - PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS, -} PJ_COMPARISON_CRITERION; - -int PROJ_DLL proj_obj_is_equivalent_to(PJ_OBJ *obj, PJ_OBJ* other, - PJ_COMPARISON_CRITERION criterion); - -int PROJ_DLL proj_obj_is_crs(PJ_OBJ *obj); - -const char PROJ_DLL* proj_obj_get_name(PJ_OBJ *obj); - -const char PROJ_DLL* proj_obj_get_id_auth_name(PJ_OBJ *obj, int index); - -const char PROJ_DLL* proj_obj_get_id_code(PJ_OBJ *obj, int index); - -int PROJ_DLL proj_obj_get_area_of_use(PJ_OBJ *obj, - double* p_west_lon_degree, - double* p_south_lat_degree, - double* p_east_lon_degree, - double* p_north_lat_degree, - const char **p_area_name); - -/** \brief WKT version. */ -typedef enum -{ - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2 */ - PJ_WKT2_2015, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_SIMPLIFIED */ - PJ_WKT2_2015_SIMPLIFIED, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018 */ - PJ_WKT2_2018, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018_SIMPLIFIED */ - PJ_WKT2_2018_SIMPLIFIED, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_GDAL */ - PJ_WKT1_GDAL, - /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_ESRI */ - PJ_WKT1_ESRI -} PJ_WKT_TYPE; - -const char PROJ_DLL* proj_obj_as_wkt(PJ_OBJ *obj, PJ_WKT_TYPE type, - const char* const *options); - -/** \brief PROJ string version. */ -typedef enum -{ - /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_5 */ - PJ_PROJ_5, - /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_4 */ - PJ_PROJ_4 -} PJ_PROJ_STRING_TYPE; - -const char PROJ_DLL* proj_obj_as_proj_string(PJ_OBJ *obj, - PJ_PROJ_STRING_TYPE type, - const char* const *options); - -PJ_OBJ PROJ_DLL *proj_obj_get_source_crs(PJ_OBJ *obj); - -PJ_OBJ PROJ_DLL *proj_obj_get_target_crs(PJ_OBJ *obj); - -PJ_OBJ_LIST PROJ_DLL *proj_obj_identify(PJ_OBJ* obj, - const char *auth_name, - const char* const *options, - int **confidence); - -void PROJ_DLL proj_free_int_list(int* list); - -/* ------------------------------------------------------------------------- */ - -/** \brief Type representing a NULL terminated list of NUL-terminate strings. */ -typedef char **PROJ_STRING_LIST; - -PROJ_STRING_LIST PROJ_DLL proj_get_authorities_from_database(PJ_CONTEXT *ctx); - -PROJ_STRING_LIST PROJ_DLL proj_get_codes_from_database(PJ_CONTEXT *ctx, - const char *auth_name, - PJ_OBJ_TYPE type, - int allow_deprecated); - -void PROJ_DLL proj_free_string_list(PROJ_STRING_LIST list); - -/* ------------------------------------------------------------------------- */ - - -/*! @cond Doxygen_Suppress */ -typedef struct PJ_OPERATION_FACTORY_CONTEXT PJ_OPERATION_FACTORY_CONTEXT; -/*! @endcond */ - -PJ_OPERATION_FACTORY_CONTEXT PROJ_DLL *proj_create_operation_factory_context( - PJ_CONTEXT *ctx, - const char *authority); - -void PROJ_DLL proj_operation_factory_context_unref( - PJ_OPERATION_FACTORY_CONTEXT *ctxt); - -void PROJ_DLL proj_operation_factory_context_set_desired_accuracy( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - double accuracy); - -void PROJ_DLL proj_operation_factory_context_set_area_of_interest( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - double west_lon_degree, - double south_lat_degree, - double east_lon_degree, - double north_lat_degree); - -/** Specify how source and target CRS extent should be used to restrict - * candidate operations (only taken into account if no explicit area of - * interest is specified. */ -typedef enum -{ - /** Ignore CRS extent */ - PJ_CRS_EXTENT_NONE, - - /** Test coordinate operation extent against both CRS extent. */ - PJ_CRS_EXTENT_BOTH, - - /** Test coordinate operation extent against the intersection of both - CRS extent. */ - PJ_CRS_EXTENT_INTERSECTION, - - /** Test coordinate operation against the smallest of both CRS extent. */ - PJ_CRS_EXTENT_SMALLEST -} PROJ_CRS_EXTENT_USE; - -void PROJ_DLL proj_operation_factory_context_set_crs_extent_use( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - PROJ_CRS_EXTENT_USE use); - -/** Spatial criterion to restrict candiate operations. */ -typedef enum { - /** The area of validity of transforms should strictly contain the - * are of interest. */ - PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT, - - /** The area of validity of transforms should at least intersect the - * area of interest. */ - PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION -} PROJ_SPATIAL_CRITERION; - -void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - PROJ_SPATIAL_CRITERION criterion); - - -/** Describe how grid availability is used. */ -typedef enum { - /** Grid availability is only used for sorting results. Operations - * where some grids are missing will be sorted last. */ - PROJ_GRID_AVAILABILITY_USED_FOR_SORTING, - - /** Completely discard an operation if a required grid is missing. */ - PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID, - - /** Ignore grid availability at all. Results will be presented as if - * all grids were available. */ - PROJ_GRID_AVAILABILITY_IGNORED, -} PROJ_GRID_AVAILABILITY_USE; - -void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - PROJ_GRID_AVAILABILITY_USE use); - -void PROJ_DLL proj_operation_factory_context_set_use_proj_alternative_grid_names( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - int usePROJNames); - -void PROJ_DLL proj_operation_factory_context_set_allow_use_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, int allow); - -void PROJ_DLL proj_operation_factory_context_set_allowed_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, - const char* const *list_of_auth_name_codes); - -/* ------------------------------------------------------------------------- */ - - -PJ_OBJ_LIST PROJ_DLL *proj_obj_create_operations( - PJ_OBJ *source_crs, - PJ_OBJ *target_crs, - PJ_OPERATION_FACTORY_CONTEXT *operationContext); - -int PROJ_DLL proj_obj_list_get_count(PJ_OBJ_LIST *result); - -PJ_OBJ PROJ_DLL *proj_obj_list_get(PJ_OBJ_LIST *result, - int index); - -void PROJ_DLL proj_obj_list_unref(PJ_OBJ_LIST *result); - -/* ------------------------------------------------------------------------- */ - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_geodetic_crs(PJ_OBJ *crs); - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_horizontal_datum(PJ_OBJ *crs); - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_sub_crs(PJ_OBJ *crs, int index); - -PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_OBJ *crs); - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordinate_system(PJ_OBJ *crs); - -const char PROJ_DLL *proj_obj_cs_get_type(PJ_OBJ* cs); - -int PROJ_DLL proj_obj_cs_get_axis_count(PJ_OBJ *cs); - -int PROJ_DLL proj_obj_cs_get_axis_info(PJ_OBJ *cs, int index, - const char **pName, - const char **pAbbrev, - const char **pDirection, - double *pUnitConvFactor, - const char **pUnitName); - -PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(PJ_OBJ *obj); - -int PROJ_DLL proj_obj_ellipsoid_get_parameters(PJ_OBJ *ellipsoid, - double *pSemiMajorMetre, - double *pSemiMinorMetre, - int *pIsSemiMinorComputed, - double *pInverseFlattening); - -PJ_OBJ PROJ_DLL *proj_obj_get_prime_meridian(PJ_OBJ *obj); - -int PROJ_DLL proj_obj_prime_meridian_get_parameters(PJ_OBJ *prime_meridian, - double *pLongitude, - double *pLongitudeUnitConvFactor, - const char **pLongitudeUnitName); - -PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordoperation(PJ_OBJ *crs, - const char **pMethodName, - const char **pMethodAuthorityName, - const char **pMethodCode); - -int PROJ_DLL proj_coordoperation_is_instanciable(PJ_OBJ *coordoperation); - -int PROJ_DLL proj_coordoperation_get_param_count(PJ_OBJ *coordoperation); - -int PROJ_DLL proj_coordoperation_get_param_index(PJ_OBJ *coordoperation, - const char *name); - -int PROJ_DLL proj_coordoperation_get_param(PJ_OBJ *coordoperation, - int index, - const char **pName, - const char **pNameAuthorityName, - const char **pNameCode, - double *pValue, - const char **pValueString, - double *pValueUnitConvFactor, - const char **pValueUnitName); - -int PROJ_DLL proj_coordoperation_get_grid_used_count(PJ_OBJ *coordoperation); - -int PROJ_DLL proj_coordoperation_get_grid_used(PJ_OBJ *coordoperation, - int index, - const char **pShortName, - const char **pFullName, - const char **pPackageName, - const char **pURL, - int *pDirectDownload, - int *pOpenLicense, - int *pAvailable); - -double PROJ_DLL proj_coordoperation_get_accuracy(PJ_OBJ* obj); +/**@}*/ #ifdef __cplusplus } diff --git a/src/proj_symbol_rename.h b/src/proj_symbol_rename.h index 53b324e7..a267b97e 100644 --- a/src/proj_symbol_rename.h +++ b/src/proj_symbol_rename.h @@ -156,6 +156,7 @@ #define proj_lpz_dist internal_proj_lpz_dist #define proj_obj_as_proj_string internal_proj_obj_as_proj_string #define proj_obj_as_wkt internal_proj_obj_as_wkt +#define proj_obj_clone internal_proj_obj_clone #define proj_obj_create_from_database internal_proj_obj_create_from_database #define proj_obj_create_from_name internal_proj_obj_create_from_name #define proj_obj_create_from_proj_string internal_proj_obj_create_from_proj_string diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index d23920f5..e033c0c8 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -390,6 +390,25 @@ TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84) { "+y_0=500000 +ellps=krass " "+towgs84=2.329,-147.042,-92.08,-0.309,0.325,0.497,5.69 " "+units=m +no_defs"); + + auto base_crs = proj_obj_get_source_crs(res); + ObjectKeeper keeper_base_crs(base_crs); + ASSERT_NE(base_crs, nullptr); + + auto hub_crs = proj_obj_get_target_crs(res); + ObjectKeeper keeper_hub_crs(hub_crs); + ASSERT_NE(hub_crs, nullptr); + + auto transf = + proj_obj_crs_get_coordoperation(res, nullptr, nullptr, nullptr); + ObjectKeeper keeper_transf(transf); + ASSERT_NE(transf, nullptr); + + auto res2 = proj_obj_crs_create_bound_crs(base_crs, hub_crs, transf); + ObjectKeeper keeper_res2(res2); + ASSERT_NE(res2, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(res, res2, PJ_COMP_STRICT)); } // --------------------------------------------------------------------------- @@ -655,9 +674,16 @@ TEST_F(CApi, proj_crs) { ASSERT_TRUE(geogCRS_name != nullptr); EXPECT_EQ(geogCRS_name, std::string("WGS 84")); - auto datum = proj_obj_crs_get_horizontal_datum(crs); + auto h_datum = proj_obj_crs_get_horizontal_datum(crs); + ASSERT_NE(h_datum, nullptr); + ObjectKeeper keeper_h_datum(h_datum); + + auto datum = proj_obj_crs_get_datum(crs); ASSERT_NE(datum, nullptr); ObjectKeeper keeper_datum(datum); + + EXPECT_TRUE(proj_obj_is_equivalent_to(h_datum, datum, PJ_COMP_STRICT)); + auto datum_name = proj_obj_get_name(datum); ASSERT_TRUE(datum_name != nullptr); EXPECT_EQ(datum_name, std::string("World Geodetic System 1984")); @@ -1468,11 +1494,16 @@ TEST_F(CApi, proj_coordoperation_get_accuracy) { // --------------------------------------------------------------------------- TEST_F(CApi, proj_obj_create_geographic_crs) { + + auto cs = proj_obj_create_ellipsoidal_2D_cs( + m_ctxt, PJ_ELLPS2D_LATITUDE_LONGITUDE, nullptr, 0); + ObjectKeeper keeper_cs(cs); + ASSERT_NE(cs, nullptr); + { auto obj = proj_obj_create_geographic_crs( m_ctxt, "WGS 84", "World Geodetic System 1984", "WGS 84", 6378137, - 298.257223563, "Greenwich", 0.0, "Degree", 0.0174532925199433, - true); + 298.257223563, "Greenwich", 0.0, "Degree", 0.0174532925199433, cs); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); @@ -1485,11 +1516,22 @@ TEST_F(CApi, proj_obj_create_geographic_crs) { EXPECT_NE(objRef, nullptr); EXPECT_TRUE(proj_obj_is_equivalent_to(obj, objRef, PJ_COMP_EQUIVALENT)); + + auto datum = proj_obj_crs_get_datum(obj); + ObjectKeeper keeper_datum(datum); + ASSERT_NE(datum, nullptr); + + auto obj2 = + proj_obj_create_geographic_crs_from_datum("WGS 84", datum, cs); + ObjectKeeper keeperObj(obj2); + ASSERT_NE(obj2, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(obj, obj2, PJ_COMP_STRICT)); } { auto obj = proj_obj_create_geographic_crs(m_ctxt, nullptr, nullptr, nullptr, 1.0, 0.0, nullptr, - 0.0, nullptr, 0.0, false); + 0.0, nullptr, 0.0, cs); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); } @@ -1497,474 +1539,458 @@ TEST_F(CApi, proj_obj_create_geographic_crs) { // --------------------------------------------------------------------------- -TEST_F(CApi, proj_obj_create_projections) { +TEST_F(CApi, proj_obj_create_geocentric_crs) { + { + auto obj = proj_obj_create_geocentric_crs( + m_ctxt, "WGS 84", "World Geodetic System 1984", "WGS 84", 6378137, + 298.257223563, "Greenwich", 0.0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); - auto geogCRS = proj_obj_create_geographic_crs( - m_ctxt, "WGS 84", "World Geodetic System 1984", "WGS 84", 6378137, - 298.257223563, "Greenwich", 0.0, "Degree", 0.0174532925199433, true); - ObjectKeeper keepergeogCRS(geogCRS); - ASSERT_NE(geogCRS, nullptr); + auto objRef = proj_obj_create_from_user_input( + m_ctxt, + GeographicCRS::EPSG_4978->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeperobjRef(objRef); + EXPECT_NE(objRef, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(obj, objRef, PJ_COMP_EQUIVALENT)); + + auto datum = proj_obj_crs_get_datum(obj); + ObjectKeeper keeper_datum(datum); + ASSERT_NE(datum, nullptr); + + auto obj2 = proj_obj_create_geocentric_crs_from_datum("WGS 84", datum, + "Metre", 1.0); + ObjectKeeper keeperObj(obj2); + ASSERT_NE(obj2, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(obj, obj2, PJ_COMP_STRICT)); + } + { + auto obj = proj_obj_create_geocentric_crs( + m_ctxt, nullptr, nullptr, nullptr, 1.0, 0.0, nullptr, 0.0, nullptr, + 0.0, nullptr, 0.0); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + } +} +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_projections) { /* BEGIN: Generated by scripts/create_c_api_projections.py*/ { - auto projCRS = - proj_obj_create_projected_crs_UTM(geogCRS, nullptr, 0, 0); + auto projCRS = proj_obj_create_conversion_utm(m_ctxt, 0, 0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_TransverseMercator( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_transverse_mercator( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_gauss_schreiber_transverse_mercator( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_TransverseMercatorSouthOriented( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_transverse_mercator_south_oriented( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_TwoPointEquidistant( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_two_point_equidistant( + m_ctxt, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_TunisiaMappingGrid( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_tunisia_mapping_grid( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_AlbersEqualArea( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_albers_equal_area( + m_ctxt, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_LambertConicConformal_1SP( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_lambert_conic_conformal_1sp( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_LambertConicConformal_2SP( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_lambert_conic_conformal_2sp( + m_ctxt, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", - 0.0174532925199433, "Metre", 1.0); + proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( + m_ctxt, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", - 0.0174532925199433, "Metre", 1.0); + proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( + m_ctxt, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_AzimuthalEquidistant( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_azimuthal_equidistant( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_GuamProjection( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_guam_projection( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Bonne( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_bonne( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_LambertCylindricalEqualArea( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_lambert_cylindrical_equal_area( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_CassiniSoldner( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_cassini_soldner( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EquidistantConic( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_equidistant_conic( + m_ctxt, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EckertI( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_eckert_i( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EckertII( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_eckert_ii( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EckertIII( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_eckert_iii( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EckertIV( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_eckert_iv( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EckertV( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_eckert_v( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EckertVI( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_eckert_vi( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EquidistantCylindrical( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_equidistant_cylindrical( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_EquidistantCylindricalSpherical( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_equidistant_cylindrical_spherical( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Gall( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_gall( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_GoodeHomolosine( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_goode_homolosine( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_InterruptedGoodeHomolosine( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_interrupted_goode_homolosine( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_GeostationarySatelliteSweepX( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_geostationary_satellite_sweep_x( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_GeostationarySatelliteSweepY( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_geostationary_satellite_sweep_y( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Gnomonic( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_gnomonic( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", - 0.0174532925199433, "Metre", 1.0); + proj_obj_create_conversion_hotine_oblique_mercator_variant_a( + m_ctxt, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", - 0.0174532925199433, "Metre", 1.0); + proj_obj_create_conversion_hotine_oblique_mercator_variant_b( + m_ctxt, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, 0, "Degree", - 0.0174532925199433, "Metre", 1.0); + proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( + m_ctxt, 0, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_InternationalMapWorldPolyconic( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_international_map_world_polyconic( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_KrovakNorthOriented( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_krovak_north_oriented( + m_ctxt, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Krovak( - geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_krovak( + m_ctxt, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_LambertAzimuthalEqualArea( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_lambert_azimuthal_equal_area( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_MillerCylindrical( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_miller_cylindrical( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_MercatorVariantA( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_mercator_variant_a( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_MercatorVariantB( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_mercator_variant_b( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_PopularVisualisationPseudoMercator( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_popular_visualisation_pseudo_mercator( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Mollweide( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_mollweide( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_NewZealandMappingGrid( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_new_zealand_mapping_grid( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_ObliqueStereographic( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_oblique_stereographic( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Orthographic( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_orthographic( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_AmericanPolyconic( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_american_polyconic( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_PolarStereographicVariantA( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_polar_stereographic_variant_a( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_PolarStereographicVariantB( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_polar_stereographic_variant_b( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Robinson( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_robinson( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Sinusoidal( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_sinusoidal( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_Stereographic( - geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + auto projCRS = proj_obj_create_conversion_stereographic( + m_ctxt, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_VanDerGrinten( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_van_der_grinten( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_WagnerI( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_wagner_i( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_WagnerII( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_wagner_ii( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_WagnerIII( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_wagner_iii( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_WagnerIV( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_wagner_iv( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_WagnerV( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_wagner_v( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_WagnerVI( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_wagner_vi( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_WagnerVII( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_wagner_vii( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { auto projCRS = - proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, - "Metre", 1.0); + proj_obj_create_conversion_quadrilateralized_spherical_cube( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_SphericalCrossTrackHeight( - geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_spherical_cross_track_height( + m_ctxt, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } { - auto projCRS = proj_obj_create_projected_crs_EqualEarth( - geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", - 1.0); + auto projCRS = proj_obj_create_conversion_equal_earth( + m_ctxt, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", 1.0); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } @@ -1984,9 +2010,7 @@ TEST_F(CApi, proj_obj_cs_get_axis_info) { ASSERT_NE(cs, nullptr); ObjectKeeper keeperCs(cs); - const char *type = proj_obj_cs_get_type(cs); - ASSERT_NE(type, nullptr); - EXPECT_EQ(std::string(type), "Ellipsoidal"); + EXPECT_EQ(proj_obj_cs_get_type(cs), PJ_CS_TYPE_ELLIPSOIDAL); EXPECT_EQ(proj_obj_cs_get_axis_count(cs), 2); @@ -2027,7 +2051,7 @@ TEST_F(CApi, proj_obj_cs_get_axis_info) { ObjectKeeper keeper(obj); EXPECT_EQ(proj_obj_crs_get_coordinate_system(obj), nullptr); - EXPECT_EQ(proj_obj_cs_get_type(obj), nullptr); + EXPECT_EQ(proj_obj_cs_get_type(obj), PJ_CS_TYPE_UNKNOWN); EXPECT_EQ(proj_obj_cs_get_axis_count(obj), -1); @@ -2043,4 +2067,226 @@ TEST_F(CApi, proj_context_get_database_metadata) { nullptr); } +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_clone) { + auto obj = + proj_obj_create_from_proj_string(m_ctxt, "+proj=longlat", nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto clone = proj_obj_clone(obj); + ObjectKeeper keeperClone(clone); + ASSERT_NE(clone, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(obj, clone, PJ_COMP_STRICT)); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_crs_alter_geodetic_crs) { + auto projCRS = proj_obj_create_from_wkt( + m_ctxt, + createProjectedCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ObjectKeeper keeper(projCRS); + ASSERT_NE(projCRS, nullptr); + + auto newGeodCRS = + proj_obj_create_from_proj_string(m_ctxt, "+proj=longlat", nullptr); + ObjectKeeper keeper_newGeodCRS(newGeodCRS); + ASSERT_NE(newGeodCRS, nullptr); + + auto geodCRS = proj_obj_crs_get_geodetic_crs(projCRS); + ObjectKeeper keeper_geodCRS(geodCRS); + ASSERT_NE(geodCRS, nullptr); + + auto geodCRSAltered = proj_obj_crs_alter_geodetic_crs(geodCRS, newGeodCRS); + ObjectKeeper keeper_geodCRSAltered(geodCRSAltered); + ASSERT_NE(geodCRSAltered, nullptr); + EXPECT_TRUE( + proj_obj_is_equivalent_to(geodCRSAltered, newGeodCRS, PJ_COMP_STRICT)); + + auto projCRSAltered = proj_obj_crs_alter_geodetic_crs(projCRS, newGeodCRS); + ObjectKeeper keeper_projCRSAltered(projCRSAltered); + ASSERT_NE(projCRSAltered, nullptr); + + EXPECT_EQ(proj_obj_get_type(projCRSAltered), PJ_OBJ_TYPE_PROJECTED_CRS); + + auto projCRSAltered_geodCRS = proj_obj_crs_get_geodetic_crs(projCRSAltered); + ObjectKeeper keeper_projCRSAltered_geodCRS(projCRSAltered_geodCRS); + ASSERT_NE(projCRSAltered_geodCRS, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(projCRSAltered_geodCRS, newGeodCRS, + PJ_COMP_STRICT)); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_crs_alter_cs_angular_unit) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(crs); + ASSERT_NE(crs, nullptr); + + auto alteredCRS = proj_obj_crs_alter_cs_angular_unit(crs, "my unit", 2); + ObjectKeeper keeper_alteredCRS(alteredCRS); + ASSERT_NE(alteredCRS, nullptr); + + auto cs = proj_obj_crs_get_coordinate_system(alteredCRS); + ASSERT_NE(cs, nullptr); + ObjectKeeper keeperCs(cs); + double unitConvFactor = 0.0; + const char *unitName = nullptr; + + EXPECT_TRUE(proj_obj_cs_get_axis_info(cs, 0, nullptr, nullptr, nullptr, + &unitConvFactor, &unitName)); + ASSERT_NE(unitName, nullptr); + EXPECT_EQ(unitConvFactor, 2) << unitConvFactor; + EXPECT_EQ(std::string(unitName), "my unit"); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_crs_alter_cs_linear_unit) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + createProjectedCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ObjectKeeper keeper(crs); + ASSERT_NE(crs, nullptr); + + auto alteredCRS = proj_obj_crs_alter_cs_linear_unit(crs, "my unit", 2); + ObjectKeeper keeper_alteredCRS(alteredCRS); + ASSERT_NE(alteredCRS, nullptr); + + auto cs = proj_obj_crs_get_coordinate_system(alteredCRS); + ASSERT_NE(cs, nullptr); + ObjectKeeper keeperCs(cs); + double unitConvFactor = 0.0; + const char *unitName = nullptr; + + EXPECT_TRUE(proj_obj_cs_get_axis_info(cs, 0, nullptr, nullptr, nullptr, + &unitConvFactor, &unitName)); + ASSERT_NE(unitName, nullptr); + EXPECT_EQ(unitConvFactor, 2) << unitConvFactor; + EXPECT_EQ(std::string(unitName), "my unit"); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_crs_alter_parameters_linear_unit) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + createProjectedCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ObjectKeeper keeper(crs); + ASSERT_NE(crs, nullptr); + + { + auto alteredCRS = + proj_obj_crs_alter_parameters_linear_unit(crs, "my unit", 2, false); + ObjectKeeper keeper_alteredCRS(alteredCRS); + ASSERT_NE(alteredCRS, nullptr); + + auto wkt = proj_obj_as_wkt(alteredCRS, PJ_WKT2_2018, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("500000") != std::string::npos) + << wkt; + EXPECT_TRUE(std::string(wkt).find("\"my unit\",2") != std::string::npos) + << wkt; + } + + { + auto alteredCRS = + proj_obj_crs_alter_parameters_linear_unit(crs, "my unit", 2, true); + ObjectKeeper keeper_alteredCRS(alteredCRS); + ASSERT_NE(alteredCRS, nullptr); + + auto wkt = proj_obj_as_wkt(alteredCRS, PJ_WKT2_2018, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("250000") != std::string::npos) + << wkt; + EXPECT_TRUE(std::string(wkt).find("\"my unit\",2") != std::string::npos) + << wkt; + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_engineering_crs) { + + auto crs = proj_obj_create_engineering_crs(m_ctxt, "name"); + ObjectKeeper keeper(crs); + ASSERT_NE(crs, nullptr); + auto wkt = proj_obj_as_wkt(crs, PJ_WKT1_GDAL, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_EQ(std::string(wkt), "LOCAL_CS[\"name\"]") << wkt; +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_alter_name) { + + auto cs = proj_obj_create_ellipsoidal_2D_cs( + m_ctxt, PJ_ELLPS2D_LONGITUDE_LATITUDE, nullptr, 0); + ObjectKeeper keeper_cs(cs); + ASSERT_NE(cs, nullptr); + + auto obj = proj_obj_create_geographic_crs( + m_ctxt, "WGS 84", "World Geodetic System 1984", "WGS 84", 6378137, + 298.257223563, "Greenwich", 0.0, "Degree", 0.0174532925199433, cs); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto alteredObj = proj_obj_alter_name(obj, "new name"); + ObjectKeeper keeper_alteredObj(alteredObj); + ASSERT_NE(alteredObj, nullptr); + + EXPECT_EQ(std::string(proj_obj_get_name(alteredObj)), "new name"); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_projected_crs) { + + PJ_PARAM_DESCRIPTION param; + param.name = "param name"; + param.auth_name = nullptr; + param.code = nullptr; + param.value = 0.99; + param.unit_name = nullptr; + param.unit_conv_factor = 1.0; + param.unit_type = PJ_UT_SCALE; + + auto conv = proj_obj_create_conversion(m_ctxt, "conv", "conv auth", + "conv code", "method", "method auth", + "method code", 1, ¶m); + ObjectKeeper keeper_conv(conv); + ASSERT_NE(conv, nullptr); + + auto geog_cs = proj_obj_create_ellipsoidal_2D_cs( + m_ctxt, PJ_ELLPS2D_LONGITUDE_LATITUDE, nullptr, 0); + ObjectKeeper keeper_geog_cs(geog_cs); + ASSERT_NE(geog_cs, nullptr); + + auto geogCRS = proj_obj_create_geographic_crs( + m_ctxt, "WGS 84", "World Geodetic System 1984", "WGS 84", 6378137, + 298.257223563, "Greenwich", 0.0, "Degree", 0.0174532925199433, geog_cs); + ObjectKeeper keeper_geogCRS(geogCRS); + ASSERT_NE(geogCRS, nullptr); + + auto cs = proj_obj_create_cartesian_2D_cs( + m_ctxt, PJ_CART2D_EASTING_NORTHING, nullptr, 0); + ObjectKeeper keeper_cs(cs); + ASSERT_NE(cs, nullptr); + + auto projCRS = proj_obj_create_projected_crs("my CRS", geogCRS, conv, cs); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); +} + } // namespace diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp index fa64620c..bbbf2154 100644 --- a/test/unit/test_crs.cpp +++ b/test/unit/test_crs.cpp @@ -4665,3 +4665,136 @@ TEST(crs, crs_stripVerticalComponent) { EXPECT_EQ(projCRS->coordinateSystem()->axisList().size(), 2); } } + +// --------------------------------------------------------------------------- + +TEST(crs, crs_alterGeodeticCRS) { + + { + auto crs = GeographicCRS::EPSG_4326->alterGeodeticCRS( + GeographicCRS::EPSG_4979); + EXPECT_TRUE(crs->isEquivalentTo(GeographicCRS::EPSG_4979.get())); + } + + { + auto crs = + createProjected()->alterGeodeticCRS(GeographicCRS::EPSG_4979); + auto projCRS = dynamic_cast(crs.get()); + ASSERT_TRUE(projCRS != nullptr); + EXPECT_TRUE( + projCRS->baseCRS()->isEquivalentTo(GeographicCRS::EPSG_4979.get())); + } + + { + auto crs = + createCompoundCRS()->alterGeodeticCRS(GeographicCRS::EPSG_4979); + auto compoundCRS = dynamic_cast(crs.get()); + ASSERT_TRUE(compoundCRS != nullptr); + EXPECT_TRUE(compoundCRS->componentReferenceSystems()[0] + ->extractGeographicCRS() + ->isEquivalentTo(GeographicCRS::EPSG_4979.get())); + } + + { + auto crs = + createVerticalCRS()->alterGeodeticCRS(GeographicCRS::EPSG_4979); + EXPECT_TRUE(crs->isEquivalentTo(createVerticalCRS().get())); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, crs_alterCSLinearUnit) { + + { + auto crs = + createProjected()->alterCSLinearUnit(UnitOfMeasure("my unit", 2)); + auto projCRS = dynamic_cast(crs.get()); + ASSERT_TRUE(projCRS != nullptr); + auto cs = projCRS->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 2U); + EXPECT_EQ(cs->axisList()[0]->unit().name(), "my unit"); + EXPECT_EQ(cs->axisList()[0]->unit().conversionToSI(), 2); + EXPECT_EQ(cs->axisList()[1]->unit().name(), "my unit"); + EXPECT_EQ(cs->axisList()[1]->unit().conversionToSI(), 2); + } + + { + auto crs = GeodeticCRS::EPSG_4978->alterCSLinearUnit( + UnitOfMeasure("my unit", 2)); + auto geodCRS = dynamic_cast(crs.get()); + ASSERT_TRUE(geodCRS != nullptr); + auto cs = + dynamic_cast(geodCRS->coordinateSystem().get()); + ASSERT_EQ(cs->axisList().size(), 3U); + EXPECT_EQ(cs->axisList()[0]->unit().name(), "my unit"); + EXPECT_EQ(cs->axisList()[0]->unit().conversionToSI(), 2); + EXPECT_EQ(cs->axisList()[1]->unit().name(), "my unit"); + EXPECT_EQ(cs->axisList()[1]->unit().conversionToSI(), 2); + EXPECT_EQ(cs->axisList()[2]->unit().name(), "my unit"); + EXPECT_EQ(cs->axisList()[2]->unit().conversionToSI(), 2); + } + + { + auto crs = GeographicCRS::EPSG_4979->alterCSLinearUnit( + UnitOfMeasure("my unit", 2)); + auto geogCRS = dynamic_cast(crs.get()); + ASSERT_TRUE(geogCRS != nullptr); + auto cs = geogCRS->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 3U); + EXPECT_NE(cs->axisList()[0]->unit().name(), "my unit"); + EXPECT_NE(cs->axisList()[0]->unit().conversionToSI(), 2); + EXPECT_NE(cs->axisList()[1]->unit().name(), "my unit"); + EXPECT_NE(cs->axisList()[1]->unit().conversionToSI(), 2); + EXPECT_EQ(cs->axisList()[2]->unit().name(), "my unit"); + EXPECT_EQ(cs->axisList()[2]->unit().conversionToSI(), 2); + } + + { + auto crs = + createVerticalCRS()->alterCSLinearUnit(UnitOfMeasure("my unit", 2)); + auto vertCRS = dynamic_cast(crs.get()); + ASSERT_TRUE(vertCRS != nullptr); + auto cs = vertCRS->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 1U); + EXPECT_EQ(cs->axisList()[0]->unit().name(), "my unit"); + EXPECT_EQ(cs->axisList()[0]->unit().conversionToSI(), 2); + } + + { + // Not implemented on compoundCRS + auto crs = + createCompoundCRS()->alterCSLinearUnit(UnitOfMeasure("my unit", 2)); + EXPECT_TRUE(createCompoundCRS()->isEquivalentTo(crs.get())); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, alterParametersLinearUnit) { + { + auto crs = createProjected()->alterParametersLinearUnit( + UnitOfMeasure("my unit", 2), false); + auto wkt = + crs->exportToWKT(&WKTFormatter::create()->setMultiLine(false)); + EXPECT_TRUE(wkt.find("PARAMETER[\"Longitude of natural origin\",3") != + std::string::npos) + << wkt; + EXPECT_TRUE( + wkt.find( + "PARAMETER[\"False easting\",500000,UNIT[\"my unit\",2]") != + std::string::npos) + << wkt; + } + { + auto crs = createProjected()->alterParametersLinearUnit( + UnitOfMeasure("my unit", 2), true); + auto wkt = + crs->exportToWKT(&WKTFormatter::create()->setMultiLine(false)); + EXPECT_TRUE( + wkt.find( + "PARAMETER[\"False easting\",250000,UNIT[\"my unit\",2]") != + std::string::npos) + << wkt; + } +} -- cgit v1.2.3 From 7b3ab527074e301bc81cedee7b8111c633ecf306 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 29 Nov 2018 12:35:49 +0100 Subject: proj_create_crs_to_crs(): rename arguments, update doc, and add a few test cases --- src/proj.h | 2 +- src/proj_4D_api.c | 20 ++++++++++++++------ test/unit/gie_self_tests.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/proj.h b/src/proj.h index 3f44afb9..194d9059 100644 --- a/src/proj.h +++ b/src/proj.h @@ -341,7 +341,7 @@ int PROJ_DLL proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx, int from_leg /* Manage the transformation definition object PJ */ PJ PROJ_DLL *proj_create (PJ_CONTEXT *ctx, const char *definition); PJ PROJ_DLL *proj_create_argv (PJ_CONTEXT *ctx, int argc, char **argv); -PJ PROJ_DLL *proj_create_crs_to_crs(PJ_CONTEXT *ctx, const char *srid_from, const char *srid_to, PJ_AREA *area); +PJ PROJ_DLL *proj_create_crs_to_crs(PJ_CONTEXT *ctx, const char *source_crs, const char *target_crs, PJ_AREA *area); PJ PROJ_DLL *proj_destroy (PJ *P); diff --git a/src/proj_4D_api.c b/src/proj_4D_api.c index 4d05530e..6afabcaa 100644 --- a/src/proj_4D_api.c +++ b/src/proj_4D_api.c @@ -715,14 +715,22 @@ int proj_context_get_use_proj4_init_rules(PJ_CONTEXT *ctx, int from_legacy_code_ /*****************************************************************************/ -PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *srid_from, const char *srid_to, PJ_AREA *area) { +PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *source_crs, const char *target_crs, PJ_AREA *area) { /****************************************************************************** Create a transformation pipeline between two known coordinate reference systems. - srid_from and srid_to should be the value part of a +init=... parameter - set, i.e. "EPSG:25833" or "IGNF:AMST63". Any projection definition that - can be found in a init-file in PROJ_LIB is a valid input to this function. + source_crs and target_crs can be : + - a "AUTHORITY:CODE", like EPSG:25832. When using that syntax for a source + CRS, the created pipeline will expect that the values passed to proj_trans() + respect the axis order and axis unit of the official definition ( + so for example, for EPSG:4326, with latitude first and longitude next, + in degrees). Similarly, when using that syntax for a target CRS, output + values will be emitted according to the official definition of this CRS. + - a PROJ string, like "+proj=longlat +datum=WGS84". + When using that syntax, the axis order and unit for geographic CRS will + be longitude, latitude, and the unit degrees. + - more generally any string accepted by proj_obj_create_from_user_input() An "area of use" can be specified in area. When it is supplied, the more accurate transformation between two given systems can be chosen. @@ -743,12 +751,12 @@ PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *srid_from, const char const char* const* optionsImportCRS = proj_context_get_use_proj4_init_rules(ctx, FALSE) ? optionsProj4Mode : NULL; - src = proj_obj_create_from_user_input(ctx, srid_from, optionsImportCRS); + src = proj_obj_create_from_user_input(ctx, source_crs, optionsImportCRS); if( !src ) { return NULL; } - dst = proj_obj_create_from_user_input(ctx, srid_to, optionsImportCRS); + dst = proj_obj_create_from_user_input(ctx, target_crs, optionsImportCRS); if( !dst ) { proj_obj_unref(src); return NULL; diff --git a/test/unit/gie_self_tests.cpp b/test/unit/gie_self_tests.cpp index 7aca3001..b7af926b 100644 --- a/test/unit/gie_self_tests.cpp +++ b/test/unit/gie_self_tests.cpp @@ -275,6 +275,50 @@ TEST_F(gieTest, proj_create_crs_to_crs) { // --------------------------------------------------------------------------- +TEST_F(gieTest, proj_create_crs_to_crs_EPSG_4326) { + + auto P = + proj_create_crs_to_crs(PJ_DEFAULT_CTX, "EPSG:4326", "EPSG:32631", NULL); + ASSERT_TRUE(P != nullptr); + PJ_COORD a, b; + + // Lat, long degrees + a.xy.x = 0.0; + a.xy.y = 3.0; + + b.xy.x = 500000.0; + b.xy.y = 0.0; + + a = proj_trans(P, PJ_FWD, a); + EXPECT_NEAR(a.xy.x, b.xy.x, 1e-9); + EXPECT_NEAR(a.xy.y, b.xy.y, 1e-9); + proj_destroy(P); +} + +// --------------------------------------------------------------------------- + +TEST_F(gieTest, proj_create_crs_to_crs_proj_longlat) { + + auto P = proj_create_crs_to_crs( + PJ_DEFAULT_CTX, "+proj=longlat +datum=WGS84", "EPSG:32631", NULL); + ASSERT_TRUE(P != nullptr); + PJ_COORD a, b; + + // Long, lat degrees + a.xy.x = 3.0; + a.xy.y = 0; + + b.xy.x = 500000.0; + b.xy.y = 0.0; + + a = proj_trans(P, PJ_FWD, a); + EXPECT_NEAR(a.xy.x, b.xy.x, 1e-9); + EXPECT_NEAR(a.xy.y, b.xy.y, 1e-9); + proj_destroy(P); +} + +// --------------------------------------------------------------------------- + TEST(gie, info_functions) { PJ_INFO info; PJ_PROJ_INFO pj_info; -- cgit v1.2.3 From 53b83f447b82b59d944d63b336839676d8265b88 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 29 Nov 2018 16:04:49 +0100 Subject: importFromWKT v1: properly handle latitude_of_origin=0 for Mercator_1SP --- src/io.cpp | 19 +++++++++++-------- test/unit/test_io.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/io.cpp b/src/io.cpp index 90732a32..3a980993 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -1199,8 +1199,8 @@ struct WKTParser::Private { static bool hasWebMercPROJ4String(const WKTNodeNNPtr &projCRSNode, const WKTNodeNNPtr &projectionNode); - static bool projectionHasParameter(const WKTNodeNNPtr &projCRSNode, - const char *paramName); + static std::string projectionGetParameter(const WKTNodeNNPtr &projCRSNode, + const char *paramName); ConversionNNPtr buildProjection(const WKTNodeNNPtr &projCRSNode, const WKTNodeNNPtr &projectionNode, @@ -3044,19 +3044,20 @@ WKTParser::Private::buildProjection(const WKTNodeNNPtr &projCRSNode, // --------------------------------------------------------------------------- -bool WKTParser::Private::projectionHasParameter(const WKTNodeNNPtr &projCRSNode, - const char *paramName) { +std::string +WKTParser::Private::projectionGetParameter(const WKTNodeNNPtr &projCRSNode, + const char *paramName) { for (const auto &childNode : projCRSNode->GP()->children()) { if (ci_equal(childNode->GP()->value(), WKTConstants::PARAMETER)) { const auto &childNodeChildren = childNode->GP()->children(); if (childNodeChildren.size() == 2 && metadata::Identifier::isEquivalentName( stripQuotes(childNodeChildren[0]).c_str(), paramName)) { - return true; + return childNodeChildren[1]->GP()->value(); } } } - return false; + return std::string(); } // --------------------------------------------------------------------------- @@ -3078,10 +3079,12 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard( bool gdal_3026_hack = false; if (metadata::Identifier::isEquivalentName(wkt1ProjectionName.c_str(), "Mercator_1SP") && - !projectionHasParameter(projCRSNode, "center_latitude")) { + projectionGetParameter(projCRSNode, "center_latitude").empty()) { // Hack for https://trac.osgeo.org/gdal/ticket/3026 - if (projectionHasParameter(projCRSNode, "latitude_of_origin")) { + std::string lat0( + projectionGetParameter(projCRSNode, "latitude_of_origin")); + if (!lat0.empty() && lat0 != "0" && lat0 != "0.0") { wkt1ProjectionName = "Mercator_2SP"; gdal_3026_hack = true; } else { diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 7fdb1358..0cf36766 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -991,6 +991,33 @@ TEST(wkt_parse, wkt1_projected_with_PROJ4_extension) { // --------------------------------------------------------------------------- +TEST(wkt_parse, wkt1_Mercator_1SP_with_latitude_origin_0) { + auto wkt = "PROJCS[\"unnamed\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"unknown\",\n" + " SPHEROID[\"WGS84\",6378137,298.257223563]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"Mercator_1SP\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",0],\n" + " PARAMETER[\"scale_factor\",1],\n" + " PARAMETER[\"false_easting\",0],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"Meter\",1],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH]]"; + auto obj = WKTParser().createFromWKT(wkt); + + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + auto got_wkt = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()); + EXPECT_TRUE(got_wkt.find("Mercator_1SP") != std::string::npos) << got_wkt; +} + +// --------------------------------------------------------------------------- + TEST(wkt_parse, wkt1_krovak_south_west) { auto wkt = "PROJCS[\"S-JTSK / Krovak\"," -- cgit v1.2.3 From c42a6d88f1314bfac9f70e2e7721d12c84013892 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 29 Nov 2018 18:27:56 +0100 Subject: C API: replace ctxt by ctx --- src/c_api.cpp | 86 +++++++++++++++++++++++++++++------------------------------ src/proj.h | 18 ++++++------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/c_api.cpp b/src/c_api.cpp index dc7bc3e6..8d01df95 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -142,11 +142,11 @@ struct PJ_OBJ_LIST { struct projCppContext { DatabaseContextNNPtr databaseContext; - explicit projCppContext(PJ_CONTEXT *ctxt, const char *dbPath = nullptr, + explicit projCppContext(PJ_CONTEXT *ctx, const char *dbPath = nullptr, const char *const *auxDbPaths = nullptr) : databaseContext(DatabaseContext::create( dbPath ? dbPath : std::string(), toVector(auxDbPaths))) { - databaseContext->attachPJContext(ctxt); + databaseContext->attachPJContext(ctx); } static std::vector toVector(const char *const *auxDbPaths) { @@ -4962,22 +4962,22 @@ proj_create_operation_factory_context(PJ_CONTEXT *ctx, const char *authority) { * This method should be called one and exactly one for each function * returning a PJ_OPERATION_FACTORY_CONTEXT* * - * @param ctxt Object, or NULL. + * @param ctx Object, or NULL. */ -void proj_operation_factory_context_unref(PJ_OPERATION_FACTORY_CONTEXT *ctxt) { - delete ctxt; +void proj_operation_factory_context_unref(PJ_OPERATION_FACTORY_CONTEXT *ctx) { + delete ctx; } // --------------------------------------------------------------------------- /** \brief Set the desired accuracy of the resulting coordinate transformations. - * @param ctxt Operation factory context. must not be NULL + * @param ctx Operation factory context. must not be NULL * @param accuracy Accuracy in meter (or 0 to disable the filter). */ void proj_operation_factory_context_set_desired_accuracy( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, double accuracy) { - assert(ctxt); - ctxt->operationContext->setDesiredAccuracy(accuracy); + PJ_OPERATION_FACTORY_CONTEXT *ctx, double accuracy) { + assert(ctx); + ctx->operationContext->setDesiredAccuracy(accuracy); } // --------------------------------------------------------------------------- @@ -4988,17 +4988,17 @@ void proj_operation_factory_context_set_desired_accuracy( * For an area of interest crossing the anti-meridian, west_lon_degree will be * greater than east_lon_degree. * - * @param ctxt Operation factory context. must not be NULL + * @param ctx Operation factory context. must not be NULL * @param west_lon_degree West longitude (in degrees). * @param south_lat_degree South latitude (in degrees). * @param east_lon_degree East longitude (in degrees). * @param north_lat_degree North latitude (in degrees). */ void proj_operation_factory_context_set_area_of_interest( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, double west_lon_degree, + PJ_OPERATION_FACTORY_CONTEXT *ctx, double west_lon_degree, double south_lat_degree, double east_lon_degree, double north_lat_degree) { - assert(ctxt); - ctxt->operationContext->setAreaOfInterest(Extent::createFromBBOX( + assert(ctx); + ctx->operationContext->setAreaOfInterest(Extent::createFromBBOX( west_lon_degree, south_lat_degree, east_lon_degree, north_lat_degree)); } @@ -5010,30 +5010,30 @@ void proj_operation_factory_context_set_area_of_interest( * * The default is PJ_CRS_EXTENT_SMALLEST. * - * @param ctxt Operation factory context. must not be NULL + * @param ctx Operation factory context. must not be NULL * @param use How source and target CRS extent should be used. */ void proj_operation_factory_context_set_crs_extent_use( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, PROJ_CRS_EXTENT_USE use) { - assert(ctxt); + PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_CRS_EXTENT_USE use) { + assert(ctx); switch (use) { case PJ_CRS_EXTENT_NONE: - ctxt->operationContext->setSourceAndTargetCRSExtentUse( + ctx->operationContext->setSourceAndTargetCRSExtentUse( CoordinateOperationContext::SourceTargetCRSExtentUse::NONE); break; case PJ_CRS_EXTENT_BOTH: - ctxt->operationContext->setSourceAndTargetCRSExtentUse( + ctx->operationContext->setSourceAndTargetCRSExtentUse( CoordinateOperationContext::SourceTargetCRSExtentUse::BOTH); break; case PJ_CRS_EXTENT_INTERSECTION: - ctxt->operationContext->setSourceAndTargetCRSExtentUse( + ctx->operationContext->setSourceAndTargetCRSExtentUse( CoordinateOperationContext::SourceTargetCRSExtentUse::INTERSECTION); break; case PJ_CRS_EXTENT_SMALLEST: - ctxt->operationContext->setSourceAndTargetCRSExtentUse( + ctx->operationContext->setSourceAndTargetCRSExtentUse( CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST); break; } @@ -5048,20 +5048,20 @@ void proj_operation_factory_context_set_crs_extent_use( * * The default is PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT. * - * @param ctxt Operation factory context. must not be NULL + * @param ctx Operation factory context. must not be NULL * @param criterion patial criterion to use */ void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, PROJ_SPATIAL_CRITERION criterion) { - assert(ctxt); + PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_SPATIAL_CRITERION criterion) { + assert(ctx); switch (criterion) { case PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT: - ctxt->operationContext->setSpatialCriterion( + ctx->operationContext->setSpatialCriterion( CoordinateOperationContext::SpatialCriterion::STRICT_CONTAINMENT); break; case PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION: - ctxt->operationContext->setSpatialCriterion( + ctx->operationContext->setSpatialCriterion( CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); break; } @@ -5073,26 +5073,26 @@ void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( * * The default is USE_FOR_SORTING. * - * @param ctxt Operation factory context. must not be NULL + * @param ctx Operation factory context. must not be NULL * @param use how grid availability is used. */ void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, PROJ_GRID_AVAILABILITY_USE use) { - assert(ctxt); + PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_GRID_AVAILABILITY_USE use) { + assert(ctx); switch (use) { case PROJ_GRID_AVAILABILITY_USED_FOR_SORTING: - ctxt->operationContext->setGridAvailabilityUse( + ctx->operationContext->setGridAvailabilityUse( CoordinateOperationContext::GridAvailabilityUse::USE_FOR_SORTING); break; case PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID: - ctxt->operationContext->setGridAvailabilityUse( + ctx->operationContext->setGridAvailabilityUse( CoordinateOperationContext::GridAvailabilityUse:: DISCARD_OPERATION_IF_MISSING_GRID); break; case PROJ_GRID_AVAILABILITY_IGNORED: - ctxt->operationContext->setGridAvailabilityUse( + ctx->operationContext->setGridAvailabilityUse( CoordinateOperationContext::GridAvailabilityUse:: IGNORE_GRID_AVAILABILITY); break; @@ -5106,13 +5106,13 @@ void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( * * The default is true. * - * @param ctxt Operation factory context. must not be NULL + * @param ctx Operation factory context. must not be NULL * @param usePROJNames whether PROJ alternative grid names should be used */ void proj_operation_factory_context_set_use_proj_alternative_grid_names( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, int usePROJNames) { - assert(ctxt); - ctxt->operationContext->setUsePROJAlternativeGridNames(usePROJNames != 0); + PJ_OPERATION_FACTORY_CONTEXT *ctx, int usePROJNames) { + assert(ctx); + ctx->operationContext->setUsePROJAlternativeGridNames(usePROJNames != 0); } // --------------------------------------------------------------------------- @@ -5134,13 +5134,13 @@ void proj_operation_factory_context_set_use_proj_alternative_grid_names( * * The default is true. * - * @param ctxt Operation factory context. must not be NULL + * @param ctx Operation factory context. must not be NULL * @param allow whether intermediate CRS may be used. */ void proj_operation_factory_context_set_allow_use_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, int allow) { - assert(ctxt); - ctxt->operationContext->setAllowUseIntermediateCRS(allow != 0); + PJ_OPERATION_FACTORY_CONTEXT *ctx, int allow) { + assert(ctx); + ctx->operationContext->setAllowUseIntermediateCRS(allow != 0); } // --------------------------------------------------------------------------- @@ -5148,21 +5148,21 @@ void proj_operation_factory_context_set_allow_use_intermediate_crs( /** \brief Restrict the potential pivot CRSs that can be used when trying to * build a coordinate operation between two CRS that have no direct operation. * - * @param ctxt Operation factory context. must not be NULL + * @param ctx Operation factory context. must not be NULL * @param list_of_auth_name_codes an array of strings NLL terminated, * with the format { "auth_name1", "code1", "auth_name2", "code2", ... NULL } */ void proj_operation_factory_context_set_allowed_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PJ_OPERATION_FACTORY_CONTEXT *ctx, const char *const *list_of_auth_name_codes) { - assert(ctxt); + assert(ctx); std::vector> pivots; for (auto iter = list_of_auth_name_codes; iter && iter[0] && iter[1]; iter += 2) { pivots.emplace_back(std::pair( std::string(iter[0]), std::string(iter[1]))); } - ctxt->operationContext->setIntermediateCRS(pivots); + ctx->operationContext->setIntermediateCRS(pivots); } // --------------------------------------------------------------------------- diff --git a/src/proj.h b/src/proj.h index 194d9059..af834e31 100644 --- a/src/proj.h +++ b/src/proj.h @@ -682,14 +682,14 @@ PJ_OPERATION_FACTORY_CONTEXT PROJ_DLL *proj_create_operation_factory_context( const char *authority); void PROJ_DLL proj_operation_factory_context_unref( - PJ_OPERATION_FACTORY_CONTEXT *ctxt); + PJ_OPERATION_FACTORY_CONTEXT *ctx); void PROJ_DLL proj_operation_factory_context_set_desired_accuracy( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PJ_OPERATION_FACTORY_CONTEXT *ctx, double accuracy); void PROJ_DLL proj_operation_factory_context_set_area_of_interest( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PJ_OPERATION_FACTORY_CONTEXT *ctx, double west_lon_degree, double south_lat_degree, double east_lon_degree, @@ -715,7 +715,7 @@ typedef enum } PROJ_CRS_EXTENT_USE; void PROJ_DLL proj_operation_factory_context_set_crs_extent_use( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_CRS_EXTENT_USE use); /** Spatial criterion to restrict candiate operations. */ @@ -730,7 +730,7 @@ typedef enum { } PROJ_SPATIAL_CRITERION; void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_SPATIAL_CRITERION criterion); @@ -749,18 +749,18 @@ typedef enum { } PROJ_GRID_AVAILABILITY_USE; void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_GRID_AVAILABILITY_USE use); void PROJ_DLL proj_operation_factory_context_set_use_proj_alternative_grid_names( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PJ_OPERATION_FACTORY_CONTEXT *ctx, int usePROJNames); void PROJ_DLL proj_operation_factory_context_set_allow_use_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, int allow); + PJ_OPERATION_FACTORY_CONTEXT *ctx, int allow); void PROJ_DLL proj_operation_factory_context_set_allowed_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PJ_OPERATION_FACTORY_CONTEXT *ctx, const char* const *list_of_auth_name_codes); /* ------------------------------------------------------------------------- */ -- cgit v1.2.3 From 28d69400b04eb683bfccb3e7d3ad8a054ad73897 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 29 Nov 2018 20:47:26 +0100 Subject: C API: rename output parameters to have a out_ prefix --- src/c_api.cpp | 320 +++++++++++++++++++++++--------------------- src/coordinateoperation.cpp | 2 + src/proj.h | 68 +++++----- 3 files changed, 200 insertions(+), 190 deletions(-) diff --git a/src/c_api.cpp b/src/c_api.cpp index 8d01df95..35409e47 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -1062,30 +1062,30 @@ const char *proj_obj_as_proj_string(const PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, /** \brief Return the area of use of an object. * * @param obj Object (must not be NULL) - * @param p_west_lon_degree Pointer to a double to receive the west longitude + * @param out_west_lon_degree Pointer to a double to receive the west longitude * (in degrees). Or NULL. If the returned value is -1000, the bounding box is * unknown. - * @param p_south_lat_degree Pointer to a double to receive the south latitude + * @param out_south_lat_degree Pointer to a double to receive the south latitude * (in degrees). Or NULL. If the returned value is -1000, the bounding box is * unknown. - * @param p_east_lon_degree Pointer to a double to receive the east longitude + * @param out_east_lon_degree Pointer to a double to receive the east longitude * (in degrees). Or NULL. If the returned value is -1000, the bounding box is * unknown. - * @param p_north_lat_degree Pointer to a double to receive the north latitude + * @param out_north_lat_degree Pointer to a double to receive the north latitude * (in degrees). Or NULL. If the returned value is -1000, the bounding box is * unknown. - * @param p_area_name Pointer to a string to receive the name of the area of + * @param out_area_name Pointer to a string to receive the name of the area of * use. Or NULL. *p_area_name is valid while obj is valid itself. * @return TRUE in case of success, FALSE in case of error or if the area * of use is unknown. */ -int proj_obj_get_area_of_use(const PJ_OBJ *obj, double *p_west_lon_degree, - double *p_south_lat_degree, - double *p_east_lon_degree, - double *p_north_lat_degree, - const char **p_area_name) { - if (p_area_name) { - *p_area_name = nullptr; +int proj_obj_get_area_of_use(const PJ_OBJ *obj, double *out_west_lon_degree, + double *out_south_lat_degree, + double *out_east_lon_degree, + double *out_north_lat_degree, + const char **out_area_name) { + if (out_area_name) { + *out_area_name = nullptr; } auto objectUsage = dynamic_cast(obj->obj.get()); if (!objectUsage) { @@ -1100,8 +1100,8 @@ int proj_obj_get_area_of_use(const PJ_OBJ *obj, double *p_west_lon_degree, return false; } const auto &desc = extent->description(); - if (desc.has_value() && p_area_name) { - *p_area_name = desc->c_str(); + if (desc.has_value() && out_area_name) { + *out_area_name = desc->c_str(); } const auto &geogElements = extent->geographicElements(); @@ -1109,32 +1109,32 @@ int proj_obj_get_area_of_use(const PJ_OBJ *obj, double *p_west_lon_degree, auto bbox = dynamic_cast(geogElements[0].get()); if (bbox) { - if (p_west_lon_degree) { - *p_west_lon_degree = bbox->westBoundLongitude(); + if (out_west_lon_degree) { + *out_west_lon_degree = bbox->westBoundLongitude(); } - if (p_south_lat_degree) { - *p_south_lat_degree = bbox->southBoundLatitude(); + if (out_south_lat_degree) { + *out_south_lat_degree = bbox->southBoundLatitude(); } - if (p_east_lon_degree) { - *p_east_lon_degree = bbox->eastBoundLongitude(); + if (out_east_lon_degree) { + *out_east_lon_degree = bbox->eastBoundLongitude(); } - if (p_north_lat_degree) { - *p_north_lat_degree = bbox->northBoundLatitude(); + if (out_north_lat_degree) { + *out_north_lat_degree = bbox->northBoundLatitude(); } return true; } } - if (p_west_lon_degree) { - *p_west_lon_degree = -1000; + if (out_west_lon_degree) { + *out_west_lon_degree = -1000; } - if (p_south_lat_degree) { - *p_south_lat_degree = -1000; + if (out_south_lat_degree) { + *out_south_lat_degree = -1000; } - if (p_east_lon_degree) { - *p_east_lon_degree = -1000; + if (out_east_lon_degree) { + *out_east_lon_degree = -1000; } - if (p_north_lat_degree) { - *p_north_lat_degree = -1000; + if (out_north_lat_degree) { + *out_north_lat_degree = -1000; } return true; } @@ -1352,22 +1352,25 @@ PJ_OBJ *proj_obj_crs_get_horizontal_datum(const PJ_OBJ *crs) { /** \brief Return ellipsoid parameters. * * @param ellipsoid Object of type Ellipsoid (must not be NULL) - * @param pSemiMajorMetre Pointer to a value to store the semi-major axis in + * @param out_semi_major_metre Pointer to a value to store the semi-major axis + * in * metre. or NULL - * @param pSemiMinorMetre Pointer to a value to store the semi-minor axis in + * @param out_semi_minor_metre Pointer to a value to store the semi-minor axis + * in * metre. or NULL - * @param pIsSemiMinorComputed Pointer to a boolean value to indicate if the + * @param out_is_semi_minor_computed Pointer to a boolean value to indicate if + * the * semi-minor value was computed. If FALSE, its value comes from the * definition. or NULL - * @param pInverseFlattening Pointer to a value to store the inverse + * @param out_inv_flattening Pointer to a value to store the inverse * flattening. or NULL * @return TRUE in case of success. */ int proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, - double *pSemiMajorMetre, - double *pSemiMinorMetre, - int *pIsSemiMinorComputed, - double *pInverseFlattening) { + double *out_semi_major_metre, + double *out_semi_minor_metre, + int *out_is_semi_minor_computed, + double *out_inv_flattening) { assert(ellipsoid); auto l_ellipsoid = dynamic_cast(ellipsoid->obj.get()); if (!l_ellipsoid) { @@ -1376,17 +1379,19 @@ int proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, return FALSE; } - if (pSemiMajorMetre) { - *pSemiMajorMetre = l_ellipsoid->semiMajorAxis().getSIValue(); + if (out_semi_major_metre) { + *out_semi_major_metre = l_ellipsoid->semiMajorAxis().getSIValue(); } - if (pSemiMinorMetre) { - *pSemiMinorMetre = l_ellipsoid->computeSemiMinorAxis().getSIValue(); + if (out_semi_minor_metre) { + *out_semi_minor_metre = + l_ellipsoid->computeSemiMinorAxis().getSIValue(); } - if (pIsSemiMinorComputed) { - *pIsSemiMinorComputed = !(l_ellipsoid->semiMinorAxis().has_value()); + if (out_is_semi_minor_computed) { + *out_is_semi_minor_computed = + !(l_ellipsoid->semiMinorAxis().has_value()); } - if (pInverseFlattening) { - *pInverseFlattening = l_ellipsoid->computedInverseFlattening(); + if (out_inv_flattening) { + *out_inv_flattening = l_ellipsoid->computedInverseFlattening(); } return TRUE; } @@ -1427,18 +1432,18 @@ PJ_OBJ *proj_obj_get_prime_meridian(const PJ_OBJ *obj) { /** \brief Return prime meridian parameters. * * @param prime_meridian Object of type PrimeMeridian (must not be NULL) - * @param pLongitude Pointer to a value to store the longitude of the prime + * @param out_longitude Pointer to a value to store the longitude of the prime * meridian, in its native unit. or NULL - * @param pLongitudeUnitConvFactor Pointer to a value to store the conversion + * @param out_unit_conv_factor Pointer to a value to store the conversion * factor of the prime meridian longitude unit to radian. or NULL - * @param pLongitudeUnitName Pointer to a string value to store the unit name. + * @param out_unit_name Pointer to a string value to store the unit name. * or NULL * @return TRUE in case of success. */ int proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, - double *pLongitude, - double *pLongitudeUnitConvFactor, - const char **pLongitudeUnitName) { + double *out_longitude, + double *out_unit_conv_factor, + const char **out_unit_name) { assert(prime_meridian); auto l_pm = dynamic_cast(prime_meridian->obj.get()); if (!l_pm) { @@ -1447,15 +1452,15 @@ int proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, return false; } const auto &longitude = l_pm->longitude(); - if (pLongitude) { - *pLongitude = longitude.value(); + if (out_longitude) { + *out_longitude = longitude.value(); } const auto &unit = longitude.unit(); - if (pLongitudeUnitConvFactor) { - *pLongitudeUnitConvFactor = unit.conversionToSI(); + if (out_unit_conv_factor) { + *out_unit_conv_factor = unit.conversionToSI(); } - if (pLongitudeUnitName) { - *pLongitudeUnitName = unit.name().c_str(); + if (out_unit_name) { + *out_unit_name = unit.name().c_str(); } return true; } @@ -1704,19 +1709,19 @@ void proj_free_string_list(PROJ_STRING_LIST list) { * It should be used by at most one thread at a time. * * @param crs Objet of type DerivedCRS or BoundCRSs (must not be NULL) - * @param pMethodName Pointer to a string value to store the method + * @param out_method_name Pointer to a string value to store the method * (projection) name. or NULL - * @param pMethodAuthorityName Pointer to a string value to store the method + * @param out_method_auth_name Pointer to a string value to store the method * authority name. or NULL - * @param pMethodCode Pointer to a string value to store the method + * @param out_method_code Pointer to a string value to store the method * code. or NULL * @return Object of type SingleOperation that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, - const char **pMethodName, - const char **pMethodAuthorityName, - const char **pMethodCode) { + const char **out_method_name, + const char **out_method_auth_name, + const char **out_method_code) { assert(crs); SingleOperationPtr co; @@ -1736,21 +1741,21 @@ PJ_OBJ *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, const auto &method = co->method(); const auto &method_ids = method->identifiers(); - if (pMethodName) { - *pMethodName = method->name()->description()->c_str(); + if (out_method_name) { + *out_method_name = method->name()->description()->c_str(); } - if (pMethodAuthorityName) { + if (out_method_auth_name) { if (!method_ids.empty()) { - *pMethodAuthorityName = method_ids[0]->codeSpace()->c_str(); + *out_method_auth_name = method_ids[0]->codeSpace()->c_str(); } else { - *pMethodAuthorityName = nullptr; + *out_method_auth_name = nullptr; } } - if (pMethodCode) { + if (out_method_code) { if (!method_ids.empty()) { - *pMethodCode = method_ids[0]->code().c_str(); + *out_method_code = method_ids[0]->code().c_str(); } else { - *pMethodCode = nullptr; + *out_method_code = nullptr; } } return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(co)); @@ -4691,29 +4696,30 @@ int proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, * @param coordoperation Objet of type SingleOperation or derived classes * (must not be NULL) * @param index Parameter index. - * @param pName Pointer to a string value to store the parameter name. or NULL - * @param pNameAuthorityName Pointer to a string value to store the parameter + * @param out_name Pointer to a string value to store the parameter name. or + * NULL + * @param out_auth_name Pointer to a string value to store the parameter * authority name. or NULL - * @param pNameCode Pointer to a string value to store the parameter + * @param out_code Pointer to a string value to store the parameter * code. or NULL - * @param pValue Pointer to a double value to store the parameter + * @param out_value Pointer to a double value to store the parameter * value (if numeric). or NULL - * @param pValueString Pointer to a string value to store the parameter + * @param out_value_string Pointer to a string value to store the parameter * value (if of type string). or NULL - * @param pValueUnitConvFactor Pointer to a double value to store the parameter + * @param out_unit_conv_factor Pointer to a double value to store the parameter * unit conversion factor. or NULL - * @param pValueUnitName Pointer to a string value to store the parameter + * @param out_unit_name Pointer to a string value to store the parameter * unit name. or NULL * @return TRUE in case of success. */ int proj_coordoperation_get_param(const PJ_OBJ *coordoperation, int index, - const char **pName, - const char **pNameAuthorityName, - const char **pNameCode, double *pValue, - const char **pValueString, - double *pValueUnitConvFactor, - const char **pValueUnitName) { + const char **out_name, + const char **out_auth_name, + const char **out_code, double *out_value, + const char **out_value_string, + double *out_unit_conv_factor, + const char **out_unit_name) { assert(coordoperation); auto op = dynamic_cast(coordoperation->obj.get()); if (!op) { @@ -4731,21 +4737,21 @@ int proj_coordoperation_get_param(const PJ_OBJ *coordoperation, int index, const auto ¶m = parameters[index]; const auto ¶m_ids = param->identifiers(); - if (pName) { - *pName = param->name()->description()->c_str(); + if (out_name) { + *out_name = param->name()->description()->c_str(); } - if (pNameAuthorityName) { + if (out_auth_name) { if (!param_ids.empty()) { - *pNameAuthorityName = param_ids[0]->codeSpace()->c_str(); + *out_auth_name = param_ids[0]->codeSpace()->c_str(); } else { - *pNameAuthorityName = nullptr; + *out_auth_name = nullptr; } } - if (pNameCode) { + if (out_code) { if (!param_ids.empty()) { - *pNameCode = param_ids[0]->code().c_str(); + *out_code = param_ids[0]->code().c_str(); } else { - *pNameCode = nullptr; + *out_code = nullptr; } } @@ -4756,38 +4762,38 @@ int proj_coordoperation_get_param(const PJ_OBJ *coordoperation, int index, if (opParamValue) { paramValue = opParamValue->parameterValue().as_nullable(); } - if (pValue) { - *pValue = 0; + if (out_value) { + *out_value = 0; if (paramValue) { if (paramValue->type() == ParameterValue::Type::MEASURE) { - *pValue = paramValue->value().value(); + *out_value = paramValue->value().value(); } } } - if (pValueString) { - *pValueString = nullptr; + if (out_value_string) { + *out_value_string = nullptr; if (paramValue) { if (paramValue->type() == ParameterValue::Type::FILENAME) { - *pValueString = paramValue->valueFile().c_str(); + *out_value_string = paramValue->valueFile().c_str(); } else if (paramValue->type() == ParameterValue::Type::STRING) { - *pValueString = paramValue->stringValue().c_str(); + *out_value_string = paramValue->stringValue().c_str(); } } } - if (pValueUnitConvFactor) { - *pValueUnitConvFactor = 0; + if (out_unit_conv_factor) { + *out_unit_conv_factor = 0; if (paramValue) { if (paramValue->type() == ParameterValue::Type::MEASURE) { - *pValueUnitConvFactor = + *out_unit_conv_factor = paramValue->value().unit().conversionToSI(); } } } - if (pValueUnitName) { - *pValueUnitName = nullptr; + if (out_unit_name) { + *out_unit_name = nullptr; if (paramValue) { if (paramValue->type() == ParameterValue::Type::MEASURE) { - *pValueUnitName = paramValue->value().unit().name().c_str(); + *out_unit_name = paramValue->value().unit().name().c_str(); } } } @@ -4835,29 +4841,29 @@ int proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation) { * @param coordoperation Objet of type SingleOperation or derived classes * (must not be NULL) * @param index Parameter index. - * @param pShortName Pointer to a string value to store the grid short name. or - * NULL - * @param pFullName Pointer to a string value to store the grid full filename. + * @param out_short_name Pointer to a string value to store the grid short name. * or NULL - * @param pPackageName Pointer to a string value to store the package name where + * @param out_full_name Pointer to a string value to store the grid full + * filename. or NULL + * @param out_package_name Pointer to a string value to store the package name + * where * the grid might be found. or NULL - * @param pURL Pointer to a string value to store the grid URL or the + * @param out_url Pointer to a string value to store the grid URL or the * package URL where the grid might be found. or NULL - * @param pDirectDownload Pointer to a int (boolean) value to store whether - * *pURL can be downloaded directly. or NULL - * @param pOpenLicense Pointer to a int (boolean) value to store whether + * @param out_direct_download Pointer to a int (boolean) value to store whether + * *out_url can be downloaded directly. or NULL + * @param out_open_license Pointer to a int (boolean) value to store whether * the grid is released with an open license. or NULL - * @param pAvailable Pointer to a int (boolean) value to store whether the grid - * is available at runtime. or NULL + * @param out_available Pointer to a int (boolean) value to store whether the + * grid is available at runtime. or NULL * @return TRUE in case of success. */ -int proj_coordoperation_get_grid_used(const PJ_OBJ *coordoperation, int index, - const char **pShortName, - const char **pFullName, - const char **pPackageName, - const char **pURL, int *pDirectDownload, - int *pOpenLicense, int *pAvailable) { +int proj_coordoperation_get_grid_used( + const PJ_OBJ *coordoperation, int index, const char **out_short_name, + const char **out_full_name, const char **out_package_name, + const char **out_url, int *out_direct_download, int *out_open_license, + int *out_available) { const int count = proj_coordoperation_get_grid_used_count(coordoperation); if (index < 0 || index >= count) { proj_log_error(coordoperation->ctx, __FUNCTION__, "Invalid index"); @@ -4865,32 +4871,32 @@ int proj_coordoperation_get_grid_used(const PJ_OBJ *coordoperation, int index, } const auto &gridDesc = coordoperation->gridsNeeded[index]; - if (pShortName) { - *pShortName = gridDesc.shortName.c_str(); + if (out_short_name) { + *out_short_name = gridDesc.shortName.c_str(); } - if (pFullName) { - *pFullName = gridDesc.fullName.c_str(); + if (out_full_name) { + *out_full_name = gridDesc.fullName.c_str(); } - if (pPackageName) { - *pPackageName = gridDesc.packageName.c_str(); + if (out_package_name) { + *out_package_name = gridDesc.packageName.c_str(); } - if (pURL) { - *pURL = gridDesc.url.c_str(); + if (out_url) { + *out_url = gridDesc.url.c_str(); } - if (pDirectDownload) { - *pDirectDownload = gridDesc.directDownload; + if (out_direct_download) { + *out_direct_download = gridDesc.directDownload; } - if (pOpenLicense) { - *pOpenLicense = gridDesc.openLicense; + if (out_open_license) { + *out_open_license = gridDesc.openLicense; } - if (pAvailable) { - *pAvailable = gridDesc.available; + if (out_available) { + *out_available = gridDesc.available; } return true; @@ -5408,20 +5414,22 @@ int proj_obj_cs_get_axis_count(const PJ_OBJ *cs) { * @param cs Objet of type CoordinateSystem (must not be NULL) * @param index Index of the coordinate system (between 0 and * proj_obj_cs_get_axis_count() - 1) - * @param pName Pointer to a string value to store the axis name. or NULL - * @param pAbbrev Pointer to a string value to store the axis abbreviation. or - * NULL - * @param pDirection Pointer to a string value to store the axis direction. or - * NULL - * @param pUnitConvFactor Pointer to a double value to store the axis + * @param out_name Pointer to a string value to store the axis name. or NULL + * @param out_abbrev Pointer to a string value to store the axis abbreviation. + * or NULL + * @param out_direction Pointer to a string value to store the axis direction. + * or NULL + * @param out_unit_conv_factor Pointer to a double value to store the axis * unit conversion factor. or NULL - * @param pUnitName Pointer to a string value to store the axis + * @param out_unit_name Pointer to a string value to store the axis * unit name. or NULL * @return TRUE in case of success */ -int proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, const char **pName, - const char **pAbbrev, const char **pDirection, - double *pUnitConvFactor, const char **pUnitName) { +int proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, + const char **out_name, const char **out_abbrev, + const char **out_direction, + double *out_unit_conv_factor, + const char **out_unit_name) { assert(cs); auto l_cs = dynamic_cast(cs->obj.get()); if (!l_cs) { @@ -5435,20 +5443,20 @@ int proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, const char **pName, return false; } const auto &axis = axisList[index]; - if (pName) { - *pName = axis->nameStr().c_str(); + if (out_name) { + *out_name = axis->nameStr().c_str(); } - if (pAbbrev) { - *pAbbrev = axis->abbreviation().c_str(); + if (out_abbrev) { + *out_abbrev = axis->abbreviation().c_str(); } - if (pDirection) { - *pDirection = axis->direction().toString().c_str(); + if (out_direction) { + *out_direction = axis->direction().toString().c_str(); } - if (pUnitConvFactor) { - *pUnitConvFactor = axis->unit().conversionToSI(); + if (out_unit_conv_factor) { + *out_unit_conv_factor = axis->unit().conversionToSI(); } - if (pUnitName) { - *pUnitName = axis->unit().name().c_str(); + if (out_unit_name) { + *out_unit_name = axis->unit().name().c_str(); } return true; } diff --git a/src/coordinateoperation.cpp b/src/coordinateoperation.cpp index dce25653..fe22448f 100644 --- a/src/coordinateoperation.cpp +++ b/src/coordinateoperation.cpp @@ -149,6 +149,8 @@ static std::set buildSetEquivalentParameters() { {"latitude_of_point_2", "Latitude_Of_2nd_Point", nullptr}, {"longitude_of_point_2", "Longitude_Of_2nd_Point", nullptr}, + {"satellite_height", "height", nullptr}, + {EPSG_NAME_PARAMETER_FALSE_EASTING, EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN, EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE, nullptr}, diff --git a/src/proj.h b/src/proj.h index af834e31..8548a209 100644 --- a/src/proj.h +++ b/src/proj.h @@ -606,11 +606,11 @@ const char PROJ_DLL* proj_obj_get_id_auth_name(const PJ_OBJ *obj, int index); const char PROJ_DLL* proj_obj_get_id_code(const PJ_OBJ *obj, int index); int PROJ_DLL proj_obj_get_area_of_use(const PJ_OBJ *obj, - double* p_west_lon_degree, - double* p_south_lat_degree, - double* p_east_lon_degree, - double* p_north_lat_degree, - const char **p_area_name); + double* out_west_lon_degree, + double* out_south_lat_degree, + double* out_east_lon_degree, + double* out_north_lat_degree, + const char **out_area_name); /** \brief WKT version. */ typedef enum @@ -811,31 +811,31 @@ PJ_COORDINATE_SYSTEM_TYPE PROJ_DLL proj_obj_cs_get_type(const PJ_OBJ* cs); int PROJ_DLL proj_obj_cs_get_axis_count(const PJ_OBJ *cs); int PROJ_DLL proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, - const char **pName, - const char **pAbbrev, - const char **pDirection, - double *pUnitConvFactor, - const char **pUnitName); + const char **out_name, + const char **out_abbrev, + const char **out_direction, + double *out_unit_conv_factor, + const char **out_unit_name); PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(const PJ_OBJ *obj); int PROJ_DLL proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, - double *pSemiMajorMetre, - double *pSemiMinorMetre, - int *pIsSemiMinorComputed, - double *pInverseFlattening); + double *out_semi_major_metre, + double *out_semi_minor_metre, + int *out_is_semi_minor_computed, + double *out_inv_flattening); PJ_OBJ PROJ_DLL *proj_obj_get_prime_meridian(const PJ_OBJ *obj); int PROJ_DLL proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, - double *pLongitude, - double *pLongitudeUnitConvFactor, - const char **pLongitudeUnitName); + double *out_longitude, + double *out_unit_conv_factor, + const char **out_unit_name); PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, - const char **pMethodName, - const char **pMethodAuthorityName, - const char **pMethodCode); + const char **out_method_name, + const char **out_method_auth_name, + const char **out_method_code); int PROJ_DLL proj_coordoperation_is_instanciable(const PJ_OBJ *coordoperation); @@ -846,25 +846,25 @@ int PROJ_DLL proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, int PROJ_DLL proj_coordoperation_get_param(const PJ_OBJ *coordoperation, int index, - const char **pName, - const char **pNameAuthorityName, - const char **pNameCode, - double *pValue, - const char **pValueString, - double *pValueUnitConvFactor, - const char **pValueUnitName); + const char **out_name, + const char **out_auth_name, + const char **out_code, + double *out_value, + const char **out_value_string, + double *out_unit_conv_factor, + const char **out_unit_name); int PROJ_DLL proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation); int PROJ_DLL proj_coordoperation_get_grid_used(const PJ_OBJ *coordoperation, int index, - const char **pShortName, - const char **pFullName, - const char **pPackageName, - const char **pURL, - int *pDirectDownload, - int *pOpenLicense, - int *pAvailable); + const char **out_short_name, + const char **out_full_name, + const char **out_package_name, + const char **out_url, + int *out_direct_download, + int *out_open_license, + int *out_available); double PROJ_DLL proj_coordoperation_get_accuracy(const PJ_OBJ* obj); -- cgit v1.2.3 From 664bd689bf8dd3ca38a5071459902b89114e88eb Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 30 Nov 2018 02:36:00 +0100 Subject: C API: do not 'cache' PROJ context in PJ_OBJ objects We store the PJ_CONTEXT* in the PJ_OBJ objects, but this might cause issues in multi-threaded uses. For example, before this change, let's imagie: - a PJ_OBJ is created in thread A with a PJ_CONTEXT that is specific to this thread A - PJ_OBJ is transfered to another thread that operates on it. It might thus use the PJ_CONTEXT that was TLS(A) - in the meantime thread A does completely different things, but still operate on its PJ_CONTEXT. We might get a concurrent use of the PJ_CONTEXT despite working on different PJ_OBJ Another situation is when using constructor functions that take two PJ_OBJ. Up to now, we arbitrarily selected the context of one of the arguments to attach it to the new object. So better be explicit on which context is used. For reference, in those wrappers of the C++ API, the context is mostly used for two things: - reporting C++ exceptions as PROJ errors with the error handler attached to the PJ_CONTEXT - using the database handle that is associated with the PJ_CONTEXT. --- scripts/create_c_api_projections.py | 3 +- src/c_api.cpp | 952 +++++++++++++++++++++--------------- src/cs2cs.cpp | 16 +- src/pj_init.c | 2 +- src/proj.h | 132 +++-- src/proj_4D_api.c | 9 +- test/unit/test_c_api.cpp | 330 +++++++------ 7 files changed, 841 insertions(+), 603 deletions(-) diff --git a/scripts/create_c_api_projections.py b/scripts/create_c_api_projections.py index a56e99b3..a551469d 100755 --- a/scripts/create_c_api_projections.py +++ b/scripts/create_c_api_projections.py @@ -137,6 +137,7 @@ for sectiondef in compounddef.iter('sectiondef'): cppfile.write(" * Angular parameters are expressed in (angUnitName, angUnitConvFactor).\n") cppfile.write(" */\n") cppfile.write("PJ_OBJ* " + decl + "{\n"); + cppfile.write(" SANITIZE_CTX(ctx);\n"); cppfile.write(" try {\n"); if has_linear: cppfile.write(" UnitOfMeasure linearUnit(createLinearUnit(linearUnitName, linearUnitConvFactor));\n") @@ -156,7 +157,7 @@ for sectiondef in compounddef.iter('sectiondef'): cppfile.write(", Scale(" + param[1] + ")") cppfile.write(");\n") - cppfile.write(" return proj_obj_create_conversion(ctx, conv);\n") + cppfile.write(" return proj_obj_create_conversion(conv);\n") cppfile.write(" } catch (const std::exception &e) {\n"); cppfile.write(" proj_log_error(ctx, __FUNCTION__, e.what());\n") cppfile.write(" }\n") diff --git a/src/c_api.cpp b/src/c_api.cpp index 35409e47..5f9ed5c2 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -92,7 +92,6 @@ static void PROJ_NO_INLINE proj_log_debug(PJ_CONTEXT *ctx, const char *function, * Operation. Should be used by at most one thread at a time. */ struct PJ_OBJ { //! @cond Doxygen_Suppress - PJ_CONTEXT *ctx; IdentifiedObjectNNPtr obj; // cached results @@ -101,10 +100,8 @@ struct PJ_OBJ { mutable bool gridsNeededAsked = false; mutable std::vector gridsNeeded{}; - explicit PJ_OBJ(PJ_CONTEXT *ctxIn, const IdentifiedObjectNNPtr &objIn) - : ctx(ctxIn), obj(objIn) {} - static PJ_OBJ *create(PJ_CONTEXT *ctxIn, - const IdentifiedObjectNNPtr &objIn); + explicit PJ_OBJ(const IdentifiedObjectNNPtr &objIn) : obj(objIn) {} + static PJ_OBJ *create(const IdentifiedObjectNNPtr &objIn); PJ_OBJ(const PJ_OBJ &) = delete; PJ_OBJ &operator=(const PJ_OBJ &) = delete; @@ -112,8 +109,8 @@ struct PJ_OBJ { }; //! @cond Doxygen_Suppress -PJ_OBJ *PJ_OBJ::create(PJ_CONTEXT *ctxIn, const IdentifiedObjectNNPtr &objIn) { - return new PJ_OBJ(ctxIn, objIn); +PJ_OBJ *PJ_OBJ::create(const IdentifiedObjectNNPtr &objIn) { + return new PJ_OBJ(objIn); } //! @endcond @@ -122,12 +119,10 @@ PJ_OBJ *PJ_OBJ::create(PJ_CONTEXT *ctxIn, const IdentifiedObjectNNPtr &objIn) { /** \brief Opaque object representing a set of operation results. */ struct PJ_OBJ_LIST { //! @cond Doxygen_Suppress - PJ_CONTEXT *ctx; std::vector objects; - explicit PJ_OBJ_LIST(PJ_CONTEXT *ctxIn, - std::vector &&objectsIn) - : ctx(ctxIn), objects(std::move(objectsIn)) {} + explicit PJ_OBJ_LIST(std::vector &&objectsIn) + : objects(std::move(objectsIn)) {} PJ_OBJ_LIST(const PJ_OBJ_LIST &) = delete; PJ_OBJ_LIST &operator=(const PJ_OBJ_LIST &) = delete; @@ -320,15 +315,17 @@ static const char *getOptionValue(const char *option, * The returned object must be unreferenced with proj_obj_unref() after use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Object to clone. Must not be NULL. * @return Object that must be unreferenced with proj_obj_unref(), or NULL in * case of error. */ -PJ_OBJ *proj_obj_clone(const PJ_OBJ *obj) { +PJ_OBJ *proj_obj_clone(PJ_CONTEXT *ctx, const PJ_OBJ *obj) { + SANITIZE_CTX(ctx); try { - return PJ_OBJ::create(obj->ctx, obj->obj); + return PJ_OBJ::create(obj->obj); } catch (const std::exception &e) { - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); } return nullptr; } @@ -382,7 +379,7 @@ PJ_OBJ *proj_obj_create_from_user_input(PJ_CONTEXT *ctx, const char *text, auto identifiedObject = nn_dynamic_pointer_cast( createFromUserInput(text, dbContext, usePROJ4InitRules)); if (identifiedObject) { - return PJ_OBJ::create(ctx, NN_NO_CHECK(identifiedObject)); + return PJ_OBJ::create(NN_NO_CHECK(identifiedObject)); } } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -414,7 +411,7 @@ PJ_OBJ *proj_obj_create_from_wkt(PJ_CONTEXT *ctx, const char *wkt, auto identifiedObject = nn_dynamic_pointer_cast( WKTParser().createFromWKT(wkt)); if (identifiedObject) { - return PJ_OBJ::create(ctx, NN_NO_CHECK(identifiedObject)); + return PJ_OBJ::create(NN_NO_CHECK(identifiedObject)); } } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -447,7 +444,7 @@ PJ_OBJ *proj_obj_create_from_proj_string(PJ_CONTEXT *ctx, auto identifiedObject = nn_dynamic_pointer_cast( PROJStringParser().createFromPROJString(proj_string)); if (identifiedObject) { - return PJ_OBJ::create(ctx, NN_NO_CHECK(identifiedObject)); + return PJ_OBJ::create(NN_NO_CHECK(identifiedObject)); } } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -504,7 +501,7 @@ PJ_OBJ *proj_obj_create_from_database(PJ_CONTEXT *ctx, const char *auth_name, .as_nullable(); break; } - return PJ_OBJ::create(ctx, NN_NO_CHECK(obj)); + return PJ_OBJ::create(NN_NO_CHECK(obj)); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -671,7 +668,7 @@ PJ_OBJ_LIST *proj_obj_create_from_name(PJ_CONTEXT *ctx, const char *auth_name, for (const auto &obj : res) { objects.push_back(obj); } - return new PJ_OBJ_LIST(ctx, std::move(objects)); + return new PJ_OBJ_LIST(std::move(objects)); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -907,6 +904,7 @@ const char *proj_obj_get_id_code(const PJ_OBJ *obj, int index) { * This function may return NULL if the object is not compatible with an * export to the requested type. * + * @param ctx PROJ context, or NULL for default context * @param obj Object (must not be NULL) * @param type WKT version. * @param options null-terminated list of options, or NULL. Currently @@ -922,8 +920,9 @@ const char *proj_obj_get_id_code(const PJ_OBJ *obj, int index) { * * @return a string, or NULL in case of error. */ -const char *proj_obj_as_wkt(const PJ_OBJ *obj, PJ_WKT_TYPE type, - const char *const *options) { +const char *proj_obj_as_wkt(PJ_CONTEXT *ctx, const PJ_OBJ *obj, + PJ_WKT_TYPE type, const char *const *options) { + SANITIZE_CTX(ctx); assert(obj); // Make sure that the C and C++ enumerations match @@ -978,14 +977,14 @@ const char *proj_obj_as_wkt(const PJ_OBJ *obj, PJ_WKT_TYPE type, } else { std::string msg("Unknown option :"); msg += *iter; - proj_log_error(obj->ctx, __FUNCTION__, msg.c_str()); + proj_log_error(ctx, __FUNCTION__, msg.c_str()); return nullptr; } } obj->lastWKT = obj->obj->exportToWKT(formatter.get()); return obj->lastWKT.c_str(); } catch (const std::exception &e) { - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; } } @@ -1004,6 +1003,7 @@ const char *proj_obj_as_wkt(const PJ_OBJ *obj, PJ_WKT_TYPE type, * This function may return NULL if the object is not compatible with an * export to the requested type. * + * @param ctx PROJ context, or NULL for default context * @param obj Object (must not be NULL) * @param type PROJ String version. * @param options NULL-terminated list of strings with "KEY=VALUE" format. or @@ -1013,14 +1013,15 @@ const char *proj_obj_as_wkt(const PJ_OBJ *obj, PJ_WKT_TYPE type, * use of etmerc by utm conversions) * @return a string, or NULL in case of error. */ -const char *proj_obj_as_proj_string(const PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, +const char *proj_obj_as_proj_string(PJ_CONTEXT *ctx, const PJ_OBJ *obj, + PJ_PROJ_STRING_TYPE type, const char *const *options) { + SANITIZE_CTX(ctx); assert(obj); auto exportable = dynamic_cast(obj->obj.get()); if (!exportable) { - proj_log_error(obj->ctx, __FUNCTION__, - "Object type not exportable to PROJ"); + proj_log_error(ctx, __FUNCTION__, "Object type not exportable to PROJ"); return nullptr; } // Make sure that the C and C++ enumeration match @@ -1039,7 +1040,7 @@ const char *proj_obj_as_proj_string(const PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, } const PROJStringFormatter::Convention convention = static_cast(type); - auto dbContext = getDBcontextNoException(obj->ctx, __FUNCTION__); + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); try { auto formatter = PROJStringFormatter::create(convention, dbContext); if (options != nullptr && options[0] != nullptr) { @@ -1052,7 +1053,7 @@ const char *proj_obj_as_proj_string(const PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, obj->lastPROJString = exportable->exportToPROJString(formatter.get()); return obj->lastPROJString.c_str(); } catch (const std::exception &e) { - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; } } @@ -1061,6 +1062,7 @@ const char *proj_obj_as_proj_string(const PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, /** \brief Return the area of use of an object. * + * @param ctx PROJ context, or NULL for default context * @param obj Object (must not be NULL) * @param out_west_lon_degree Pointer to a double to receive the west longitude * (in degrees). Or NULL. If the returned value is -1000, the bounding box is @@ -1079,11 +1081,13 @@ const char *proj_obj_as_proj_string(const PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, * @return TRUE in case of success, FALSE in case of error or if the area * of use is unknown. */ -int proj_obj_get_area_of_use(const PJ_OBJ *obj, double *out_west_lon_degree, +int proj_obj_get_area_of_use(PJ_CONTEXT *ctx, const PJ_OBJ *obj, + double *out_west_lon_degree, double *out_south_lat_degree, double *out_east_lon_degree, double *out_north_lat_degree, const char **out_area_name) { + (void)ctx; if (out_area_name) { *out_area_name = nullptr; } @@ -1141,17 +1145,17 @@ int proj_obj_get_area_of_use(const PJ_OBJ *obj, double *out_west_lon_degree, // --------------------------------------------------------------------------- -static const GeodeticCRS *extractGeodeticCRS(const PJ_OBJ *crs, +static const GeodeticCRS *extractGeodeticCRS(PJ_CONTEXT *ctx, const PJ_OBJ *crs, const char *fname) { assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { - proj_log_error(crs->ctx, fname, "Object is not a CRS"); + proj_log_error(ctx, fname, "Object is not a CRS"); return nullptr; } auto geodCRS = l_crs->extractGeodeticCRSRaw(); if (!geodCRS) { - proj_log_error(crs->ctx, fname, "CRS has no geodetic CRS"); + proj_log_error(ctx, fname, "CRS has no geodetic CRS"); } return geodCRS; } @@ -1164,18 +1168,19 @@ static const GeodeticCRS *extractGeodeticCRS(const PJ_OBJ *crs, * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crs Objet of type CRS (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_get_geodetic_crs(const PJ_OBJ *crs) { - auto geodCRS = extractGeodeticCRS(crs, __FUNCTION__); +PJ_OBJ *proj_obj_crs_get_geodetic_crs(PJ_CONTEXT *ctx, const PJ_OBJ *crs) { + SANITIZE_CTX(ctx); + auto geodCRS = extractGeodeticCRS(ctx, crs, __FUNCTION__); if (!geodCRS) { return nullptr; } - return PJ_OBJ::create(crs->ctx, - NN_NO_CHECK(nn_dynamic_pointer_cast( - geodCRS->shared_from_this()))); + return PJ_OBJ::create(NN_NO_CHECK(nn_dynamic_pointer_cast( + geodCRS->shared_from_this()))); } // --------------------------------------------------------------------------- @@ -1186,24 +1191,27 @@ PJ_OBJ *proj_obj_crs_get_geodetic_crs(const PJ_OBJ *crs) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crs Objet of type CRS (must not be NULL) * @param index Index of the CRS component (typically 0 = horizontal, 1 = * vertical) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_get_sub_crs(const PJ_OBJ *crs, int index) { +PJ_OBJ *proj_obj_crs_get_sub_crs(PJ_CONTEXT *ctx, const PJ_OBJ *crs, + int index) { + SANITIZE_CTX(ctx); assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { - proj_log_error(crs->ctx, __FUNCTION__, "Object is not a CompoundCRS"); + proj_log_error(ctx, __FUNCTION__, "Object is not a CompoundCRS"); return nullptr; } const auto &components = l_crs->componentReferenceSystems(); if (static_cast(index) >= components.size()) { return nullptr; } - return PJ_OBJ::create(crs->ctx, components[index]); + return PJ_OBJ::create(components[index]); } // --------------------------------------------------------------------------- @@ -1214,42 +1222,42 @@ PJ_OBJ *proj_obj_crs_get_sub_crs(const PJ_OBJ *crs, int index) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param base_crs Base CRS (must not be NULL) * @param hub_crs Hub CRS (must not be NULL) * @param transformation Transformation (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_create_bound_crs(const PJ_OBJ *base_crs, +PJ_OBJ *proj_obj_crs_create_bound_crs(PJ_CONTEXT *ctx, const PJ_OBJ *base_crs, const PJ_OBJ *hub_crs, const PJ_OBJ *transformation) { + SANITIZE_CTX(ctx); assert(base_crs); assert(hub_crs); assert(transformation); auto l_base_crs = util::nn_dynamic_pointer_cast(base_crs->obj); if (!l_base_crs) { - proj_log_error(base_crs->ctx, __FUNCTION__, "base_crs is not a CRS"); + proj_log_error(ctx, __FUNCTION__, "base_crs is not a CRS"); return nullptr; } auto l_hub_crs = util::nn_dynamic_pointer_cast(hub_crs->obj); if (!l_hub_crs) { - proj_log_error(base_crs->ctx, __FUNCTION__, "hub_crs is not a CRS"); + proj_log_error(ctx, __FUNCTION__, "hub_crs is not a CRS"); return nullptr; } auto l_transformation = util::nn_dynamic_pointer_cast(transformation->obj); if (!l_transformation) { - proj_log_error(base_crs->ctx, __FUNCTION__, - "transformation is not a CRS"); + proj_log_error(ctx, __FUNCTION__, "transformation is not a CRS"); return nullptr; } try { - return PJ_OBJ::create(base_crs->ctx, - BoundCRS::create(NN_NO_CHECK(l_base_crs), + return PJ_OBJ::create(BoundCRS::create(NN_NO_CHECK(l_base_crs), NN_NO_CHECK(l_hub_crs), NN_NO_CHECK(l_transformation))); } catch (const std::exception &e) { - proj_log_error(base_crs->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; } } @@ -1266,23 +1274,26 @@ PJ_OBJ *proj_obj_crs_create_bound_crs(const PJ_OBJ *base_crs, * This is the same as method * osgeo::proj::crs::CRS::createBoundCRSToWGS84IfPossible() * + * @param ctx PROJ context, or NULL for default context * @param crs Objet of type CRS (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_create_bound_crs_to_WGS84(const PJ_OBJ *crs) { +PJ_OBJ *proj_obj_crs_create_bound_crs_to_WGS84(PJ_CONTEXT *ctx, + const PJ_OBJ *crs) { + SANITIZE_CTX(ctx); assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { - proj_log_error(crs->ctx, __FUNCTION__, "Object is not a CRS"); + proj_log_error(ctx, __FUNCTION__, "Object is not a CRS"); return nullptr; } - auto dbContext = getDBcontextNoException(crs->ctx, __FUNCTION__); + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); try { return PJ_OBJ::create( - crs->ctx, l_crs->createBoundCRSToWGS84IfPossible(dbContext)); + l_crs->createBoundCRSToWGS84IfPossible(dbContext)); } catch (const std::exception &e) { - proj_log_error(crs->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; } } @@ -1295,24 +1306,26 @@ PJ_OBJ *proj_obj_crs_create_bound_crs_to_WGS84(const PJ_OBJ *crs) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Objet of type CRS or GeodeticReferenceFrame (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_get_ellipsoid(const PJ_OBJ *obj) { +PJ_OBJ *proj_obj_get_ellipsoid(PJ_CONTEXT *ctx, const PJ_OBJ *obj) { + SANITIZE_CTX(ctx); auto ptr = obj->obj.get(); if (dynamic_cast(ptr)) { - auto geodCRS = extractGeodeticCRS(obj, __FUNCTION__); + auto geodCRS = extractGeodeticCRS(ctx, obj, __FUNCTION__); if (geodCRS) { - return PJ_OBJ::create(obj->ctx, geodCRS->ellipsoid()); + return PJ_OBJ::create(geodCRS->ellipsoid()); } } else { auto datum = dynamic_cast(ptr); if (datum) { - return PJ_OBJ::create(obj->ctx, datum->ellipsoid()); + return PJ_OBJ::create(datum->ellipsoid()); } } - proj_log_error(obj->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "Object is not a CRS or GeodeticReferenceFrame"); return nullptr; } @@ -1325,25 +1338,27 @@ PJ_OBJ *proj_obj_get_ellipsoid(const PJ_OBJ *obj) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crs Objet of type CRS (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_get_horizontal_datum(const PJ_OBJ *crs) { - auto geodCRS = extractGeodeticCRS(crs, __FUNCTION__); +PJ_OBJ *proj_obj_crs_get_horizontal_datum(PJ_CONTEXT *ctx, const PJ_OBJ *crs) { + SANITIZE_CTX(ctx); + auto geodCRS = extractGeodeticCRS(ctx, crs, __FUNCTION__); if (!geodCRS) { return nullptr; } const auto &datum = geodCRS->datum(); if (datum) { - return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(datum)); + return PJ_OBJ::create(NN_NO_CHECK(datum)); } const auto &datumEnsemble = geodCRS->datumEnsemble(); if (datumEnsemble) { - return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(datumEnsemble)); + return PJ_OBJ::create(NN_NO_CHECK(datumEnsemble)); } - proj_log_error(crs->ctx, __FUNCTION__, "CRS has no datum"); + proj_log_error(ctx, __FUNCTION__, "CRS has no datum"); return nullptr; } @@ -1351,6 +1366,7 @@ PJ_OBJ *proj_obj_crs_get_horizontal_datum(const PJ_OBJ *crs) { /** \brief Return ellipsoid parameters. * + * @param ctx PROJ context, or NULL for default context * @param ellipsoid Object of type Ellipsoid (must not be NULL) * @param out_semi_major_metre Pointer to a value to store the semi-major axis * in @@ -1366,16 +1382,16 @@ PJ_OBJ *proj_obj_crs_get_horizontal_datum(const PJ_OBJ *crs) { * flattening. or NULL * @return TRUE in case of success. */ -int proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, +int proj_obj_ellipsoid_get_parameters(PJ_CONTEXT *ctx, const PJ_OBJ *ellipsoid, double *out_semi_major_metre, double *out_semi_minor_metre, int *out_is_semi_minor_computed, double *out_inv_flattening) { + SANITIZE_CTX(ctx); assert(ellipsoid); auto l_ellipsoid = dynamic_cast(ellipsoid->obj.get()); if (!l_ellipsoid) { - proj_log_error(ellipsoid->ctx, __FUNCTION__, - "Object is not a Ellipsoid"); + proj_log_error(ctx, __FUNCTION__, "Object is not a Ellipsoid"); return FALSE; } @@ -1404,25 +1420,27 @@ int proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Objet of type CRS or GeodeticReferenceFrame (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_get_prime_meridian(const PJ_OBJ *obj) { +PJ_OBJ *proj_obj_get_prime_meridian(PJ_CONTEXT *ctx, const PJ_OBJ *obj) { + SANITIZE_CTX(ctx); auto ptr = obj->obj.get(); if (dynamic_cast(ptr)) { - auto geodCRS = extractGeodeticCRS(obj, __FUNCTION__); + auto geodCRS = extractGeodeticCRS(ctx, obj, __FUNCTION__); if (geodCRS) { - return PJ_OBJ::create(obj->ctx, geodCRS->primeMeridian()); + return PJ_OBJ::create(geodCRS->primeMeridian()); } } else { auto datum = dynamic_cast(ptr); if (datum) { - return PJ_OBJ::create(obj->ctx, datum->primeMeridian()); + return PJ_OBJ::create(datum->primeMeridian()); } } - proj_log_error(obj->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "Object is not a CRS or GeodeticReferenceFrame"); return nullptr; } @@ -1431,6 +1449,7 @@ PJ_OBJ *proj_obj_get_prime_meridian(const PJ_OBJ *obj) { /** \brief Return prime meridian parameters. * + * @param ctx PROJ context, or NULL for default context * @param prime_meridian Object of type PrimeMeridian (must not be NULL) * @param out_longitude Pointer to a value to store the longitude of the prime * meridian, in its native unit. or NULL @@ -1440,15 +1459,16 @@ PJ_OBJ *proj_obj_get_prime_meridian(const PJ_OBJ *obj) { * or NULL * @return TRUE in case of success. */ -int proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, +int proj_obj_prime_meridian_get_parameters(PJ_CONTEXT *ctx, + const PJ_OBJ *prime_meridian, double *out_longitude, double *out_unit_conv_factor, const char **out_unit_name) { + SANITIZE_CTX(ctx); assert(prime_meridian); auto l_pm = dynamic_cast(prime_meridian->obj.get()); if (!l_pm) { - proj_log_error(prime_meridian->ctx, __FUNCTION__, - "Object is not a PrimeMeridian"); + proj_log_error(ctx, __FUNCTION__, "Object is not a PrimeMeridian"); return false; } const auto &longitude = l_pm->longitude(); @@ -1474,30 +1494,32 @@ int proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Objet of type BoundCRS or CoordinateOperation (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error, or missing source CRS. */ -PJ_OBJ *proj_obj_get_source_crs(const PJ_OBJ *obj) { +PJ_OBJ *proj_obj_get_source_crs(PJ_CONTEXT *ctx, const PJ_OBJ *obj) { + SANITIZE_CTX(ctx); assert(obj); auto ptr = obj->obj.get(); auto boundCRS = dynamic_cast(ptr); if (boundCRS) { - return PJ_OBJ::create(obj->ctx, boundCRS->baseCRS()); + return PJ_OBJ::create(boundCRS->baseCRS()); } auto derivedCRS = dynamic_cast(ptr); if (derivedCRS) { - return PJ_OBJ::create(obj->ctx, derivedCRS->baseCRS()); + return PJ_OBJ::create(derivedCRS->baseCRS()); } auto co = dynamic_cast(ptr); if (co) { auto sourceCRS = co->sourceCRS(); if (sourceCRS) { - return PJ_OBJ::create(obj->ctx, NN_NO_CHECK(sourceCRS)); + return PJ_OBJ::create(NN_NO_CHECK(sourceCRS)); } return nullptr; } - proj_log_error(obj->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "Object is not a BoundCRS or a CoordinateOperation"); return nullptr; } @@ -1511,26 +1533,28 @@ PJ_OBJ *proj_obj_get_source_crs(const PJ_OBJ *obj) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Objet of type BoundCRS or CoordinateOperation (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error, or missing target CRS. */ -PJ_OBJ *proj_obj_get_target_crs(const PJ_OBJ *obj) { +PJ_OBJ *proj_obj_get_target_crs(PJ_CONTEXT *ctx, const PJ_OBJ *obj) { + SANITIZE_CTX(ctx); assert(obj); auto ptr = obj->obj.get(); auto boundCRS = dynamic_cast(ptr); if (boundCRS) { - return PJ_OBJ::create(obj->ctx, boundCRS->hubCRS()); + return PJ_OBJ::create(boundCRS->hubCRS()); } auto co = dynamic_cast(ptr); if (co) { auto targetCRS = co->targetCRS(); if (targetCRS) { - return PJ_OBJ::create(obj->ctx, NN_NO_CHECK(targetCRS)); + return PJ_OBJ::create(NN_NO_CHECK(targetCRS)); } return nullptr; } - proj_log_error(obj->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "Object is not a BoundCRS or a CoordinateOperation"); return nullptr; } @@ -1556,6 +1580,7 @@ PJ_OBJ *proj_obj_get_target_crs(const PJ_OBJ *obj) { * This is implemented for GeodeticCRS, ProjectedCRS, VerticalCRS and * CompoundCRS. * + * @param ctx PROJ context, or NULL for default context * @param obj Object of type CRS. Must not be NULL * @param auth_name Authority name, or NULL for all authorities * @param options Placeholder for future options. Should be set to NULL. @@ -1567,8 +1592,10 @@ PJ_OBJ *proj_obj_get_target_crs(const PJ_OBJ *obj) { * released with proj_free_int_list(). * @return a list of matching reference CRS, or nullptr in case of error. */ -PJ_OBJ_LIST *proj_obj_identify(const PJ_OBJ *obj, const char *auth_name, +PJ_OBJ_LIST *proj_obj_identify(PJ_CONTEXT *ctx, const PJ_OBJ *obj, + const char *auth_name, const char *const *options, int **confidence) { + SANITIZE_CTX(ctx); assert(obj); (void)options; if (confidence) { @@ -1577,11 +1604,11 @@ PJ_OBJ_LIST *proj_obj_identify(const PJ_OBJ *obj, const char *auth_name, auto ptr = obj->obj.get(); auto crs = dynamic_cast(ptr); if (!crs) { - proj_log_error(obj->ctx, __FUNCTION__, "Object is not a CRS"); + proj_log_error(ctx, __FUNCTION__, "Object is not a CRS"); } else { int *confidenceTemp = nullptr; try { - auto factory = AuthorityFactory::create(getDBcontext(obj->ctx), + auto factory = AuthorityFactory::create(getDBcontext(ctx), auth_name ? auth_name : ""); auto res = crs->identify(factory); std::vector objects; @@ -1594,8 +1621,7 @@ PJ_OBJ_LIST *proj_obj_identify(const PJ_OBJ *obj, const char *auth_name, ++i; } } - auto ret = internal::make_unique(obj->ctx, - std::move(objects)); + auto ret = internal::make_unique(std::move(objects)); if (confidence) { *confidence = confidenceTemp; confidenceTemp = nullptr; @@ -1603,7 +1629,7 @@ PJ_OBJ_LIST *proj_obj_identify(const PJ_OBJ *obj, const char *auth_name, return ret.release(); } catch (const std::exception &e) { delete[] confidenceTemp; - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); } } return nullptr; @@ -1708,6 +1734,7 @@ void proj_free_string_list(PROJ_STRING_LIST list) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crs Objet of type DerivedCRS or BoundCRSs (must not be NULL) * @param out_method_name Pointer to a string value to store the method * (projection) name. or NULL @@ -1718,10 +1745,11 @@ void proj_free_string_list(PROJ_STRING_LIST list) { * @return Object of type SingleOperation that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, +PJ_OBJ *proj_obj_crs_get_coordoperation(PJ_CONTEXT *ctx, const PJ_OBJ *crs, const char **out_method_name, const char **out_method_auth_name, const char **out_method_code) { + SANITIZE_CTX(ctx); assert(crs); SingleOperationPtr co; @@ -1733,7 +1761,7 @@ PJ_OBJ *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, if (boundCRS) { co = boundCRS->transformation().as_nullable(); } else { - proj_log_error(crs->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "Object is not a DerivedCRS or BoundCRS"); return nullptr; } @@ -1758,7 +1786,7 @@ PJ_OBJ *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, *out_method_code = nullptr; } } - return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(co)); + return PJ_OBJ::create(NN_NO_CHECK(co)); } // --------------------------------------------------------------------------- @@ -1868,7 +1896,7 @@ PJ_OBJ *proj_obj_create_geographic_crs( pmAngularUnitsConv); auto geogCRS = GeographicCRS::create(createPropertyMapName(crsName), datum, NN_NO_CHECK(cs)); - return PJ_OBJ::create(ctx, geogCRS); + return PJ_OBJ::create(geogCRS); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -1883,6 +1911,7 @@ PJ_OBJ *proj_obj_create_geographic_crs( * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crsName Name of the GeographicCRS. Or NULL * @param datum Datum. Must not be NULL. * @param ellipsoidalCS Coordinate system. Must not be NULL. @@ -1890,14 +1919,16 @@ PJ_OBJ *proj_obj_create_geographic_crs( * @return Object of type GeographicCRS that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_create_geographic_crs_from_datum(const char *crsName, +PJ_OBJ *proj_obj_create_geographic_crs_from_datum(PJ_CONTEXT *ctx, + const char *crsName, PJ_OBJ *datum, PJ_OBJ *ellipsoidalCS) { + SANITIZE_CTX(ctx); auto l_datum = util::nn_dynamic_pointer_cast(datum->obj); if (!l_datum) { - proj_log_error(datum->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "datum is not a GeodeticReferenceFrame"); return nullptr; } @@ -1909,9 +1940,9 @@ PJ_OBJ *proj_obj_create_geographic_crs_from_datum(const char *crsName, auto geogCRS = GeographicCRS::create(createPropertyMapName(crsName), NN_NO_CHECK(l_datum), NN_NO_CHECK(cs)); - return PJ_OBJ::create(datum->ctx, geogCRS); + return PJ_OBJ::create(geogCRS); } catch (const std::exception &e) { - proj_log_error(datum->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); } return nullptr; } @@ -1962,7 +1993,7 @@ PJ_OBJ *proj_obj_create_geocentric_crs( auto geodCRS = GeodeticCRS::create(createPropertyMapName(crsName), datum, cs::CartesianCS::createGeocentric(linearUnit)); - return PJ_OBJ::create(ctx, geodCRS); + return PJ_OBJ::create(geodCRS); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -1977,6 +2008,7 @@ PJ_OBJ *proj_obj_create_geocentric_crs( * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crsName Name of the GeographicCRS. Or NULL * @param datum Datum. Must not be NULL. * @param linearUnits Name of the linear units. Or NULL for Metre @@ -1986,26 +2018,28 @@ PJ_OBJ *proj_obj_create_geocentric_crs( * @return Object of type GeodeticCRS that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_create_geocentric_crs_from_datum(const char *crsName, +PJ_OBJ *proj_obj_create_geocentric_crs_from_datum(PJ_CONTEXT *ctx, + const char *crsName, const PJ_OBJ *datum, const char *linearUnits, double linearUnitsConv) { + SANITIZE_CTX(ctx); try { const UnitOfMeasure linearUnit( createLinearUnit(linearUnits, linearUnitsConv)); auto l_datum = util::nn_dynamic_pointer_cast(datum->obj); if (!l_datum) { - proj_log_error(datum->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "datum is not a GeodeticReferenceFrame"); return nullptr; } auto geodCRS = GeodeticCRS::create( createPropertyMapName(crsName), NN_NO_CHECK(l_datum), cs::CartesianCS::createGeocentric(linearUnit)); - return PJ_OBJ::create(datum->ctx, geodCRS); + return PJ_OBJ::create(geodCRS); } catch (const std::exception &e) { - proj_log_error(datum->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); } return nullptr; } @@ -2020,21 +2054,24 @@ PJ_OBJ *proj_obj_create_geocentric_crs_from_datum(const char *crsName, * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Object of type CRS. Must not be NULL * @param name New name. Must not be NULL * * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ PROJ_DLL *proj_obj_alter_name(const PJ_OBJ *obj, const char *name) { +PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx, const PJ_OBJ *obj, + const char *name) { + SANITIZE_CTX(ctx); auto crs = dynamic_cast(obj->obj.get()); if (!crs) { return nullptr; } try { - return PJ_OBJ::create(obj->ctx, crs->alterName(name)); + return PJ_OBJ::create(crs->alterName(name)); } catch (const std::exception &e) { - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); } return nullptr; } @@ -2053,33 +2090,33 @@ PJ_OBJ PROJ_DLL *proj_obj_alter_name(const PJ_OBJ *obj, const char *name) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Object of type CRS. Must not be NULL * @param newGeodCRS Object of type GeodeticCRS. Must not be NULL * * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_crs_alter_geodetic_crs(const PJ_OBJ *obj, +PJ_OBJ *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, const PJ_OBJ *obj, const PJ_OBJ *newGeodCRS) { + SANITIZE_CTX(ctx); auto l_newGeodCRS = util::nn_dynamic_pointer_cast(newGeodCRS->obj); if (!l_newGeodCRS) { - proj_log_error(obj->ctx, __FUNCTION__, - "newGeodCRS is not a GeodeticCRS"); + proj_log_error(ctx, __FUNCTION__, "newGeodCRS is not a GeodeticCRS"); return nullptr; } auto crs = dynamic_cast(obj->obj.get()); if (!crs) { - proj_log_error(obj->ctx, __FUNCTION__, "obj is not a CRS"); + proj_log_error(ctx, __FUNCTION__, "obj is not a CRS"); return nullptr; } try { - return PJ_OBJ::create(obj->ctx, - crs->alterGeodeticCRS(NN_NO_CHECK(l_newGeodCRS))); + return PJ_OBJ::create(crs->alterGeodeticCRS(NN_NO_CHECK(l_newGeodCRS))); } catch (const std::exception &e) { - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; } } @@ -2094,6 +2131,7 @@ PJ_OBJ *proj_obj_crs_alter_geodetic_crs(const PJ_OBJ *obj, * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Object of type CRS. Must not be NULL * @param angularUnits Name of the angular units. Or NULL for Degree * @param angularUnitsConv Conversion factor from the angular unit to radian. Or @@ -2102,11 +2140,12 @@ PJ_OBJ *proj_obj_crs_alter_geodetic_crs(const PJ_OBJ *obj, * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(const PJ_OBJ *obj, +PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, const char *angularUnits, double angularUnitsConv) { - auto geodCRS = proj_obj_crs_get_geodetic_crs(obj); + SANITIZE_CTX(ctx); + auto geodCRS = proj_obj_crs_get_geodetic_crs(ctx, obj); if (!geodCRS) { return nullptr; } @@ -2120,20 +2159,18 @@ PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(const PJ_OBJ *obj, try { const UnitOfMeasure angUnit( createAngularUnit(angularUnits, angularUnitsConv)); - geogCRSAltered = PJ_OBJ::create( - obj->ctx, - GeographicCRS::create( - createPropertyMapName(proj_obj_get_name(geodCRS)), - geogCRS->datum(), geogCRS->datumEnsemble(), - geogCRS->coordinateSystem()->alterAngularUnit(angUnit))); + geogCRSAltered = PJ_OBJ::create(GeographicCRS::create( + createPropertyMapName(proj_obj_get_name(geodCRS)), geogCRS->datum(), + geogCRS->datumEnsemble(), + geogCRS->coordinateSystem()->alterAngularUnit(angUnit))); proj_obj_unref(geodCRS); } catch (const std::exception &e) { - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); proj_obj_unref(geodCRS); return nullptr; } - auto ret = proj_obj_crs_alter_geodetic_crs(obj, geogCRSAltered); + auto ret = proj_obj_crs_alter_geodetic_crs(ctx, obj, geogCRSAltered); proj_obj_unref(geogCRSAltered); return ret; } @@ -2149,6 +2186,7 @@ PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(const PJ_OBJ *obj, * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Object of type CRS. Must not be NULL * @param linearUnits Name of the linear units. Or NULL for Metre * @param linearUnitsConv Conversion factor from the linear unit to metre. Or @@ -2157,9 +2195,10 @@ PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(const PJ_OBJ *obj, * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(const PJ_OBJ *obj, +PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, const char *linearUnits, double linearUnitsConv) { + SANITIZE_CTX(ctx); auto crs = dynamic_cast(obj->obj.get()); if (!crs) { return nullptr; @@ -2168,9 +2207,9 @@ PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(const PJ_OBJ *obj, try { const UnitOfMeasure linearUnit( createLinearUnit(linearUnits, linearUnitsConv)); - return PJ_OBJ::create(obj->ctx, crs->alterCSLinearUnit(linearUnit)); + return PJ_OBJ::create(crs->alterCSLinearUnit(linearUnit)); } catch (const std::exception &e) { - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; } } @@ -2186,6 +2225,7 @@ PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(const PJ_OBJ *obj, * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param obj Object of type ProjectedCRS. Must not be NULL * @param linearUnits Name of the linear units. Or NULL for Metre * @param linearUnitsConv Conversion factor from the linear unit to metre. Or @@ -2198,10 +2238,12 @@ PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(const PJ_OBJ *obj, * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_crs_alter_parameters_linear_unit(const PJ_OBJ *obj, +PJ_OBJ *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, + const PJ_OBJ *obj, const char *linearUnits, double linearUnitsConv, int convertToNewUnit) { + SANITIZE_CTX(ctx); auto crs = dynamic_cast(obj->obj.get()); if (!crs) { return nullptr; @@ -2210,11 +2252,10 @@ PJ_OBJ *proj_obj_crs_alter_parameters_linear_unit(const PJ_OBJ *obj, try { const UnitOfMeasure linearUnit( createLinearUnit(linearUnits, linearUnitsConv)); - return PJ_OBJ::create( - obj->ctx, crs->alterParametersLinearUnit(linearUnit, - convertToNewUnit == TRUE)); + return PJ_OBJ::create(crs->alterParametersLinearUnit( + linearUnit, convertToNewUnit == TRUE)); } catch (const std::exception &e) { - proj_log_error(obj->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; } } @@ -2235,12 +2276,12 @@ PJ_OBJ *proj_obj_crs_alter_parameters_linear_unit(const PJ_OBJ *obj, */ PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx, const char *crsName) { + SANITIZE_CTX(ctx); try { - return PJ_OBJ::create( - ctx, EngineeringCRS::create( - createPropertyMapName(crsName), - EngineeringDatum::create(PropertyMap()), - CartesianCS::createEastingNorthing(UnitOfMeasure::METRE))); + return PJ_OBJ::create(EngineeringCRS::create( + createPropertyMapName(crsName), + EngineeringDatum::create(PropertyMap()), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE))); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; @@ -2275,6 +2316,7 @@ PJ_OBJ *proj_obj_create_conversion(PJ_CONTEXT *ctx, const char *name, const char *method_auth_name, const char *method_code, int param_count, const PJ_PARAM_DESCRIPTION *params) { + SANITIZE_CTX(ctx); try { PropertyMap propConv; propConv.set(common::IdentifiedObject::NAME_KEY, @@ -2338,7 +2380,7 @@ PJ_OBJ *proj_obj_create_conversion(PJ_CONTEXT *ctx, const char *name, values.emplace_back(ParameterValue::create(measure)); } return PJ_OBJ::create( - ctx, Conversion::create(propConv, propMethod, parameters, values)); + Conversion::create(propConv, propMethod, parameters, values)); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; @@ -2413,29 +2455,24 @@ PJ_OBJ *proj_obj_create_cs(PJ_CONTEXT *ctx, PJ_COORDINATE_SYSTEM_TYPE type, case PJ_CS_TYPE_CARTESIAN: { if (axis_count == 2) { - return PJ_OBJ::create( - ctx, CartesianCS::create(PropertyMap(), createAxis(axis[0]), - createAxis(axis[1]))); + return PJ_OBJ::create(CartesianCS::create( + PropertyMap(), createAxis(axis[0]), createAxis(axis[1]))); } else if (axis_count == 3) { - return PJ_OBJ::create( - ctx, CartesianCS::create(PropertyMap(), createAxis(axis[0]), - createAxis(axis[1]), - createAxis(axis[2]))); + return PJ_OBJ::create(CartesianCS::create( + PropertyMap(), createAxis(axis[0]), createAxis(axis[1]), + createAxis(axis[2]))); } break; } case PJ_CS_TYPE_ELLIPSOIDAL: { if (axis_count == 2) { - return PJ_OBJ::create( - ctx, - EllipsoidalCS::create(PropertyMap(), createAxis(axis[0]), - createAxis(axis[1]))); + return PJ_OBJ::create(EllipsoidalCS::create( + PropertyMap(), createAxis(axis[0]), createAxis(axis[1]))); } else if (axis_count == 3) { - return PJ_OBJ::create( - ctx, EllipsoidalCS::create( - PropertyMap(), createAxis(axis[0]), - createAxis(axis[1]), createAxis(axis[2]))); + return PJ_OBJ::create(EllipsoidalCS::create( + PropertyMap(), createAxis(axis[0]), createAxis(axis[1]), + createAxis(axis[2]))); } break; } @@ -2443,7 +2480,6 @@ PJ_OBJ *proj_obj_create_cs(PJ_CONTEXT *ctx, PJ_COORDINATE_SYSTEM_TYPE type, case PJ_CS_TYPE_VERTICAL: { if (axis_count == 1) { return PJ_OBJ::create( - ctx, VerticalCS::create(PropertyMap(), createAxis(axis[0]))); } break; @@ -2451,10 +2487,9 @@ PJ_OBJ *proj_obj_create_cs(PJ_CONTEXT *ctx, PJ_COORDINATE_SYSTEM_TYPE type, case PJ_CS_TYPE_SPHERICAL: { if (axis_count == 3) { - return PJ_OBJ::create( - ctx, EllipsoidalCS::create( - PropertyMap(), createAxis(axis[0]), - createAxis(axis[1]), createAxis(axis[2]))); + return PJ_OBJ::create(EllipsoidalCS::create( + PropertyMap(), createAxis(axis[0]), createAxis(axis[1]), + createAxis(axis[2]))); } break; } @@ -2462,7 +2497,6 @@ PJ_OBJ *proj_obj_create_cs(PJ_CONTEXT *ctx, PJ_COORDINATE_SYSTEM_TYPE type, case PJ_CS_TYPE_PARAMETRIC: { if (axis_count == 1) { return PJ_OBJ::create( - ctx, ParametricCS::create(PropertyMap(), createAxis(axis[0]))); } break; @@ -2474,33 +2508,29 @@ PJ_OBJ *proj_obj_create_cs(PJ_CONTEXT *ctx, PJ_COORDINATE_SYSTEM_TYPE type, axisVector.emplace_back(createAxis(axis[i])); } - return PJ_OBJ::create(ctx, - OrdinalCS::create(PropertyMap(), axisVector)); + return PJ_OBJ::create(OrdinalCS::create(PropertyMap(), axisVector)); } case PJ_CS_TYPE_DATETIMETEMPORAL: { if (axis_count == 1) { - return PJ_OBJ::create( - ctx, DateTimeTemporalCS::create(PropertyMap(), - createAxis(axis[0]))); + return PJ_OBJ::create(DateTimeTemporalCS::create( + PropertyMap(), createAxis(axis[0]))); } break; } case PJ_CS_TYPE_TEMPORALCOUNT: { if (axis_count == 1) { - return PJ_OBJ::create( - ctx, TemporalCountCS::create(PropertyMap(), - createAxis(axis[0]))); + return PJ_OBJ::create(TemporalCountCS::create( + PropertyMap(), createAxis(axis[0]))); } break; } case PJ_CS_TYPE_TEMPORALMEASURE: { if (axis_count == 1) { - return PJ_OBJ::create( - ctx, TemporalMeasureCS::create(PropertyMap(), - createAxis(axis[0]))); + return PJ_OBJ::create(TemporalMeasureCS::create( + PropertyMap(), createAxis(axis[0]))); } break; } @@ -2538,14 +2568,12 @@ PJ_OBJ *proj_obj_create_cartesian_2D_cs(PJ_CONTEXT *ctx, try { switch (type) { case PJ_CART2D_EASTING_NORTHING: - return PJ_OBJ::create( - ctx, CartesianCS::createEastingNorthing( - createLinearUnit(unit_name, unit_conv_factor))); + return PJ_OBJ::create(CartesianCS::createEastingNorthing( + createLinearUnit(unit_name, unit_conv_factor))); case PJ_CART2D_NORTHING_EASTING: - return PJ_OBJ::create( - ctx, CartesianCS::createNorthingEasting( - createLinearUnit(unit_name, unit_conv_factor))); + return PJ_OBJ::create(CartesianCS::createNorthingEasting( + createLinearUnit(unit_name, unit_conv_factor))); } } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2577,14 +2605,12 @@ PJ_OBJ *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx, try { switch (type) { case PJ_ELLPS2D_LONGITUDE_LATITUDE: - return PJ_OBJ::create( - ctx, EllipsoidalCS::createLongitudeLatitude( - createAngularUnit(unit_name, unit_conv_factor))); + return PJ_OBJ::create(EllipsoidalCS::createLongitudeLatitude( + createAngularUnit(unit_name, unit_conv_factor))); case PJ_ELLPS2D_LATITUDE_LONGITUDE: - return PJ_OBJ::create( - ctx, EllipsoidalCS::createLatitudeLongitude( - createAngularUnit(unit_name, unit_conv_factor))); + return PJ_OBJ::create(EllipsoidalCS::createLatitudeLongitude( + createAngularUnit(unit_name, unit_conv_factor))); } } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2600,6 +2626,7 @@ PJ_OBJ *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx, * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crs_name CRS name. Or NULL * @param geodetic_crs Base GeodeticCRS. Must not be NULL. * @param conversion Conversion. Must not be NULL. @@ -2609,10 +2636,11 @@ PJ_OBJ *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx, * proj_obj_unref(), or NULL in case of error. */ -PJ_OBJ *proj_obj_create_projected_crs(const char *crs_name, +PJ_OBJ *proj_obj_create_projected_crs(PJ_CONTEXT *ctx, const char *crs_name, const PJ_OBJ *geodetic_crs, const PJ_OBJ *conversion, const PJ_OBJ *coordinate_system) { + SANITIZE_CTX(ctx); auto geodCRS = util::nn_dynamic_pointer_cast(geodetic_crs->obj); if (!geodCRS) { @@ -2628,13 +2656,11 @@ PJ_OBJ *proj_obj_create_projected_crs(const char *crs_name, return nullptr; } try { - return PJ_OBJ::create( - geodetic_crs->ctx, - ProjectedCRS::create(createPropertyMapName(crs_name), - NN_NO_CHECK(geodCRS), NN_NO_CHECK(conv), - NN_NO_CHECK(cs))); + return PJ_OBJ::create(ProjectedCRS::create( + createPropertyMapName(crs_name), NN_NO_CHECK(geodCRS), + NN_NO_CHECK(conv), NN_NO_CHECK(cs))); } catch (const std::exception &e) { - proj_log_error(geodetic_crs->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); } return nullptr; } @@ -2643,9 +2669,8 @@ PJ_OBJ *proj_obj_create_projected_crs(const char *crs_name, //! @cond Doxygen_Suppress -static PJ_OBJ *proj_obj_create_conversion(PJ_CONTEXT *ctx, - const ConversionNNPtr &conv) { - return PJ_OBJ::create(ctx, conv); +static PJ_OBJ *proj_obj_create_conversion(const ConversionNNPtr &conv) { + return PJ_OBJ::create(conv); } //! @endcond @@ -2662,9 +2687,10 @@ static PJ_OBJ *proj_obj_create_conversion(PJ_CONTEXT *ctx, * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). */ PJ_OBJ *proj_obj_create_conversion_utm(PJ_CONTEXT *ctx, int zone, int north) { + SANITIZE_CTX(ctx); try { auto conv = Conversion::createUTM(PropertyMap(), zone, north != 0); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2685,6 +2711,7 @@ PJ_OBJ *proj_obj_create_conversion_transverse_mercator( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2695,7 +2722,7 @@ PJ_OBJ *proj_obj_create_conversion_transverse_mercator( Angle(centerLong, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2717,6 +2744,7 @@ PJ_OBJ *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2727,7 +2755,7 @@ PJ_OBJ *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( Angle(centerLong, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2749,6 +2777,7 @@ PJ_OBJ *proj_obj_create_conversion_transverse_mercator_south_oriented( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2759,7 +2788,7 @@ PJ_OBJ *proj_obj_create_conversion_transverse_mercator_south_oriented( Angle(centerLong, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2780,6 +2809,7 @@ PJ_OBJ *proj_obj_create_conversion_two_point_equidistant( double latitudeSecondPoint, double longitudeSeconPoint, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2792,7 +2822,7 @@ PJ_OBJ *proj_obj_create_conversion_two_point_equidistant( Angle(longitudeSeconPoint, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2812,6 +2842,7 @@ PJ_OBJ *proj_obj_create_conversion_tunisia_mapping_grid( PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2821,7 +2852,7 @@ PJ_OBJ *proj_obj_create_conversion_tunisia_mapping_grid( PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2843,6 +2874,7 @@ PJ_OBJ *proj_obj_create_conversion_albers_equal_area( double eastingFalseOrigin, double northingFalseOrigin, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2855,7 +2887,7 @@ PJ_OBJ *proj_obj_create_conversion_albers_equal_area( Angle(latitudeSecondParallel, angUnit), Length(eastingFalseOrigin, linearUnit), Length(northingFalseOrigin, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2876,6 +2908,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_1sp( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2886,7 +2919,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_1sp( Angle(centerLong, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2908,6 +2941,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp( double eastingFalseOrigin, double northingFalseOrigin, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2920,7 +2954,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp( Angle(latitudeSecondParallel, angUnit), Length(eastingFalseOrigin, linearUnit), Length(northingFalseOrigin, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2944,6 +2978,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( double ellipsoidScalingFactor, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2957,7 +2992,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( Length(eastingFalseOrigin, linearUnit), Length(northingFalseOrigin, linearUnit), Scale(ellipsoidScalingFactor)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -2980,6 +3015,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( double eastingFalseOrigin, double northingFalseOrigin, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -2992,7 +3028,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( Angle(latitudeSecondParallel, angUnit), Length(eastingFalseOrigin, linearUnit), Length(northingFalseOrigin, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3013,6 +3049,7 @@ PJ_OBJ *proj_obj_create_conversion_azimuthal_equidistant( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3023,7 +3060,7 @@ PJ_OBJ *proj_obj_create_conversion_azimuthal_equidistant( Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3044,6 +3081,7 @@ PJ_OBJ *proj_obj_create_conversion_guam_projection( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3054,7 +3092,7 @@ PJ_OBJ *proj_obj_create_conversion_guam_projection( Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3075,6 +3113,7 @@ PJ_OBJ *proj_obj_create_conversion_bonne( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3085,7 +3124,7 @@ PJ_OBJ *proj_obj_create_conversion_bonne( Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3107,6 +3146,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3117,7 +3157,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3138,6 +3178,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3148,7 +3189,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area( Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3168,6 +3209,7 @@ PJ_OBJ *proj_obj_create_conversion_cassini_soldner( PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3177,7 +3219,7 @@ PJ_OBJ *proj_obj_create_conversion_cassini_soldner( PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3199,6 +3241,7 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_conic( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3210,7 +3253,7 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_conic( Angle(latitudeSecondParallel, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3230,6 +3273,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_i( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3239,7 +3283,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_i( Conversion::createEckertI(PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3259,6 +3303,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_ii( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3268,7 +3313,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_ii( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3288,6 +3333,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_iii( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3297,7 +3343,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_iii( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3317,6 +3363,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_iv( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3326,7 +3373,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_iv( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3346,6 +3393,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_v( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3355,7 +3403,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_v( Conversion::createEckertV(PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3375,6 +3423,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_vi( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3384,7 +3433,7 @@ PJ_OBJ *proj_obj_create_conversion_eckert_vi( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3405,6 +3454,7 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3415,7 +3465,7 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical( Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3437,6 +3487,7 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical_spherical( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3447,7 +3498,7 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical_spherical( Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3467,6 +3518,7 @@ PJ_OBJ *proj_obj_create_conversion_gall( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3476,7 +3528,7 @@ PJ_OBJ *proj_obj_create_conversion_gall( Conversion::createGall(PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3496,6 +3548,7 @@ PJ_OBJ *proj_obj_create_conversion_goode_homolosine( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3505,7 +3558,7 @@ PJ_OBJ *proj_obj_create_conversion_goode_homolosine( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3525,6 +3578,7 @@ PJ_OBJ *proj_obj_create_conversion_interrupted_goode_homolosine( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3534,7 +3588,7 @@ PJ_OBJ *proj_obj_create_conversion_interrupted_goode_homolosine( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3555,6 +3609,7 @@ PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_x( PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3564,7 +3619,7 @@ PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_x( PropertyMap(), Angle(centerLong, angUnit), Length(height, linearUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3585,6 +3640,7 @@ PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_y( PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3594,7 +3650,7 @@ PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_y( PropertyMap(), Angle(centerLong, angUnit), Length(height, linearUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3614,6 +3670,7 @@ PJ_OBJ *proj_obj_create_conversion_gnomonic( PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3623,7 +3680,7 @@ PJ_OBJ *proj_obj_create_conversion_gnomonic( PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3646,6 +3703,7 @@ PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( double angleFromRectifiedToSkrewGrid, double scale, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3658,7 +3716,7 @@ PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3682,6 +3740,7 @@ PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( double eastingProjectionCentre, double northingProjectionCentre, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3694,7 +3753,7 @@ PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), Length(eastingProjectionCentre, linearUnit), Length(northingProjectionCentre, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3719,6 +3778,7 @@ proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( double northingProjectionCentre, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3731,7 +3791,7 @@ proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( Angle(latitudePoint2, angUnit), Angle(longitudePoint2, angUnit), Scale(scale), Length(eastingProjectionCentre, linearUnit), Length(northingProjectionCentre, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3753,6 +3813,7 @@ PJ_OBJ *proj_obj_create_conversion_international_map_world_polyconic( double latitudeSecondParallel, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3764,7 +3825,7 @@ PJ_OBJ *proj_obj_create_conversion_international_map_world_polyconic( Angle(latitudeSecondParallel, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3786,6 +3847,7 @@ PJ_OBJ *proj_obj_create_conversion_krovak_north_oriented( double scaleFactorPseudoStandardParallel, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3799,7 +3861,7 @@ PJ_OBJ *proj_obj_create_conversion_krovak_north_oriented( Scale(scaleFactorPseudoStandardParallel), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3821,6 +3883,7 @@ PJ_OBJ *proj_obj_create_conversion_krovak( double scaleFactorPseudoStandardParallel, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3834,7 +3897,7 @@ PJ_OBJ *proj_obj_create_conversion_krovak( Scale(scaleFactorPseudoStandardParallel), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3855,6 +3918,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_azimuthal_equal_area( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3865,7 +3929,7 @@ PJ_OBJ *proj_obj_create_conversion_lambert_azimuthal_equal_area( Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3885,6 +3949,7 @@ PJ_OBJ *proj_obj_create_conversion_miller_cylindrical( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3894,7 +3959,7 @@ PJ_OBJ *proj_obj_create_conversion_miller_cylindrical( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3915,6 +3980,7 @@ PJ_OBJ *proj_obj_create_conversion_mercator_variant_a( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3925,7 +3991,7 @@ PJ_OBJ *proj_obj_create_conversion_mercator_variant_a( Angle(centerLong, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3946,6 +4012,7 @@ PJ_OBJ *proj_obj_create_conversion_mercator_variant_b( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3955,7 +4022,7 @@ PJ_OBJ *proj_obj_create_conversion_mercator_variant_b( PropertyMap(), Angle(latitudeFirstParallel, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -3976,6 +4043,7 @@ PJ_OBJ *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -3985,7 +4053,7 @@ PJ_OBJ *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4005,6 +4073,7 @@ PJ_OBJ *proj_obj_create_conversion_mollweide( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4014,7 +4083,7 @@ PJ_OBJ *proj_obj_create_conversion_mollweide( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4034,6 +4103,7 @@ PJ_OBJ *proj_obj_create_conversion_new_zealand_mapping_grid( PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4043,7 +4113,7 @@ PJ_OBJ *proj_obj_create_conversion_new_zealand_mapping_grid( PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4064,6 +4134,7 @@ PJ_OBJ *proj_obj_create_conversion_oblique_stereographic( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4074,7 +4145,7 @@ PJ_OBJ *proj_obj_create_conversion_oblique_stereographic( Angle(centerLong, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4094,6 +4165,7 @@ PJ_OBJ *proj_obj_create_conversion_orthographic( PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4103,7 +4175,7 @@ PJ_OBJ *proj_obj_create_conversion_orthographic( PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4123,6 +4195,7 @@ PJ_OBJ *proj_obj_create_conversion_american_polyconic( PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4132,7 +4205,7 @@ PJ_OBJ *proj_obj_create_conversion_american_polyconic( PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4153,6 +4226,7 @@ PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_a( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4163,7 +4237,7 @@ PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_a( Angle(centerLong, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4184,6 +4258,7 @@ PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_b( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4193,7 +4268,7 @@ PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_b( PropertyMap(), Angle(latitudeStandardParallel, angUnit), Angle(longitudeOfOrigin, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4213,6 +4288,7 @@ PJ_OBJ *proj_obj_create_conversion_robinson( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4222,7 +4298,7 @@ PJ_OBJ *proj_obj_create_conversion_robinson( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4242,6 +4318,7 @@ PJ_OBJ *proj_obj_create_conversion_sinusoidal( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4251,7 +4328,7 @@ PJ_OBJ *proj_obj_create_conversion_sinusoidal( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4272,6 +4349,7 @@ PJ_OBJ *proj_obj_create_conversion_stereographic( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4282,7 +4360,7 @@ PJ_OBJ *proj_obj_create_conversion_stereographic( Angle(centerLong, angUnit), Scale(scale), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4302,6 +4380,7 @@ PJ_OBJ *proj_obj_create_conversion_van_der_grinten( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4311,7 +4390,7 @@ PJ_OBJ *proj_obj_create_conversion_van_der_grinten( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4331,6 +4410,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_i( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4340,7 +4420,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_i( Conversion::createWagnerI(PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4360,6 +4440,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_ii( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4369,7 +4450,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_ii( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4390,6 +4471,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_iii( double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4399,7 +4481,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_iii( PropertyMap(), Angle(latitudeTrueScale, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4419,6 +4501,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_iv( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4428,7 +4511,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_iv( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4448,6 +4531,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_v( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4457,7 +4541,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_v( Conversion::createWagnerV(PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4477,6 +4561,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_vi( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4486,7 +4571,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_vi( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4506,6 +4591,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_vii( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4515,7 +4601,7 @@ PJ_OBJ *proj_obj_create_conversion_wagner_vii( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4536,6 +4622,7 @@ PJ_OBJ *proj_obj_create_conversion_quadrilateralized_spherical_cube( PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4545,7 +4632,7 @@ PJ_OBJ *proj_obj_create_conversion_quadrilateralized_spherical_cube( PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4566,6 +4653,7 @@ PJ_OBJ *proj_obj_create_conversion_spherical_cross_track_height( double pegPointHeading, double pegPointHeight, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4575,7 +4663,7 @@ PJ_OBJ *proj_obj_create_conversion_spherical_cross_track_height( PropertyMap(), Angle(pegPointLat, angUnit), Angle(pegPointLong, angUnit), Angle(pegPointHeading, angUnit), Length(pegPointHeight, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4595,6 +4683,7 @@ PJ_OBJ *proj_obj_create_conversion_equal_earth( PJ_CONTEXT *ctx, double centerLong, double falseEasting, double falseNorthing, const char *angUnitName, double angUnitConvFactor, const char *linearUnitName, double linearUnitConvFactor) { + SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( createLinearUnit(linearUnitName, linearUnitConvFactor)); @@ -4604,7 +4693,7 @@ PJ_OBJ *proj_obj_create_conversion_equal_earth( PropertyMap(), Angle(centerLong, angUnit), Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); - return proj_obj_create_conversion(ctx, conv); + return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); } @@ -4618,21 +4707,23 @@ PJ_OBJ *proj_obj_create_conversion_equal_earth( * a PROJ pipeline, checking in particular that referenced grids are * available. * + * @param ctx PROJ context, or NULL for default context * @param coordoperation Objet of type CoordinateOperation or derived classes * (must not be NULL) * @return TRUE or FALSE. */ -int proj_coordoperation_is_instanciable(const PJ_OBJ *coordoperation) { +int proj_coordoperation_is_instanciable(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation) { assert(coordoperation); auto op = dynamic_cast(coordoperation->obj.get()); if (!op) { - proj_log_error(coordoperation->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateOperation"); return 0; } - auto dbContext = getDBcontextNoException(coordoperation->ctx, __FUNCTION__); + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); try { return op->isPROJInstanciable(dbContext) ? 1 : 0; } catch (const std::exception &) { @@ -4644,16 +4735,18 @@ int proj_coordoperation_is_instanciable(const PJ_OBJ *coordoperation) { /** \brief Return the number of parameters of a SingleOperation * + * @param ctx PROJ context, or NULL for default context * @param coordoperation Objet of type SingleOperation or derived classes * (must not be NULL) */ -int proj_coordoperation_get_param_count(const PJ_OBJ *coordoperation) { +int proj_coordoperation_get_param_count(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation) { + SANITIZE_CTX(ctx); assert(coordoperation); auto op = dynamic_cast(coordoperation->obj.get()); if (!op) { - proj_log_error(coordoperation->ctx, __FUNCTION__, - "Object is not a SingleOperation"); + proj_log_error(ctx, __FUNCTION__, "Object is not a SingleOperation"); return 0; } return static_cast(op->parameterValues().size()); @@ -4663,20 +4756,22 @@ int proj_coordoperation_get_param_count(const PJ_OBJ *coordoperation) { /** \brief Return the index of a parameter of a SingleOperation * + * @param ctx PROJ context, or NULL for default context * @param coordoperation Objet of type SingleOperation or derived classes * (must not be NULL) * @param name Parameter name. Must not be NULL * @return index (>=0), or -1 in case of error. */ -int proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, +int proj_coordoperation_get_param_index(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation, const char *name) { + SANITIZE_CTX(ctx); assert(coordoperation); assert(name); auto op = dynamic_cast(coordoperation->obj.get()); if (!op) { - proj_log_error(coordoperation->ctx, __FUNCTION__, - "Object is not a SingleOperation"); + proj_log_error(ctx, __FUNCTION__, "Object is not a SingleOperation"); return -1; } int index = 0; @@ -4693,6 +4788,7 @@ int proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, /** \brief Return a parameter of a SingleOperation * + * @param ctx PROJ context, or NULL for default context * @param coordoperation Objet of type SingleOperation or derived classes * (must not be NULL) * @param index Parameter index. @@ -4713,25 +4809,25 @@ int proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, * @return TRUE in case of success. */ -int proj_coordoperation_get_param(const PJ_OBJ *coordoperation, int index, - const char **out_name, +int proj_coordoperation_get_param(PJ_CONTEXT *ctx, const PJ_OBJ *coordoperation, + int index, const char **out_name, const char **out_auth_name, const char **out_code, double *out_value, const char **out_value_string, double *out_unit_conv_factor, const char **out_unit_name) { + SANITIZE_CTX(ctx); assert(coordoperation); auto op = dynamic_cast(coordoperation->obj.get()); if (!op) { - proj_log_error(coordoperation->ctx, __FUNCTION__, - "Object is not a SingleOperation"); + proj_log_error(ctx, __FUNCTION__, "Object is not a SingleOperation"); return false; } const auto ¶meters = op->method()->parameters(); const auto &values = op->parameterValues(); if (static_cast(index) >= parameters.size() || static_cast(index) >= values.size()) { - proj_log_error(coordoperation->ctx, __FUNCTION__, "Invalid index"); + proj_log_error(ctx, __FUNCTION__, "Invalid index"); return false; } @@ -4805,20 +4901,23 @@ int proj_coordoperation_get_param(const PJ_OBJ *coordoperation, int index, /** \brief Return the number of grids used by a CoordinateOperation * + * @param ctx PROJ context, or NULL for default context * @param coordoperation Objet of type CoordinateOperation or derived classes * (must not be NULL) */ -int proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation) { +int proj_coordoperation_get_grid_used_count(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation) { + SANITIZE_CTX(ctx); assert(coordoperation); auto co = dynamic_cast(coordoperation->obj.get()); if (!co) { - proj_log_error(coordoperation->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateOperation"); return 0; } - auto dbContext = getDBcontextNoException(coordoperation->ctx, __FUNCTION__); + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); try { if (!coordoperation->gridsNeededAsked) { coordoperation->gridsNeededAsked = true; @@ -4829,7 +4928,7 @@ int proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation) { } return static_cast(coordoperation->gridsNeeded.size()); } catch (const std::exception &e) { - proj_log_error(coordoperation->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return 0; } } @@ -4838,6 +4937,7 @@ int proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation) { /** \brief Return a parameter of a SingleOperation * + * @param ctx PROJ context, or NULL for default context * @param coordoperation Objet of type SingleOperation or derived classes * (must not be NULL) * @param index Parameter index. @@ -4860,13 +4960,15 @@ int proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation) { */ int proj_coordoperation_get_grid_used( - const PJ_OBJ *coordoperation, int index, const char **out_short_name, - const char **out_full_name, const char **out_package_name, - const char **out_url, int *out_direct_download, int *out_open_license, - int *out_available) { - const int count = proj_coordoperation_get_grid_used_count(coordoperation); + PJ_CONTEXT *ctx, const PJ_OBJ *coordoperation, int index, + const char **out_short_name, const char **out_full_name, + const char **out_package_name, const char **out_url, + int *out_direct_download, int *out_open_license, int *out_available) { + SANITIZE_CTX(ctx); + const int count = + proj_coordoperation_get_grid_used_count(ctx, coordoperation); if (index < 0 || index >= count) { - proj_log_error(coordoperation->ctx, __FUNCTION__, "Invalid index"); + proj_log_error(ctx, __FUNCTION__, "Invalid index"); return false; } @@ -4907,12 +5009,11 @@ int proj_coordoperation_get_grid_used( /** \brief Opaque object representing an operation factory context. */ struct PJ_OPERATION_FACTORY_CONTEXT { //! @cond Doxygen_Suppress - PJ_CONTEXT *ctx; CoordinateOperationContextNNPtr operationContext; explicit PJ_OPERATION_FACTORY_CONTEXT( - PJ_CONTEXT *ctxIn, CoordinateOperationContextNNPtr &&operationContextIn) - : ctx(ctxIn), operationContext(std::move(operationContextIn)) {} + CoordinateOperationContextNNPtr &&operationContextIn) + : operationContext(std::move(operationContextIn)) {} PJ_OPERATION_FACTORY_CONTEXT(const PJ_OPERATION_FACTORY_CONTEXT &) = delete; PJ_OPERATION_FACTORY_CONTEXT & @@ -4948,12 +5049,12 @@ proj_create_operation_factory_context(PJ_CONTEXT *ctx, const char *authority) { auto operationContext = CoordinateOperationContext::create(authFactory, nullptr, 0.0); return new PJ_OPERATION_FACTORY_CONTEXT( - ctx, std::move(operationContext)); + std::move(operationContext)); } else { auto operationContext = CoordinateOperationContext::create(nullptr, nullptr, 0.0); return new PJ_OPERATION_FACTORY_CONTEXT( - ctx, std::move(operationContext)); + std::move(operationContext)); } } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4977,13 +5078,20 @@ void proj_operation_factory_context_unref(PJ_OPERATION_FACTORY_CONTEXT *ctx) { // --------------------------------------------------------------------------- /** \brief Set the desired accuracy of the resulting coordinate transformations. - * @param ctx Operation factory context. must not be NULL + * @param ctx PROJ context, or NULL for default context + * @param factory_ctx Operation factory context. must not be NULL * @param accuracy Accuracy in meter (or 0 to disable the filter). */ void proj_operation_factory_context_set_desired_accuracy( - PJ_OPERATION_FACTORY_CONTEXT *ctx, double accuracy) { - assert(ctx); - ctx->operationContext->setDesiredAccuracy(accuracy); + PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, + double accuracy) { + SANITIZE_CTX(ctx); + assert(factory_ctx); + try { + factory_ctx->operationContext->setDesiredAccuracy(accuracy); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } } // --------------------------------------------------------------------------- @@ -4994,18 +5102,26 @@ void proj_operation_factory_context_set_desired_accuracy( * For an area of interest crossing the anti-meridian, west_lon_degree will be * greater than east_lon_degree. * - * @param ctx Operation factory context. must not be NULL + * @param ctx PROJ context, or NULL for default context + * @param factory_ctx Operation factory context. must not be NULL * @param west_lon_degree West longitude (in degrees). * @param south_lat_degree South latitude (in degrees). * @param east_lon_degree East longitude (in degrees). * @param north_lat_degree North latitude (in degrees). */ void proj_operation_factory_context_set_area_of_interest( - PJ_OPERATION_FACTORY_CONTEXT *ctx, double west_lon_degree, - double south_lat_degree, double east_lon_degree, double north_lat_degree) { - assert(ctx); - ctx->operationContext->setAreaOfInterest(Extent::createFromBBOX( - west_lon_degree, south_lat_degree, east_lon_degree, north_lat_degree)); + PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, + double west_lon_degree, double south_lat_degree, double east_lon_degree, + double north_lat_degree) { + SANITIZE_CTX(ctx); + assert(factory_ctx); + try { + factory_ctx->operationContext->setAreaOfInterest( + Extent::createFromBBOX(west_lon_degree, south_lat_degree, + east_lon_degree, north_lat_degree)); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } } // --------------------------------------------------------------------------- @@ -5016,32 +5132,40 @@ void proj_operation_factory_context_set_area_of_interest( * * The default is PJ_CRS_EXTENT_SMALLEST. * - * @param ctx Operation factory context. must not be NULL + * @param ctx PROJ context, or NULL for default context + * @param factory_ctx Operation factory context. must not be NULL * @param use How source and target CRS extent should be used. */ void proj_operation_factory_context_set_crs_extent_use( - PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_CRS_EXTENT_USE use) { - assert(ctx); - switch (use) { - case PJ_CRS_EXTENT_NONE: - ctx->operationContext->setSourceAndTargetCRSExtentUse( - CoordinateOperationContext::SourceTargetCRSExtentUse::NONE); - break; + PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, + PROJ_CRS_EXTENT_USE use) { + SANITIZE_CTX(ctx); + assert(factory_ctx); + try { + switch (use) { + case PJ_CRS_EXTENT_NONE: + factory_ctx->operationContext->setSourceAndTargetCRSExtentUse( + CoordinateOperationContext::SourceTargetCRSExtentUse::NONE); + break; - case PJ_CRS_EXTENT_BOTH: - ctx->operationContext->setSourceAndTargetCRSExtentUse( - CoordinateOperationContext::SourceTargetCRSExtentUse::BOTH); - break; + case PJ_CRS_EXTENT_BOTH: + factory_ctx->operationContext->setSourceAndTargetCRSExtentUse( + CoordinateOperationContext::SourceTargetCRSExtentUse::BOTH); + break; - case PJ_CRS_EXTENT_INTERSECTION: - ctx->operationContext->setSourceAndTargetCRSExtentUse( - CoordinateOperationContext::SourceTargetCRSExtentUse::INTERSECTION); - break; + case PJ_CRS_EXTENT_INTERSECTION: + factory_ctx->operationContext->setSourceAndTargetCRSExtentUse( + CoordinateOperationContext::SourceTargetCRSExtentUse:: + INTERSECTION); + break; - case PJ_CRS_EXTENT_SMALLEST: - ctx->operationContext->setSourceAndTargetCRSExtentUse( - CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST); - break; + case PJ_CRS_EXTENT_SMALLEST: + factory_ctx->operationContext->setSourceAndTargetCRSExtentUse( + CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST); + break; + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); } } @@ -5054,22 +5178,31 @@ void proj_operation_factory_context_set_crs_extent_use( * * The default is PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT. * - * @param ctx Operation factory context. must not be NULL + * @param ctx PROJ context, or NULL for default context + * @param factory_ctx Operation factory context. must not be NULL * @param criterion patial criterion to use */ void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( - PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_SPATIAL_CRITERION criterion) { - assert(ctx); - switch (criterion) { - case PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT: - ctx->operationContext->setSpatialCriterion( - CoordinateOperationContext::SpatialCriterion::STRICT_CONTAINMENT); - break; + PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, + PROJ_SPATIAL_CRITERION criterion) { + SANITIZE_CTX(ctx); + assert(factory_ctx); + try { + switch (criterion) { + case PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT: + factory_ctx->operationContext->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion:: + STRICT_CONTAINMENT); + break; - case PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION: - ctx->operationContext->setSpatialCriterion( - CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); - break; + case PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION: + factory_ctx->operationContext->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion:: + PARTIAL_INTERSECTION); + break; + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); } } @@ -5079,29 +5212,37 @@ void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( * * The default is USE_FOR_SORTING. * - * @param ctx Operation factory context. must not be NULL + * @param ctx PROJ context, or NULL for default context + * @param factory_ctx Operation factory context. must not be NULL * @param use how grid availability is used. */ void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( - PJ_OPERATION_FACTORY_CONTEXT *ctx, PROJ_GRID_AVAILABILITY_USE use) { - assert(ctx); - switch (use) { - case PROJ_GRID_AVAILABILITY_USED_FOR_SORTING: - ctx->operationContext->setGridAvailabilityUse( - CoordinateOperationContext::GridAvailabilityUse::USE_FOR_SORTING); - break; + PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, + PROJ_GRID_AVAILABILITY_USE use) { + SANITIZE_CTX(ctx); + assert(factory_ctx); + try { + switch (use) { + case PROJ_GRID_AVAILABILITY_USED_FOR_SORTING: + factory_ctx->operationContext->setGridAvailabilityUse( + CoordinateOperationContext::GridAvailabilityUse:: + USE_FOR_SORTING); + break; - case PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID: - ctx->operationContext->setGridAvailabilityUse( - CoordinateOperationContext::GridAvailabilityUse:: - DISCARD_OPERATION_IF_MISSING_GRID); - break; + case PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID: + factory_ctx->operationContext->setGridAvailabilityUse( + CoordinateOperationContext::GridAvailabilityUse:: + DISCARD_OPERATION_IF_MISSING_GRID); + break; - case PROJ_GRID_AVAILABILITY_IGNORED: - ctx->operationContext->setGridAvailabilityUse( - CoordinateOperationContext::GridAvailabilityUse:: - IGNORE_GRID_AVAILABILITY); - break; + case PROJ_GRID_AVAILABILITY_IGNORED: + factory_ctx->operationContext->setGridAvailabilityUse( + CoordinateOperationContext::GridAvailabilityUse:: + IGNORE_GRID_AVAILABILITY); + break; + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); } } @@ -5112,13 +5253,21 @@ void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( * * The default is true. * - * @param ctx Operation factory context. must not be NULL + * @param ctx PROJ context, or NULL for default context + * @param factory_ctx Operation factory context. must not be NULL * @param usePROJNames whether PROJ alternative grid names should be used */ void proj_operation_factory_context_set_use_proj_alternative_grid_names( - PJ_OPERATION_FACTORY_CONTEXT *ctx, int usePROJNames) { - assert(ctx); - ctx->operationContext->setUsePROJAlternativeGridNames(usePROJNames != 0); + PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, + int usePROJNames) { + SANITIZE_CTX(ctx); + assert(factory_ctx); + try { + factory_ctx->operationContext->setUsePROJAlternativeGridNames( + usePROJNames != 0); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } } // --------------------------------------------------------------------------- @@ -5140,13 +5289,19 @@ void proj_operation_factory_context_set_use_proj_alternative_grid_names( * * The default is true. * - * @param ctx Operation factory context. must not be NULL + * @param ctx PROJ context, or NULL for default context + * @param factory_ctx Operation factory context. must not be NULL * @param allow whether intermediate CRS may be used. */ void proj_operation_factory_context_set_allow_use_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctx, int allow) { - assert(ctx); - ctx->operationContext->setAllowUseIntermediateCRS(allow != 0); + PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, int allow) { + SANITIZE_CTX(ctx); + assert(factory_ctx); + try { + factory_ctx->operationContext->setAllowUseIntermediateCRS(allow != 0); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } } // --------------------------------------------------------------------------- @@ -5154,21 +5309,27 @@ void proj_operation_factory_context_set_allow_use_intermediate_crs( /** \brief Restrict the potential pivot CRSs that can be used when trying to * build a coordinate operation between two CRS that have no direct operation. * - * @param ctx Operation factory context. must not be NULL + * @param ctx PROJ context, or NULL for default context + * @param factory_ctx Operation factory context. must not be NULL * @param list_of_auth_name_codes an array of strings NLL terminated, * with the format { "auth_name1", "code1", "auth_name2", "code2", ... NULL } */ void proj_operation_factory_context_set_allowed_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctx, + PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, const char *const *list_of_auth_name_codes) { - assert(ctx); - std::vector> pivots; - for (auto iter = list_of_auth_name_codes; iter && iter[0] && iter[1]; - iter += 2) { - pivots.emplace_back(std::pair( - std::string(iter[0]), std::string(iter[1]))); + SANITIZE_CTX(ctx); + assert(factory_ctx); + try { + std::vector> pivots; + for (auto iter = list_of_auth_name_codes; iter && iter[0] && iter[1]; + iter += 2) { + pivots.emplace_back(std::pair( + std::string(iter[0]), std::string(iter[1]))); + } + factory_ctx->operationContext->setIntermediateCRS(pivots); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); } - ctx->operationContext->setIntermediateCRS(pivots); } // --------------------------------------------------------------------------- @@ -5183,6 +5344,7 @@ void proj_operation_factory_context_set_allowed_intermediate_crs( * by increasing accuracy. Operations with unknown accuracy are sorted last, * whatever their area. * + * @param ctx PROJ context, or NULL for default context * @param source_crs source CRS. Must not be NULL. * @param target_crs source CRS. Must not be NULL. * @param operationContext Search context. Must not be NULL. @@ -5190,22 +5352,21 @@ void proj_operation_factory_context_set_allowed_intermediate_crs( * proj_obj_list_unref(), or NULL in case of error. */ PJ_OBJ_LIST *proj_obj_create_operations( - const PJ_OBJ *source_crs, const PJ_OBJ *target_crs, + PJ_CONTEXT *ctx, const PJ_OBJ *source_crs, const PJ_OBJ *target_crs, const PJ_OPERATION_FACTORY_CONTEXT *operationContext) { + SANITIZE_CTX(ctx); assert(source_crs); assert(target_crs); assert(operationContext); auto sourceCRS = nn_dynamic_pointer_cast(source_crs->obj); if (!sourceCRS) { - proj_log_error(operationContext->ctx, __FUNCTION__, - "source_crs is not a CRS"); + proj_log_error(ctx, __FUNCTION__, "source_crs is not a CRS"); return nullptr; } auto targetCRS = nn_dynamic_pointer_cast(target_crs->obj); if (!targetCRS) { - proj_log_error(operationContext->ctx, __FUNCTION__, - "target_crs is not a CRS"); + proj_log_error(ctx, __FUNCTION__, "target_crs is not a CRS"); return nullptr; } @@ -5218,9 +5379,9 @@ PJ_OBJ_LIST *proj_obj_create_operations( for (const auto &op : ops) { objects.emplace_back(op); } - return new PJ_OBJ_LIST(operationContext->ctx, std::move(objects)); + return new PJ_OBJ_LIST(std::move(objects)); } catch (const std::exception &e) { - proj_log_error(operationContext->ctx, __FUNCTION__, e.what()); + proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; } } @@ -5244,19 +5405,22 @@ int proj_obj_list_get_count(const PJ_OBJ_LIST *result) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param result Objet of type PJ_OBJ_LIST (must not be NULL) * @param index Index * @return a new object that must be unreferenced with proj_obj_unref(), * or nullptr in case of error. */ -PJ_OBJ *proj_obj_list_get(const PJ_OBJ_LIST *result, int index) { +PJ_OBJ *proj_obj_list_get(PJ_CONTEXT *ctx, const PJ_OBJ_LIST *result, + int index) { + SANITIZE_CTX(ctx); assert(result); if (index < 0 || index >= proj_obj_list_get_count(result)) { - proj_log_error(result->ctx, __FUNCTION__, "Invalid index"); + proj_log_error(ctx, __FUNCTION__, "Invalid index"); return nullptr; } - return PJ_OBJ::create(result->ctx, result->objects[index]); + return PJ_OBJ::create(result->objects[index]); } // --------------------------------------------------------------------------- @@ -5274,14 +5438,18 @@ void proj_obj_list_unref(PJ_OBJ_LIST *result) { delete result; } /** \brief Return the accuracy (in metre) of a coordinate operation. * + * @param ctx PROJ context, or NULL for default context + * @param coordoperation Coordinate operation. Must not be NULL. * @return the accuracy, or a negative value if unknown or in case of error. */ -double proj_coordoperation_get_accuracy(const PJ_OBJ *coordoperation) { +double proj_coordoperation_get_accuracy(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation) { + SANITIZE_CTX(ctx); assert(coordoperation); auto co = dynamic_cast(coordoperation->obj.get()); if (!co) { - proj_log_error(coordoperation->ctx, __FUNCTION__, + proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateOperation"); return -1; } @@ -5304,22 +5472,24 @@ double proj_coordoperation_get_accuracy(const PJ_OBJ *coordoperation) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crs Objet of type SingleCRS (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error (or if there is no datum) */ -PJ_OBJ *proj_obj_crs_get_datum(const PJ_OBJ *crs) { +PJ_OBJ *proj_obj_crs_get_datum(PJ_CONTEXT *ctx, const PJ_OBJ *crs) { + SANITIZE_CTX(ctx); assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { - proj_log_error(crs->ctx, __FUNCTION__, "Object is not a SingleCRS"); + proj_log_error(ctx, __FUNCTION__, "Object is not a SingleCRS"); return nullptr; } const auto &datum = l_crs->datum(); if (!datum) { return nullptr; } - return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(datum)); + return PJ_OBJ::create(NN_NO_CHECK(datum)); } // --------------------------------------------------------------------------- @@ -5330,33 +5500,37 @@ PJ_OBJ *proj_obj_crs_get_datum(const PJ_OBJ *crs) { * use. * It should be used by at most one thread at a time. * + * @param ctx PROJ context, or NULL for default context * @param crs Objet of type SingleCRS (must not be NULL) * @return Object that must be unreferenced with proj_obj_unref(), or NULL * in case of error. */ -PJ_OBJ *proj_obj_crs_get_coordinate_system(const PJ_OBJ *crs) { +PJ_OBJ *proj_obj_crs_get_coordinate_system(PJ_CONTEXT *ctx, const PJ_OBJ *crs) { + SANITIZE_CTX(ctx); assert(crs); auto l_crs = dynamic_cast(crs->obj.get()); if (!l_crs) { - proj_log_error(crs->ctx, __FUNCTION__, "Object is not a SingleCRS"); + proj_log_error(ctx, __FUNCTION__, "Object is not a SingleCRS"); return nullptr; } - return PJ_OBJ::create(crs->ctx, l_crs->coordinateSystem()); + return PJ_OBJ::create(l_crs->coordinateSystem()); } // --------------------------------------------------------------------------- /** \brief Returns the type of the coordinate system. * + * @param ctx PROJ context, or NULL for default context * @param cs Objet of type CoordinateSystem (must not be NULL) * @return type, or PJ_CS_TYPE_UNKNOWN in case of error. */ -PJ_COORDINATE_SYSTEM_TYPE proj_obj_cs_get_type(const PJ_OBJ *cs) { +PJ_COORDINATE_SYSTEM_TYPE proj_obj_cs_get_type(PJ_CONTEXT *ctx, + const PJ_OBJ *cs) { + SANITIZE_CTX(ctx); assert(cs); auto l_cs = dynamic_cast(cs->obj.get()); if (!l_cs) { - proj_log_error(cs->ctx, __FUNCTION__, - "Object is not a CoordinateSystem"); + proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateSystem"); return PJ_CS_TYPE_UNKNOWN; } if (dynamic_cast(l_cs)) { @@ -5393,15 +5567,16 @@ PJ_COORDINATE_SYSTEM_TYPE proj_obj_cs_get_type(const PJ_OBJ *cs) { /** \brief Returns the number of axis of the coordinate system. * + * @param ctx PROJ context, or NULL for default context * @param cs Objet of type CoordinateSystem (must not be NULL) * @return number of axis, or -1 in case of error. */ -int proj_obj_cs_get_axis_count(const PJ_OBJ *cs) { +int proj_obj_cs_get_axis_count(PJ_CONTEXT *ctx, const PJ_OBJ *cs) { + SANITIZE_CTX(ctx); assert(cs); auto l_cs = dynamic_cast(cs->obj.get()); if (!l_cs) { - proj_log_error(cs->ctx, __FUNCTION__, - "Object is not a CoordinateSystem"); + proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateSystem"); return -1; } return static_cast(l_cs->axisList().size()); @@ -5411,6 +5586,7 @@ int proj_obj_cs_get_axis_count(const PJ_OBJ *cs) { /** \brief Returns information on an axis * + * @param ctx PROJ context, or NULL for default context * @param cs Objet of type CoordinateSystem (must not be NULL) * @param index Index of the coordinate system (between 0 and * proj_obj_cs_get_axis_count() - 1) @@ -5425,21 +5601,21 @@ int proj_obj_cs_get_axis_count(const PJ_OBJ *cs) { * unit name. or NULL * @return TRUE in case of success */ -int proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, +int proj_obj_cs_get_axis_info(PJ_CONTEXT *ctx, const PJ_OBJ *cs, int index, const char **out_name, const char **out_abbrev, const char **out_direction, double *out_unit_conv_factor, const char **out_unit_name) { + SANITIZE_CTX(ctx); assert(cs); auto l_cs = dynamic_cast(cs->obj.get()); if (!l_cs) { - proj_log_error(cs->ctx, __FUNCTION__, - "Object is not a CoordinateSystem"); + proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateSystem"); return false; } const auto &axisList = l_cs->axisList(); if (index < 0 || static_cast(index) >= axisList.size()) { - proj_log_error(cs->ctx, __FUNCTION__, "Invalid index"); + proj_log_error(ctx, __FUNCTION__, "Invalid index"); return false; } const auto &axis = axisList[index]; diff --git a/src/cs2cs.cpp b/src/cs2cs.cpp index 8dc23ac5..a8d126cf 100644 --- a/src/cs2cs.cpp +++ b/src/cs2cs.cpp @@ -225,19 +225,19 @@ static PJ_OBJ *instanciate_crs(const std::string &definition, auto type = proj_obj_get_type(crs); if (type == PJ_OBJ_TYPE_BOUND_CRS) { - auto base = proj_obj_get_source_crs(crs); + auto base = proj_obj_get_source_crs(nullptr, crs); proj_obj_unref(crs); crs = base; type = proj_obj_get_type(crs); } if (type == PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS || type == PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS) { - auto cs = proj_obj_crs_get_coordinate_system(crs); + auto cs = proj_obj_crs_get_coordinate_system(nullptr, crs); assert(cs); isGeog = true; const char *axisName = ""; - proj_obj_cs_get_axis_info(cs, 0, + proj_obj_cs_get_axis_info(nullptr, cs, 0, &axisName, // name, nullptr, // abbrev nullptr, // direction @@ -263,7 +263,7 @@ static std::string get_geog_crs_proj_string_from_proj_crs(PJ_OBJ *src, bool &isLatFirst) { auto srcType = proj_obj_get_type(src); if (srcType == PJ_OBJ_TYPE_BOUND_CRS) { - auto base = proj_obj_get_source_crs(src); + auto base = proj_obj_get_source_crs(nullptr, src); assert(base); proj_obj_unref(src); src = base; @@ -273,7 +273,7 @@ static std::string get_geog_crs_proj_string_from_proj_crs(PJ_OBJ *src, return std::string(); } - auto base = proj_obj_get_source_crs(src); + auto base = proj_obj_get_source_crs(nullptr, src); assert(base); auto baseType = proj_obj_get_type(base); if (baseType != PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS && @@ -282,11 +282,11 @@ static std::string get_geog_crs_proj_string_from_proj_crs(PJ_OBJ *src, return std::string(); } - auto cs = proj_obj_crs_get_coordinate_system(base); + auto cs = proj_obj_crs_get_coordinate_system(nullptr, base); assert(cs); const char *axisName = ""; - proj_obj_cs_get_axis_info(cs, 0, + proj_obj_cs_get_axis_info(nullptr, cs, 0, &axisName, // name, nullptr, // abbrev nullptr, // direction @@ -298,7 +298,7 @@ static std::string get_geog_crs_proj_string_from_proj_crs(PJ_OBJ *src, proj_obj_unref(cs); - auto retCStr = proj_obj_as_proj_string(base, PJ_PROJ_5, nullptr); + auto retCStr = proj_obj_as_proj_string(nullptr, base, PJ_PROJ_5, nullptr); std::string ret(retCStr ? retCStr : ""); proj_obj_unref(base); return ret; diff --git a/src/pj_init.c b/src/pj_init.c index 0440cf59..bc81235e 100644 --- a/src/pj_init.c +++ b/src/pj_init.c @@ -290,7 +290,7 @@ Expand key from buffer or (if not in buffer) from init file return 0; } - proj_string = proj_obj_as_proj_string(src, PJ_PROJ_4, NULL); + proj_string = proj_obj_as_proj_string(ctx, src, PJ_PROJ_4, NULL); if( !proj_string ) { proj_obj_unref(src); return 0; diff --git a/src/proj.h b/src/proj.h index 8548a209..3d546bdd 100644 --- a/src/proj.h +++ b/src/proj.h @@ -518,7 +518,7 @@ PJ_OBJ PROJ_DLL *proj_obj_create_from_database(PJ_CONTEXT *ctx, void PROJ_DLL proj_obj_unref(PJ_OBJ *obj); -PJ_OBJ PROJ_DLL *proj_obj_clone(const PJ_OBJ *obj); +PJ_OBJ PROJ_DLL *proj_obj_clone(PJ_CONTEXT *ctx, const PJ_OBJ *obj); /** \brief Object type. */ typedef enum @@ -605,7 +605,8 @@ const char PROJ_DLL* proj_obj_get_id_auth_name(const PJ_OBJ *obj, int index); const char PROJ_DLL* proj_obj_get_id_code(const PJ_OBJ *obj, int index); -int PROJ_DLL proj_obj_get_area_of_use(const PJ_OBJ *obj, +int PROJ_DLL proj_obj_get_area_of_use(PJ_CONTEXT *ctx, + const PJ_OBJ *obj, double* out_west_lon_degree, double* out_south_lat_degree, double* out_east_lon_degree, @@ -629,7 +630,8 @@ typedef enum PJ_WKT1_ESRI } PJ_WKT_TYPE; -const char PROJ_DLL* proj_obj_as_wkt(const PJ_OBJ *obj, PJ_WKT_TYPE type, +const char PROJ_DLL* proj_obj_as_wkt(PJ_CONTEXT *ctx, + const PJ_OBJ *obj, PJ_WKT_TYPE type, const char* const *options); /** \brief PROJ string version. */ @@ -641,15 +643,19 @@ typedef enum PJ_PROJ_4 } PJ_PROJ_STRING_TYPE; -const char PROJ_DLL* proj_obj_as_proj_string(const PJ_OBJ *obj, +const char PROJ_DLL* proj_obj_as_proj_string(PJ_CONTEXT *ctx, + const PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, const char* const *options); -PJ_OBJ PROJ_DLL *proj_obj_get_source_crs(const PJ_OBJ *obj); +PJ_OBJ PROJ_DLL *proj_obj_get_source_crs(PJ_CONTEXT *ctx, + const PJ_OBJ *obj); -PJ_OBJ PROJ_DLL *proj_obj_get_target_crs(const PJ_OBJ *obj); +PJ_OBJ PROJ_DLL *proj_obj_get_target_crs(PJ_CONTEXT *ctx, + const PJ_OBJ *obj); -PJ_OBJ_LIST PROJ_DLL *proj_obj_identify(const PJ_OBJ* obj, +PJ_OBJ_LIST PROJ_DLL *proj_obj_identify(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, const char *auth_name, const char* const *options, int **confidence); @@ -685,11 +691,13 @@ void PROJ_DLL proj_operation_factory_context_unref( PJ_OPERATION_FACTORY_CONTEXT *ctx); void PROJ_DLL proj_operation_factory_context_set_desired_accuracy( - PJ_OPERATION_FACTORY_CONTEXT *ctx, + PJ_CONTEXT *ctx, + PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, double accuracy); void PROJ_DLL proj_operation_factory_context_set_area_of_interest( - PJ_OPERATION_FACTORY_CONTEXT *ctx, + PJ_CONTEXT *ctx, + PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, double west_lon_degree, double south_lat_degree, double east_lon_degree, @@ -715,7 +723,8 @@ typedef enum } PROJ_CRS_EXTENT_USE; void PROJ_DLL proj_operation_factory_context_set_crs_extent_use( - PJ_OPERATION_FACTORY_CONTEXT *ctx, + PJ_CONTEXT *ctx, + PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, PROJ_CRS_EXTENT_USE use); /** Spatial criterion to restrict candiate operations. */ @@ -730,7 +739,8 @@ typedef enum { } PROJ_SPATIAL_CRITERION; void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( - PJ_OPERATION_FACTORY_CONTEXT *ctx, + PJ_CONTEXT *ctx, + PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, PROJ_SPATIAL_CRITERION criterion); @@ -749,46 +759,53 @@ typedef enum { } PROJ_GRID_AVAILABILITY_USE; void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( - PJ_OPERATION_FACTORY_CONTEXT *ctx, + PJ_CONTEXT *ctx, + PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, PROJ_GRID_AVAILABILITY_USE use); void PROJ_DLL proj_operation_factory_context_set_use_proj_alternative_grid_names( - PJ_OPERATION_FACTORY_CONTEXT *ctx, + PJ_CONTEXT *ctx, + PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, int usePROJNames); void PROJ_DLL proj_operation_factory_context_set_allow_use_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctx, int allow); + PJ_CONTEXT *ctx, + PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, + int allow); void PROJ_DLL proj_operation_factory_context_set_allowed_intermediate_crs( - PJ_OPERATION_FACTORY_CONTEXT *ctx, + PJ_CONTEXT *ctx, + PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, const char* const *list_of_auth_name_codes); /* ------------------------------------------------------------------------- */ PJ_OBJ_LIST PROJ_DLL *proj_obj_create_operations( + PJ_CONTEXT *ctx, const PJ_OBJ *source_crs, const PJ_OBJ *target_crs, const PJ_OPERATION_FACTORY_CONTEXT *operationContext); int PROJ_DLL proj_obj_list_get_count(const PJ_OBJ_LIST *result); -PJ_OBJ PROJ_DLL *proj_obj_list_get(const PJ_OBJ_LIST *result, - int index); +PJ_OBJ PROJ_DLL *proj_obj_list_get(PJ_CONTEXT *ctx, + const PJ_OBJ_LIST *result, + int index); void PROJ_DLL proj_obj_list_unref(PJ_OBJ_LIST *result); /* ------------------------------------------------------------------------- */ -PJ_OBJ PROJ_DLL *proj_obj_crs_get_geodetic_crs(const PJ_OBJ *crs); +PJ_OBJ PROJ_DLL *proj_obj_crs_get_geodetic_crs(PJ_CONTEXT *ctx, const PJ_OBJ *crs); -PJ_OBJ PROJ_DLL *proj_obj_crs_get_horizontal_datum(const PJ_OBJ *crs); +PJ_OBJ PROJ_DLL *proj_obj_crs_get_horizontal_datum(PJ_CONTEXT *ctx, const PJ_OBJ *crs); -PJ_OBJ PROJ_DLL *proj_obj_crs_get_sub_crs(const PJ_OBJ *crs, int index); +PJ_OBJ PROJ_DLL *proj_obj_crs_get_sub_crs(PJ_CONTEXT *ctx, const PJ_OBJ *crs, int index); -PJ_OBJ PROJ_DLL *proj_obj_crs_get_datum(const PJ_OBJ *crs); +PJ_OBJ PROJ_DLL *proj_obj_crs_get_datum(PJ_CONTEXT *ctx, const PJ_OBJ *crs); -PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordinate_system(const PJ_OBJ *crs); +PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordinate_system(PJ_CONTEXT *ctx, const PJ_OBJ *crs); /** Type of coordinate system. */ typedef enum @@ -806,45 +823,57 @@ typedef enum PJ_CS_TYPE_TEMPORALMEASURE } PJ_COORDINATE_SYSTEM_TYPE; -PJ_COORDINATE_SYSTEM_TYPE PROJ_DLL proj_obj_cs_get_type(const PJ_OBJ* cs); +PJ_COORDINATE_SYSTEM_TYPE PROJ_DLL proj_obj_cs_get_type(PJ_CONTEXT *ctx, + const PJ_OBJ* cs); -int PROJ_DLL proj_obj_cs_get_axis_count(const PJ_OBJ *cs); +int PROJ_DLL proj_obj_cs_get_axis_count(PJ_CONTEXT *ctx, + const PJ_OBJ *cs); -int PROJ_DLL proj_obj_cs_get_axis_info(const PJ_OBJ *cs, int index, +int PROJ_DLL proj_obj_cs_get_axis_info(PJ_CONTEXT *ctx, + const PJ_OBJ *cs, int index, const char **out_name, const char **out_abbrev, const char **out_direction, double *out_unit_conv_factor, const char **out_unit_name); -PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(const PJ_OBJ *obj); +PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(PJ_CONTEXT *ctx, + const PJ_OBJ *obj); -int PROJ_DLL proj_obj_ellipsoid_get_parameters(const PJ_OBJ *ellipsoid, +int PROJ_DLL proj_obj_ellipsoid_get_parameters(PJ_CONTEXT *ctx, + const PJ_OBJ *ellipsoid, double *out_semi_major_metre, double *out_semi_minor_metre, int *out_is_semi_minor_computed, double *out_inv_flattening); -PJ_OBJ PROJ_DLL *proj_obj_get_prime_meridian(const PJ_OBJ *obj); +PJ_OBJ PROJ_DLL *proj_obj_get_prime_meridian(PJ_CONTEXT *ctx, + const PJ_OBJ *obj); -int PROJ_DLL proj_obj_prime_meridian_get_parameters(const PJ_OBJ *prime_meridian, +int PROJ_DLL proj_obj_prime_meridian_get_parameters(PJ_CONTEXT *ctx, + const PJ_OBJ *prime_meridian, double *out_longitude, double *out_unit_conv_factor, const char **out_unit_name); -PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordoperation(const PJ_OBJ *crs, +PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordoperation(PJ_CONTEXT *ctx, + const PJ_OBJ *crs, const char **out_method_name, const char **out_method_auth_name, const char **out_method_code); -int PROJ_DLL proj_coordoperation_is_instanciable(const PJ_OBJ *coordoperation); +int PROJ_DLL proj_coordoperation_is_instanciable(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation); -int PROJ_DLL proj_coordoperation_get_param_count(const PJ_OBJ *coordoperation); +int PROJ_DLL proj_coordoperation_get_param_count(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation); -int PROJ_DLL proj_coordoperation_get_param_index(const PJ_OBJ *coordoperation, +int PROJ_DLL proj_coordoperation_get_param_index(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation, const char *name); -int PROJ_DLL proj_coordoperation_get_param(const PJ_OBJ *coordoperation, +int PROJ_DLL proj_coordoperation_get_param(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation, int index, const char **out_name, const char **out_auth_name, @@ -854,9 +883,11 @@ int PROJ_DLL proj_coordoperation_get_param(const PJ_OBJ *coordoperation, double *out_unit_conv_factor, const char **out_unit_name); -int PROJ_DLL proj_coordoperation_get_grid_used_count(const PJ_OBJ *coordoperation); +int PROJ_DLL proj_coordoperation_get_grid_used_count(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation); -int PROJ_DLL proj_coordoperation_get_grid_used(const PJ_OBJ *coordoperation, +int PROJ_DLL proj_coordoperation_get_grid_used(PJ_CONTEXT *ctx, + const PJ_OBJ *coordoperation, int index, const char **out_short_name, const char **out_full_name, @@ -866,7 +897,8 @@ int PROJ_DLL proj_coordoperation_get_grid_used(const PJ_OBJ *coordoperation, int *out_open_license, int *out_available); -double PROJ_DLL proj_coordoperation_get_accuracy(const PJ_OBJ* obj); +double PROJ_DLL proj_coordoperation_get_accuracy(PJ_CONTEXT *ctx, + const PJ_OBJ* obj); /**@}*/ @@ -960,6 +992,7 @@ PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( PJ_OBJ* ellipsoidalCS); PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs_from_datum( + PJ_CONTEXT *ctx, const char *crsName, PJ_OBJ* datum, PJ_OBJ* ellipsoidalCS); @@ -978,25 +1011,31 @@ PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs( double linearUnitsConv); PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs_from_datum( + PJ_CONTEXT *ctx, const char *crsName, const PJ_OBJ* datum, const char *linearUnits, double linearUnitsConv); -PJ_OBJ PROJ_DLL *proj_obj_alter_name(const PJ_OBJ* obj, const char* name); +PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, const char* name); -PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(const PJ_OBJ* obj, +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, const PJ_OBJ* newGeodCRS); -PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(const PJ_OBJ* obj, +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, const char *angularUnits, double angularUnitsConv); -PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(const PJ_OBJ* obj, +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, const char *linearUnits, double linearUnitsConv); -PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(const PJ_OBJ* obj, +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, const char *linearUnits, double linearUnitsConv, int convertToNewUnit); @@ -1033,16 +1072,19 @@ PJ_OBJ PROJ_DLL *proj_obj_create_conversion(PJ_CONTEXT *ctx, int param_count, const PJ_PARAM_DESCRIPTION* params); -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs(const char* crs_name, +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs(PJ_CONTEXT *ctx, + const char* crs_name, const PJ_OBJ* geodetic_crs, const PJ_OBJ* conversion, const PJ_OBJ* coordinate_system); -PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs(const PJ_OBJ *base_crs, +PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs(PJ_CONTEXT *ctx, + const PJ_OBJ *base_crs, const PJ_OBJ *hub_crs, const PJ_OBJ *transformation); -PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(const PJ_OBJ *crs); +PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_CONTEXT *ctx, + const PJ_OBJ *crs); /* BEGIN: Generated by scripts/create_c_api_projections.py*/ PJ_OBJ PROJ_DLL *proj_obj_create_conversion_utm( diff --git a/src/proj_4D_api.c b/src/proj_4D_api.c index 6afabcaa..6ba56764 100644 --- a/src/proj_4D_api.c +++ b/src/proj_4D_api.c @@ -771,6 +771,7 @@ PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *source_crs, const char if( area && area->bbox_set ) { proj_operation_factory_context_set_area_of_interest( + ctx, operation_ctx, area->west_lon_degree, area->south_lat_degree, @@ -779,9 +780,9 @@ PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *source_crs, const char } proj_operation_factory_context_set_grid_availability_use( - operation_ctx, PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID); + ctx, operation_ctx, PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID); - op_list = proj_obj_create_operations(src, dst, operation_ctx); + op_list = proj_obj_create_operations(ctx, src, dst, operation_ctx); proj_operation_factory_context_unref(operation_ctx); proj_obj_unref(src); @@ -796,13 +797,13 @@ PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *source_crs, const char return NULL; } - op = proj_obj_list_get(op_list, 0); + op = proj_obj_list_get(ctx, op_list, 0); proj_obj_list_unref(op_list); if( !op ) { return NULL; } - proj_string = proj_obj_as_proj_string(op, PJ_PROJ_5, NULL); + proj_string = proj_obj_as_proj_string(ctx, op, PJ_PROJ_5, NULL); if( !proj_string) { proj_obj_unref(op); return NULL; diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index e033c0c8..51de990b 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -198,13 +198,14 @@ TEST_F(CApi, proj_obj_as_wkt) { ASSERT_NE(obj, nullptr); { - auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2018, nullptr); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT2_2018, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("GEOGCRS[") == 0) << wkt; } { - auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2018_SIMPLIFIED, nullptr); + auto wkt = + proj_obj_as_wkt(m_ctxt, obj, PJ_WKT2_2018_SIMPLIFIED, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("GEOGCRS[") == 0) << wkt; EXPECT_TRUE(std::string(wkt).find("ANGULARUNIT[") == std::string::npos) @@ -212,13 +213,14 @@ TEST_F(CApi, proj_obj_as_wkt) { } { - auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2015, nullptr); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT2_2015, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("GEODCRS[") == 0) << wkt; } { - auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2015_SIMPLIFIED, nullptr); + auto wkt = + proj_obj_as_wkt(m_ctxt, obj, PJ_WKT2_2015_SIMPLIFIED, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("GEODCRS[") == 0) << wkt; EXPECT_TRUE(std::string(wkt).find("ANGULARUNIT[") == std::string::npos) @@ -226,13 +228,13 @@ TEST_F(CApi, proj_obj_as_wkt) { } { - auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, nullptr); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_GDAL, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("GEOGCS[\"WGS 84\"") == 0) << wkt; } { - auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_ESRI, nullptr); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_ESRI, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("GEOGCS[\"GCS_WGS_1984\"") == 0) << wkt; @@ -241,7 +243,7 @@ TEST_F(CApi, proj_obj_as_wkt) { // MULTILINE=NO { const char *const options[] = {"MULTILINE=NO", nullptr}; - auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, options); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_GDAL, options); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("\n") == std::string::npos) << wkt; } @@ -249,7 +251,7 @@ TEST_F(CApi, proj_obj_as_wkt) { // INDENTATION_WIDTH=2 { const char *const options[] = {"INDENTATION_WIDTH=2", nullptr}; - auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, options); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_GDAL, options); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("\n DATUM") != std::string::npos) << wkt; @@ -258,7 +260,7 @@ TEST_F(CApi, proj_obj_as_wkt) { // OUTPUT_AXIS=NO { const char *const options[] = {"OUTPUT_AXIS=NO", nullptr}; - auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, options); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_GDAL, options); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("AXIS") == std::string::npos) << wkt; } @@ -266,7 +268,7 @@ TEST_F(CApi, proj_obj_as_wkt) { // OUTPUT_AXIS=AUTO { const char *const options[] = {"OUTPUT_AXIS=AUTO", nullptr}; - auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, options); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_GDAL, options); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("AXIS") == std::string::npos) << wkt; } @@ -274,7 +276,7 @@ TEST_F(CApi, proj_obj_as_wkt) { // OUTPUT_AXIS=YES { const char *const options[] = {"OUTPUT_AXIS=YES", nullptr}; - auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, options); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_GDAL, options); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("AXIS") != std::string::npos) << wkt; } @@ -282,7 +284,7 @@ TEST_F(CApi, proj_obj_as_wkt) { // unsupported option { const char *const options[] = {"unsupported=yes", nullptr}; - auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2018, options); + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT2_2018, options); EXPECT_EQ(wkt, nullptr); } } @@ -297,7 +299,7 @@ TEST_F(CApi, proj_obj_as_wkt_incompatible_WKT1) { ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); - auto wkt1_GDAL = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, nullptr); + auto wkt1_GDAL = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_GDAL, nullptr); ASSERT_EQ(wkt1_GDAL, nullptr); } @@ -313,7 +315,7 @@ TEST_F(CApi, proj_obj_as_proj_string) { ASSERT_NE(obj, nullptr); { - auto proj_5 = proj_obj_as_proj_string(obj, PJ_PROJ_5, nullptr); + auto proj_5 = proj_obj_as_proj_string(m_ctxt, obj, PJ_PROJ_5, nullptr); ASSERT_NE(proj_5, nullptr); EXPECT_EQ(std::string(proj_5), "+proj=pipeline +step +proj=longlat " "+ellps=WGS84 +step +proj=unitconvert " @@ -321,7 +323,7 @@ TEST_F(CApi, proj_obj_as_proj_string) { "+proj=axisswap +order=2,1"); } { - auto proj_4 = proj_obj_as_proj_string(obj, PJ_PROJ_4, nullptr); + auto proj_4 = proj_obj_as_proj_string(m_ctxt, obj, PJ_PROJ_4, nullptr); ASSERT_NE(proj_4, nullptr); EXPECT_EQ(std::string(proj_4), "+proj=longlat +datum=WGS84 +no_defs"); } @@ -337,7 +339,7 @@ TEST_F(CApi, proj_obj_as_proj_string_incompatible_WKT1) { ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); - auto str = proj_obj_as_proj_string(obj, PJ_PROJ_5, nullptr); + auto str = proj_obj_as_proj_string(m_ctxt, obj, PJ_PROJ_5, nullptr); ASSERT_EQ(str, nullptr); } @@ -349,7 +351,7 @@ TEST_F(CApi, proj_obj_as_proj_string_etmerc_option_yes) { ASSERT_NE(obj, nullptr); const char *options[] = {"USE_ETMERC=YES", nullptr}; - auto str = proj_obj_as_proj_string(obj, PJ_PROJ_4, options); + auto str = proj_obj_as_proj_string(m_ctxt, obj, PJ_PROJ_4, options); ASSERT_NE(str, nullptr); EXPECT_EQ(str, std::string("+proj=etmerc +lat_0=0 +lon_0=0 +k=1 +x_0=0 " "+y_0=0 +datum=WGS84 +units=m +no_defs")); @@ -364,7 +366,7 @@ TEST_F(CApi, proj_obj_as_proj_string_etmerc_option_no) { ASSERT_NE(obj, nullptr); const char *options[] = {"USE_ETMERC=NO", nullptr}; - auto str = proj_obj_as_proj_string(obj, PJ_PROJ_4, options); + auto str = proj_obj_as_proj_string(m_ctxt, obj, PJ_PROJ_4, options); ASSERT_NE(str, nullptr); EXPECT_EQ(str, std::string("+proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 " "+x_0=500000 +y_0=0 +datum=WGS84 +units=m " @@ -379,11 +381,11 @@ TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84) { ObjectKeeper keeper(crs); ASSERT_NE(crs, nullptr); - auto res = proj_obj_crs_create_bound_crs_to_WGS84(crs); + auto res = proj_obj_crs_create_bound_crs_to_WGS84(m_ctxt, crs); ObjectKeeper keeper_res(res); ASSERT_NE(res, nullptr); - auto proj_4 = proj_obj_as_proj_string(res, PJ_PROJ_4, nullptr); + auto proj_4 = proj_obj_as_proj_string(m_ctxt, res, PJ_PROJ_4, nullptr); ASSERT_NE(proj_4, nullptr); EXPECT_EQ(std::string(proj_4), "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 " @@ -391,20 +393,21 @@ TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84) { "+towgs84=2.329,-147.042,-92.08,-0.309,0.325,0.497,5.69 " "+units=m +no_defs"); - auto base_crs = proj_obj_get_source_crs(res); + auto base_crs = proj_obj_get_source_crs(m_ctxt, res); ObjectKeeper keeper_base_crs(base_crs); ASSERT_NE(base_crs, nullptr); - auto hub_crs = proj_obj_get_target_crs(res); + auto hub_crs = proj_obj_get_target_crs(m_ctxt, res); ObjectKeeper keeper_hub_crs(hub_crs); ASSERT_NE(hub_crs, nullptr); auto transf = - proj_obj_crs_get_coordoperation(res, nullptr, nullptr, nullptr); + proj_obj_crs_get_coordoperation(m_ctxt, res, nullptr, nullptr, nullptr); ObjectKeeper keeper_transf(transf); ASSERT_NE(transf, nullptr); - auto res2 = proj_obj_crs_create_bound_crs(base_crs, hub_crs, transf); + auto res2 = + proj_obj_crs_create_bound_crs(m_ctxt, base_crs, hub_crs, transf); ObjectKeeper keeper_res2(res2); ASSERT_NE(res2, nullptr); @@ -423,7 +426,7 @@ TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84_on_invalid_type) { ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); - auto res = proj_obj_crs_create_bound_crs_to_WGS84(obj); + auto res = proj_obj_crs_create_bound_crs_to_WGS84(m_ctxt, obj); ASSERT_EQ(res, nullptr); } @@ -666,7 +669,7 @@ TEST_F(CApi, proj_crs) { ObjectKeeper keeper(crs); EXPECT_TRUE(proj_obj_is_crs(crs)); - auto geodCRS = proj_obj_crs_get_geodetic_crs(crs); + auto geodCRS = proj_obj_crs_get_geodetic_crs(m_ctxt, crs); ASSERT_NE(geodCRS, nullptr); ObjectKeeper keeper_geogCRS(geodCRS); EXPECT_TRUE(proj_obj_is_crs(geodCRS)); @@ -674,11 +677,11 @@ TEST_F(CApi, proj_crs) { ASSERT_TRUE(geogCRS_name != nullptr); EXPECT_EQ(geogCRS_name, std::string("WGS 84")); - auto h_datum = proj_obj_crs_get_horizontal_datum(crs); + auto h_datum = proj_obj_crs_get_horizontal_datum(m_ctxt, crs); ASSERT_NE(h_datum, nullptr); ObjectKeeper keeper_h_datum(h_datum); - auto datum = proj_obj_crs_get_datum(crs); + auto datum = proj_obj_crs_get_datum(m_ctxt, crs); ASSERT_NE(datum, nullptr); ObjectKeeper keeper_datum(datum); @@ -688,30 +691,30 @@ TEST_F(CApi, proj_crs) { ASSERT_TRUE(datum_name != nullptr); EXPECT_EQ(datum_name, std::string("World Geodetic System 1984")); - auto ellipsoid = proj_obj_get_ellipsoid(crs); + auto ellipsoid = proj_obj_get_ellipsoid(m_ctxt, crs); ASSERT_NE(ellipsoid, nullptr); ObjectKeeper keeper_ellipsoid(ellipsoid); auto ellipsoid_name = proj_obj_get_name(ellipsoid); ASSERT_TRUE(ellipsoid_name != nullptr); EXPECT_EQ(ellipsoid_name, std::string("WGS 84")); - auto ellipsoid_from_datum = proj_obj_get_ellipsoid(datum); + auto ellipsoid_from_datum = proj_obj_get_ellipsoid(m_ctxt, datum); ASSERT_NE(ellipsoid_from_datum, nullptr); ObjectKeeper keeper_ellipsoid_from_datum(ellipsoid_from_datum); - EXPECT_EQ(proj_obj_get_ellipsoid(ellipsoid), nullptr); + EXPECT_EQ(proj_obj_get_ellipsoid(m_ctxt, ellipsoid), nullptr); EXPECT_FALSE(proj_obj_is_crs(ellipsoid)); double a; double b; int b_is_computed; double rf; - EXPECT_TRUE(proj_obj_ellipsoid_get_parameters(ellipsoid, nullptr, nullptr, - nullptr, nullptr)); - EXPECT_TRUE(proj_obj_ellipsoid_get_parameters(ellipsoid, &a, &b, + EXPECT_TRUE(proj_obj_ellipsoid_get_parameters(m_ctxt, ellipsoid, nullptr, + nullptr, nullptr, nullptr)); + EXPECT_TRUE(proj_obj_ellipsoid_get_parameters(m_ctxt, ellipsoid, &a, &b, &b_is_computed, &rf)); - EXPECT_FALSE( - proj_obj_ellipsoid_get_parameters(crs, &a, &b, &b_is_computed, &rf)); + EXPECT_FALSE(proj_obj_ellipsoid_get_parameters(m_ctxt, crs, &a, &b, + &b_is_computed, &rf)); EXPECT_EQ(a, 6378137); EXPECT_NEAR(b, 6356752.31424518, 1e-9); EXPECT_EQ(b_is_computed, 1); @@ -734,31 +737,31 @@ TEST_F(CApi, proj_obj_get_prime_meridian) { ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); - auto pm = proj_obj_get_prime_meridian(crs); + auto pm = proj_obj_get_prime_meridian(m_ctxt, crs); ASSERT_NE(pm, nullptr); ObjectKeeper keeper_pm(pm); auto pm_name = proj_obj_get_name(pm); ASSERT_TRUE(pm_name != nullptr); EXPECT_EQ(pm_name, std::string("Greenwich")); - EXPECT_EQ(proj_obj_get_prime_meridian(pm), nullptr); + EXPECT_EQ(proj_obj_get_prime_meridian(m_ctxt, pm), nullptr); - EXPECT_TRUE( - proj_obj_prime_meridian_get_parameters(pm, nullptr, nullptr, nullptr)); + EXPECT_TRUE(proj_obj_prime_meridian_get_parameters(m_ctxt, pm, nullptr, + nullptr, nullptr)); double longitude = -1; double longitude_unit = 0; const char *longitude_unit_name = nullptr; EXPECT_TRUE(proj_obj_prime_meridian_get_parameters( - pm, &longitude, &longitude_unit, &longitude_unit_name)); + m_ctxt, pm, &longitude, &longitude_unit, &longitude_unit_name)); EXPECT_EQ(longitude, 0); EXPECT_NEAR(longitude_unit, UnitOfMeasure::DEGREE.conversionToSI(), 1e-10); ASSERT_TRUE(longitude_unit_name != nullptr); EXPECT_EQ(longitude_unit_name, std::string("degree")); - auto datum = proj_obj_crs_get_horizontal_datum(crs); + auto datum = proj_obj_crs_get_horizontal_datum(m_ctxt, crs); ASSERT_NE(datum, nullptr); ObjectKeeper keeper_datum(datum); - auto pm_from_datum = proj_obj_get_prime_meridian(datum); + auto pm_from_datum = proj_obj_get_prime_meridian(m_ctxt, datum); ASSERT_NE(pm_from_datum, nullptr); ObjectKeeper keeper_pm_from_datum(pm_from_datum); } @@ -774,16 +777,16 @@ TEST_F(CApi, proj_crs_compound) { ObjectKeeper keeper(crs); EXPECT_EQ(proj_obj_get_type(crs), PJ_OBJ_TYPE_COMPOUND_CRS); - EXPECT_EQ(proj_obj_crs_get_sub_crs(crs, -1), nullptr); - EXPECT_EQ(proj_obj_crs_get_sub_crs(crs, 2), nullptr); + EXPECT_EQ(proj_obj_crs_get_sub_crs(m_ctxt, crs, -1), nullptr); + EXPECT_EQ(proj_obj_crs_get_sub_crs(m_ctxt, crs, 2), nullptr); - auto subcrs_horiz = proj_obj_crs_get_sub_crs(crs, 0); + auto subcrs_horiz = proj_obj_crs_get_sub_crs(m_ctxt, crs, 0); ASSERT_NE(subcrs_horiz, nullptr); ObjectKeeper keeper_subcrs_horiz(subcrs_horiz); EXPECT_EQ(proj_obj_get_type(subcrs_horiz), PJ_OBJ_TYPE_PROJECTED_CRS); - EXPECT_EQ(proj_obj_crs_get_sub_crs(subcrs_horiz, 0), nullptr); + EXPECT_EQ(proj_obj_crs_get_sub_crs(m_ctxt, subcrs_horiz, 0), nullptr); - auto subcrs_vertical = proj_obj_crs_get_sub_crs(crs, 1); + auto subcrs_vertical = proj_obj_crs_get_sub_crs(m_ctxt, crs, 1); ASSERT_NE(subcrs_vertical, nullptr); ObjectKeeper keeper_subcrs_vertical(subcrs_vertical); EXPECT_EQ(proj_obj_get_type(subcrs_vertical), PJ_OBJ_TYPE_VERTICAL_CRS); @@ -799,12 +802,12 @@ TEST_F(CApi, proj_obj_get_source_target_crs_bound_crs) { ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); - auto sourceCRS = proj_obj_get_source_crs(crs); + auto sourceCRS = proj_obj_get_source_crs(m_ctxt, crs); ASSERT_NE(sourceCRS, nullptr); ObjectKeeper keeper_sourceCRS(sourceCRS); EXPECT_EQ(std::string(proj_obj_get_name(sourceCRS)), "NTF (Paris)"); - auto targetCRS = proj_obj_get_target_crs(crs); + auto targetCRS = proj_obj_get_target_crs(m_ctxt, crs); ASSERT_NE(targetCRS, nullptr); ObjectKeeper keeper_targetCRS(targetCRS); EXPECT_EQ(std::string(proj_obj_get_name(targetCRS)), "WGS 84"); @@ -822,12 +825,12 @@ TEST_F(CApi, proj_obj_get_source_target_crs_transformation) { ASSERT_NE(obj, nullptr); ObjectKeeper keeper(obj); - auto sourceCRS = proj_obj_get_source_crs(obj); + auto sourceCRS = proj_obj_get_source_crs(m_ctxt, obj); ASSERT_NE(sourceCRS, nullptr); ObjectKeeper keeper_sourceCRS(sourceCRS); EXPECT_EQ(std::string(proj_obj_get_name(sourceCRS)), "NTF (Paris)"); - auto targetCRS = proj_obj_get_target_crs(obj); + auto targetCRS = proj_obj_get_target_crs(m_ctxt, obj); ASSERT_NE(targetCRS, nullptr); ObjectKeeper keeper_targetCRS(targetCRS); EXPECT_EQ(std::string(proj_obj_get_name(targetCRS)), "WGS 84"); @@ -843,7 +846,7 @@ TEST_F(CApi, proj_obj_get_source_crs_of_projected_crs) { ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); - auto sourceCRS = proj_obj_get_source_crs(crs); + auto sourceCRS = proj_obj_get_source_crs(m_ctxt, crs); ASSERT_NE(sourceCRS, nullptr); ObjectKeeper keeper_sourceCRS(sourceCRS); EXPECT_EQ(std::string(proj_obj_get_name(sourceCRS)), "WGS 84"); @@ -858,10 +861,10 @@ TEST_F(CApi, proj_obj_get_source_target_crs_conversion_without_crs) { ASSERT_NE(obj, nullptr); ObjectKeeper keeper(obj); - auto sourceCRS = proj_obj_get_source_crs(obj); + auto sourceCRS = proj_obj_get_source_crs(m_ctxt, obj); ASSERT_EQ(sourceCRS, nullptr); - auto targetCRS = proj_obj_get_target_crs(obj); + auto targetCRS = proj_obj_get_target_crs(m_ctxt, obj); ASSERT_EQ(targetCRS, nullptr); } @@ -873,10 +876,10 @@ TEST_F(CApi, proj_obj_get_source_target_crs_invalid_object) { ASSERT_NE(obj, nullptr); ObjectKeeper keeper(obj); - auto sourceCRS = proj_obj_get_source_crs(obj); + auto sourceCRS = proj_obj_get_source_crs(m_ctxt, obj); ASSERT_EQ(sourceCRS, nullptr); - auto targetCRS = proj_obj_get_target_crs(obj); + auto targetCRS = proj_obj_get_target_crs(m_ctxt, obj); ASSERT_EQ(targetCRS, nullptr); } @@ -965,21 +968,21 @@ TEST_F(CApi, conversion) { ObjectKeeper keeper(crs); { - auto conv = - proj_obj_crs_get_coordoperation(crs, nullptr, nullptr, nullptr); + auto conv = proj_obj_crs_get_coordoperation(m_ctxt, crs, nullptr, + nullptr, nullptr); ASSERT_NE(conv, nullptr); ObjectKeeper keeper_conv(conv); - ASSERT_EQ( - proj_obj_crs_get_coordoperation(conv, nullptr, nullptr, nullptr), - nullptr); + ASSERT_EQ(proj_obj_crs_get_coordoperation(m_ctxt, conv, nullptr, + nullptr, nullptr), + nullptr); } const char *methodName = nullptr; const char *methodAuthorityName = nullptr; const char *methodCode = nullptr; auto conv = proj_obj_crs_get_coordoperation( - crs, &methodName, &methodAuthorityName, &methodCode); + m_ctxt, crs, &methodName, &methodAuthorityName, &methodCode); ASSERT_NE(conv, nullptr); ObjectKeeper keeper_conv(conv); @@ -990,16 +993,17 @@ TEST_F(CApi, conversion) { EXPECT_EQ(methodAuthorityName, std::string("EPSG")); EXPECT_EQ(methodCode, std::string("9807")); - EXPECT_EQ(proj_coordoperation_get_param_count(conv), 5); - EXPECT_EQ(proj_coordoperation_get_param_index(conv, "foo"), -1); - EXPECT_EQ(proj_coordoperation_get_param_index(conv, "False easting"), 3); + EXPECT_EQ(proj_coordoperation_get_param_count(m_ctxt, conv), 5); + EXPECT_EQ(proj_coordoperation_get_param_index(m_ctxt, conv, "foo"), -1); + EXPECT_EQ( + proj_coordoperation_get_param_index(m_ctxt, conv, "False easting"), 3); - EXPECT_FALSE(proj_coordoperation_get_param(conv, -1, nullptr, nullptr, + EXPECT_FALSE(proj_coordoperation_get_param(m_ctxt, conv, -1, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr)); - EXPECT_FALSE(proj_coordoperation_get_param(conv, 5, nullptr, nullptr, + nullptr, nullptr, nullptr)); + EXPECT_FALSE(proj_coordoperation_get_param(m_ctxt, conv, 5, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr)); + nullptr, nullptr, nullptr)); const char *name = nullptr; const char *nameAuthorityName = nullptr; @@ -1009,8 +1013,8 @@ TEST_F(CApi, conversion) { double valueUnitConvFactor = 0; const char *valueUnitName = nullptr; EXPECT_TRUE(proj_coordoperation_get_param( - conv, 3, &name, &nameAuthorityName, &nameCode, &value, &valueString, - &valueUnitConvFactor, &valueUnitName)); + m_ctxt, conv, 3, &name, &nameAuthorityName, &nameCode, &value, + &valueString, &valueUnitConvFactor, &valueUnitName)); ASSERT_NE(name, nullptr); ASSERT_NE(nameAuthorityName, nullptr); ASSERT_NE(nameCode, nullptr); @@ -1035,7 +1039,7 @@ TEST_F(CApi, transformation_from_boundCRS) { ObjectKeeper keeper(crs); auto transf = - proj_obj_crs_get_coordoperation(crs, nullptr, nullptr, nullptr); + proj_obj_crs_get_coordoperation(m_ctxt, crs, nullptr, nullptr, nullptr); ASSERT_NE(transf, nullptr); ObjectKeeper keeper_transf(transf); } @@ -1049,7 +1053,7 @@ TEST_F(CApi, proj_coordoperation_get_grid_used) { ASSERT_NE(op, nullptr); ObjectKeeper keeper(op); - EXPECT_EQ(proj_coordoperation_get_grid_used_count(op), 1); + EXPECT_EQ(proj_coordoperation_get_grid_used_count(m_ctxt, op), 1); const char *shortName = nullptr; const char *fullName = nullptr; const char *packageName = nullptr; @@ -1057,16 +1061,16 @@ TEST_F(CApi, proj_coordoperation_get_grid_used) { int directDownload = 0; int openLicense = 0; int available = 0; - EXPECT_EQ(proj_coordoperation_get_grid_used(op, -1, nullptr, nullptr, + EXPECT_EQ(proj_coordoperation_get_grid_used(m_ctxt, op, -1, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr), + nullptr, nullptr, nullptr), 0); - EXPECT_EQ(proj_coordoperation_get_grid_used(op, 1, nullptr, nullptr, + EXPECT_EQ(proj_coordoperation_get_grid_used(m_ctxt, op, 1, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr), 0); EXPECT_EQ(proj_coordoperation_get_grid_used( - op, 0, &shortName, &fullName, &packageName, &url, + m_ctxt, op, 0, &shortName, &fullName, &packageName, &url, &directDownload, &openLicense, &available), 1); ASSERT_NE(shortName, nullptr); @@ -1091,7 +1095,7 @@ TEST_F(CApi, proj_coordoperation_is_instanciable) { nullptr); ASSERT_NE(op, nullptr); ObjectKeeper keeper(op); - EXPECT_EQ(proj_coordoperation_is_instanciable(op), 1); + EXPECT_EQ(proj_coordoperation_is_instanciable(m_ctxt, op), 1); } // --------------------------------------------------------------------------- @@ -1112,20 +1116,21 @@ TEST_F(CApi, proj_obj_create_operations) { ObjectKeeper keeper_target_crs(target_crs); proj_operation_factory_context_set_spatial_criterion( - ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); + m_ctxt, ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); proj_operation_factory_context_set_grid_availability_use( - ctxt, PROJ_GRID_AVAILABILITY_IGNORED); + m_ctxt, ctxt, PROJ_GRID_AVAILABILITY_IGNORED); - auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + auto res = proj_obj_create_operations(m_ctxt, source_crs, target_crs, ctxt); ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); EXPECT_EQ(proj_obj_list_get_count(res), 7); - EXPECT_EQ(proj_obj_list_get(res, -1), nullptr); - EXPECT_EQ(proj_obj_list_get(res, proj_obj_list_get_count(res)), nullptr); - auto op = proj_obj_list_get(res, 0); + EXPECT_EQ(proj_obj_list_get(m_ctxt, res, -1), nullptr); + EXPECT_EQ(proj_obj_list_get(m_ctxt, res, proj_obj_list_get_count(res)), + nullptr); + auto op = proj_obj_list_get(m_ctxt, res, 0); ASSERT_NE(op, nullptr); ObjectKeeper keeper_op(op); @@ -1154,11 +1159,12 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) { ASSERT_NE(ctxt, nullptr); ContextKeeper keeper_ctxt(ctxt); - auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + auto res = + proj_obj_create_operations(m_ctxt, source_crs, target_crs, ctxt); ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); EXPECT_EQ(proj_obj_list_get_count(res), 1); - auto op = proj_obj_list_get(res, 0); + auto op = proj_obj_list_get(m_ctxt, res, 0); ASSERT_NE(op, nullptr); ObjectKeeper keeper_op(op); @@ -1173,14 +1179,15 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) { auto ctxt = proj_create_operation_factory_context(m_ctxt, nullptr); ASSERT_NE(ctxt, nullptr); ContextKeeper keeper_ctxt(ctxt); - proj_operation_factory_context_set_allow_use_intermediate_crs(ctxt, - false); + proj_operation_factory_context_set_allow_use_intermediate_crs( + m_ctxt, ctxt, false); - auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + auto res = + proj_obj_create_operations(m_ctxt, source_crs, target_crs, ctxt); ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); EXPECT_EQ(proj_obj_list_get_count(res), 1); - auto op = proj_obj_list_get(res, 0); + auto op = proj_obj_list_get(m_ctxt, res, 0); ASSERT_NE(op, nullptr); ObjectKeeper keeper_op(op); @@ -1195,18 +1202,19 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) { ContextKeeper keeper_ctxt(ctxt); const char *pivots[] = {"EPSG", "4301", nullptr}; - proj_operation_factory_context_set_allowed_intermediate_crs(ctxt, - pivots); + proj_operation_factory_context_set_allowed_intermediate_crs( + m_ctxt, ctxt, pivots); proj_operation_factory_context_set_spatial_criterion( - ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); + m_ctxt, ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); proj_operation_factory_context_set_grid_availability_use( - ctxt, PROJ_GRID_AVAILABILITY_IGNORED); + m_ctxt, ctxt, PROJ_GRID_AVAILABILITY_IGNORED); - auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + auto res = + proj_obj_create_operations(m_ctxt, source_crs, target_crs, ctxt); ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); EXPECT_EQ(proj_obj_list_get_count(res), 6); - auto op = proj_obj_list_get(res, 0); + auto op = proj_obj_list_get(m_ctxt, res, 0); ASSERT_NE(op, nullptr); ObjectKeeper keeper_op(op); @@ -1223,19 +1231,20 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) { ContextKeeper keeper_ctxt(ctxt); const char *pivots[] = {"EPSG", "4612", nullptr}; - proj_operation_factory_context_set_allowed_intermediate_crs(ctxt, - pivots); + proj_operation_factory_context_set_allowed_intermediate_crs( + m_ctxt, ctxt, pivots); proj_operation_factory_context_set_spatial_criterion( - ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); + m_ctxt, ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); proj_operation_factory_context_set_grid_availability_use( - ctxt, PROJ_GRID_AVAILABILITY_IGNORED); + m_ctxt, ctxt, PROJ_GRID_AVAILABILITY_IGNORED); - auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + auto res = + proj_obj_create_operations(m_ctxt, source_crs, target_crs, ctxt); ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); // includes 2 results from ESRI EXPECT_EQ(proj_obj_list_get_count(res), 4); - auto op = proj_obj_list_get(res, 0); + auto op = proj_obj_list_get(m_ctxt, res, 0); ASSERT_NE(op, nullptr); ObjectKeeper keeper_op(op); @@ -1406,13 +1415,13 @@ TEST_F(CApi, proj_obj_identify) { ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); { - auto res = proj_obj_identify(obj, nullptr, nullptr, nullptr); + auto res = proj_obj_identify(m_ctxt, obj, nullptr, nullptr, nullptr); ObjListKeeper keeper_res(res); EXPECT_EQ(proj_obj_list_get_count(res), 1); } { int *confidence = nullptr; - auto res = proj_obj_identify(obj, "EPSG", nullptr, &confidence); + auto res = proj_obj_identify(m_ctxt, obj, "EPSG", nullptr, &confidence); ObjListKeeper keeper_res(res); EXPECT_EQ(proj_obj_list_get_count(res), 1); EXPECT_EQ(confidence[0], 100); @@ -1425,7 +1434,8 @@ TEST_F(CApi, proj_obj_identify) { .c_str(), nullptr); ObjectKeeper keeperEllps(objEllps); - auto res = proj_obj_identify(objEllps, nullptr, nullptr, nullptr); + auto res = + proj_obj_identify(m_ctxt, objEllps, nullptr, nullptr, nullptr); ObjListKeeper keeper_res(res); EXPECT_EQ(res, nullptr); } @@ -1439,14 +1449,15 @@ TEST_F(CApi, proj_obj_get_area_of_use) { m_ctxt, "EPSG", "4326", PJ_OBJ_CATEGORY_CRS, false, nullptr); ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); - EXPECT_TRUE(proj_obj_get_area_of_use(crs, nullptr, nullptr, nullptr, - nullptr, nullptr)); + EXPECT_TRUE(proj_obj_get_area_of_use(m_ctxt, crs, nullptr, nullptr, + nullptr, nullptr, nullptr)); const char *name = nullptr; double w; double s; double e; double n; - EXPECT_TRUE(proj_obj_get_area_of_use(crs, &w, &s, &e, &n, &name)); + EXPECT_TRUE( + proj_obj_get_area_of_use(m_ctxt, crs, &w, &s, &e, &n, &name)); EXPECT_EQ(w, -180); EXPECT_EQ(s, -90); EXPECT_EQ(e, 180); @@ -1459,8 +1470,8 @@ TEST_F(CApi, proj_obj_get_area_of_use) { proj_obj_create_from_user_input(m_ctxt, "+proj=longlat", nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); - EXPECT_FALSE(proj_obj_get_area_of_use(obj, nullptr, nullptr, nullptr, - nullptr, nullptr)); + EXPECT_FALSE(proj_obj_get_area_of_use(m_ctxt, obj, nullptr, nullptr, + nullptr, nullptr, nullptr)); } } @@ -1472,7 +1483,7 @@ TEST_F(CApi, proj_coordoperation_get_accuracy) { m_ctxt, "EPSG", "4326", PJ_OBJ_CATEGORY_CRS, false, nullptr); ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); - EXPECT_EQ(proj_coordoperation_get_accuracy(crs), -1.0); + EXPECT_EQ(proj_coordoperation_get_accuracy(m_ctxt, crs), -1.0); } { auto obj = proj_obj_create_from_database( @@ -1480,14 +1491,14 @@ TEST_F(CApi, proj_coordoperation_get_accuracy) { nullptr); ASSERT_NE(obj, nullptr); ObjectKeeper keeper(obj); - EXPECT_EQ(proj_coordoperation_get_accuracy(obj), 16.0); + EXPECT_EQ(proj_coordoperation_get_accuracy(m_ctxt, obj), 16.0); } { auto obj = proj_obj_create_from_user_input(m_ctxt, "+proj=helmert", nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); - EXPECT_EQ(proj_coordoperation_get_accuracy(obj), -1.0); + EXPECT_EQ(proj_coordoperation_get_accuracy(m_ctxt, obj), -1.0); } } @@ -1517,12 +1528,12 @@ TEST_F(CApi, proj_obj_create_geographic_crs) { EXPECT_TRUE(proj_obj_is_equivalent_to(obj, objRef, PJ_COMP_EQUIVALENT)); - auto datum = proj_obj_crs_get_datum(obj); + auto datum = proj_obj_crs_get_datum(m_ctxt, obj); ObjectKeeper keeper_datum(datum); ASSERT_NE(datum, nullptr); - auto obj2 = - proj_obj_create_geographic_crs_from_datum("WGS 84", datum, cs); + auto obj2 = proj_obj_create_geographic_crs_from_datum(m_ctxt, "WGS 84", + datum, cs); ObjectKeeper keeperObj(obj2); ASSERT_NE(obj2, nullptr); @@ -1558,12 +1569,12 @@ TEST_F(CApi, proj_obj_create_geocentric_crs) { EXPECT_TRUE(proj_obj_is_equivalent_to(obj, objRef, PJ_COMP_EQUIVALENT)); - auto datum = proj_obj_crs_get_datum(obj); + auto datum = proj_obj_crs_get_datum(m_ctxt, obj); ObjectKeeper keeper_datum(datum); ASSERT_NE(datum, nullptr); - auto obj2 = proj_obj_create_geocentric_crs_from_datum("WGS 84", datum, - "Metre", 1.0); + auto obj2 = proj_obj_create_geocentric_crs_from_datum( + m_ctxt, "WGS 84", datum, "Metre", 1.0); ObjectKeeper keeperObj(obj2); ASSERT_NE(obj2, nullptr); @@ -2006,22 +2017,22 @@ TEST_F(CApi, proj_obj_cs_get_axis_info) { ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); - auto cs = proj_obj_crs_get_coordinate_system(crs); + auto cs = proj_obj_crs_get_coordinate_system(m_ctxt, crs); ASSERT_NE(cs, nullptr); ObjectKeeper keeperCs(cs); - EXPECT_EQ(proj_obj_cs_get_type(cs), PJ_CS_TYPE_ELLIPSOIDAL); + EXPECT_EQ(proj_obj_cs_get_type(m_ctxt, cs), PJ_CS_TYPE_ELLIPSOIDAL); - EXPECT_EQ(proj_obj_cs_get_axis_count(cs), 2); + EXPECT_EQ(proj_obj_cs_get_axis_count(m_ctxt, cs), 2); - EXPECT_FALSE(proj_obj_cs_get_axis_info(cs, -1, nullptr, nullptr, + EXPECT_FALSE(proj_obj_cs_get_axis_info(m_ctxt, cs, -1, nullptr, nullptr, nullptr, nullptr, nullptr)); - EXPECT_FALSE(proj_obj_cs_get_axis_info(cs, 2, nullptr, nullptr, nullptr, - nullptr, nullptr)); + EXPECT_FALSE(proj_obj_cs_get_axis_info(m_ctxt, cs, 2, nullptr, nullptr, + nullptr, nullptr, nullptr)); - EXPECT_TRUE(proj_obj_cs_get_axis_info(cs, 0, nullptr, nullptr, nullptr, - nullptr, nullptr)); + EXPECT_TRUE(proj_obj_cs_get_axis_info(m_ctxt, cs, 0, nullptr, nullptr, + nullptr, nullptr, nullptr)); const char *name = nullptr; const char *abbrev = nullptr; @@ -2029,8 +2040,9 @@ TEST_F(CApi, proj_obj_cs_get_axis_info) { double unitConvFactor = 0.0; const char *unitName = nullptr; - EXPECT_TRUE(proj_obj_cs_get_axis_info(cs, 0, &name, &abbrev, &direction, - &unitConvFactor, &unitName)); + EXPECT_TRUE(proj_obj_cs_get_axis_info(m_ctxt, cs, 0, &name, &abbrev, + &direction, &unitConvFactor, + &unitName)); ASSERT_NE(name, nullptr); ASSERT_NE(abbrev, nullptr); ASSERT_NE(direction, nullptr); @@ -2049,13 +2061,13 @@ TEST_F(CApi, proj_obj_cs_get_axis_info) { nullptr); ASSERT_NE(obj, nullptr); ObjectKeeper keeper(obj); - EXPECT_EQ(proj_obj_crs_get_coordinate_system(obj), nullptr); + EXPECT_EQ(proj_obj_crs_get_coordinate_system(m_ctxt, obj), nullptr); - EXPECT_EQ(proj_obj_cs_get_type(obj), PJ_CS_TYPE_UNKNOWN); + EXPECT_EQ(proj_obj_cs_get_type(m_ctxt, obj), PJ_CS_TYPE_UNKNOWN); - EXPECT_EQ(proj_obj_cs_get_axis_count(obj), -1); + EXPECT_EQ(proj_obj_cs_get_axis_count(m_ctxt, obj), -1); - EXPECT_FALSE(proj_obj_cs_get_axis_info(obj, 0, nullptr, nullptr, + EXPECT_FALSE(proj_obj_cs_get_axis_info(m_ctxt, obj, 0, nullptr, nullptr, nullptr, nullptr, nullptr)); } } @@ -2075,7 +2087,7 @@ TEST_F(CApi, proj_obj_clone) { ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); - auto clone = proj_obj_clone(obj); + auto clone = proj_obj_clone(m_ctxt, obj); ObjectKeeper keeperClone(clone); ASSERT_NE(clone, nullptr); @@ -2097,23 +2109,26 @@ TEST_F(CApi, proj_obj_crs_alter_geodetic_crs) { ObjectKeeper keeper_newGeodCRS(newGeodCRS); ASSERT_NE(newGeodCRS, nullptr); - auto geodCRS = proj_obj_crs_get_geodetic_crs(projCRS); + auto geodCRS = proj_obj_crs_get_geodetic_crs(m_ctxt, projCRS); ObjectKeeper keeper_geodCRS(geodCRS); ASSERT_NE(geodCRS, nullptr); - auto geodCRSAltered = proj_obj_crs_alter_geodetic_crs(geodCRS, newGeodCRS); + auto geodCRSAltered = + proj_obj_crs_alter_geodetic_crs(m_ctxt, geodCRS, newGeodCRS); ObjectKeeper keeper_geodCRSAltered(geodCRSAltered); ASSERT_NE(geodCRSAltered, nullptr); EXPECT_TRUE( proj_obj_is_equivalent_to(geodCRSAltered, newGeodCRS, PJ_COMP_STRICT)); - auto projCRSAltered = proj_obj_crs_alter_geodetic_crs(projCRS, newGeodCRS); + auto projCRSAltered = + proj_obj_crs_alter_geodetic_crs(m_ctxt, projCRS, newGeodCRS); ObjectKeeper keeper_projCRSAltered(projCRSAltered); ASSERT_NE(projCRSAltered, nullptr); EXPECT_EQ(proj_obj_get_type(projCRSAltered), PJ_OBJ_TYPE_PROJECTED_CRS); - auto projCRSAltered_geodCRS = proj_obj_crs_get_geodetic_crs(projCRSAltered); + auto projCRSAltered_geodCRS = + proj_obj_crs_get_geodetic_crs(m_ctxt, projCRSAltered); ObjectKeeper keeper_projCRSAltered_geodCRS(projCRSAltered_geodCRS); ASSERT_NE(projCRSAltered_geodCRS, nullptr); @@ -2132,18 +2147,19 @@ TEST_F(CApi, proj_obj_crs_alter_cs_angular_unit) { ObjectKeeper keeper(crs); ASSERT_NE(crs, nullptr); - auto alteredCRS = proj_obj_crs_alter_cs_angular_unit(crs, "my unit", 2); + auto alteredCRS = + proj_obj_crs_alter_cs_angular_unit(m_ctxt, crs, "my unit", 2); ObjectKeeper keeper_alteredCRS(alteredCRS); ASSERT_NE(alteredCRS, nullptr); - auto cs = proj_obj_crs_get_coordinate_system(alteredCRS); + auto cs = proj_obj_crs_get_coordinate_system(m_ctxt, alteredCRS); ASSERT_NE(cs, nullptr); ObjectKeeper keeperCs(cs); double unitConvFactor = 0.0; const char *unitName = nullptr; - EXPECT_TRUE(proj_obj_cs_get_axis_info(cs, 0, nullptr, nullptr, nullptr, - &unitConvFactor, &unitName)); + EXPECT_TRUE(proj_obj_cs_get_axis_info(m_ctxt, cs, 0, nullptr, nullptr, + nullptr, &unitConvFactor, &unitName)); ASSERT_NE(unitName, nullptr); EXPECT_EQ(unitConvFactor, 2) << unitConvFactor; EXPECT_EQ(std::string(unitName), "my unit"); @@ -2159,18 +2175,19 @@ TEST_F(CApi, proj_obj_crs_alter_cs_linear_unit) { ObjectKeeper keeper(crs); ASSERT_NE(crs, nullptr); - auto alteredCRS = proj_obj_crs_alter_cs_linear_unit(crs, "my unit", 2); + auto alteredCRS = + proj_obj_crs_alter_cs_linear_unit(m_ctxt, crs, "my unit", 2); ObjectKeeper keeper_alteredCRS(alteredCRS); ASSERT_NE(alteredCRS, nullptr); - auto cs = proj_obj_crs_get_coordinate_system(alteredCRS); + auto cs = proj_obj_crs_get_coordinate_system(m_ctxt, alteredCRS); ASSERT_NE(cs, nullptr); ObjectKeeper keeperCs(cs); double unitConvFactor = 0.0; const char *unitName = nullptr; - EXPECT_TRUE(proj_obj_cs_get_axis_info(cs, 0, nullptr, nullptr, nullptr, - &unitConvFactor, &unitName)); + EXPECT_TRUE(proj_obj_cs_get_axis_info(m_ctxt, cs, 0, nullptr, nullptr, + nullptr, &unitConvFactor, &unitName)); ASSERT_NE(unitName, nullptr); EXPECT_EQ(unitConvFactor, 2) << unitConvFactor; EXPECT_EQ(std::string(unitName), "my unit"); @@ -2187,12 +2204,12 @@ TEST_F(CApi, proj_obj_crs_alter_parameters_linear_unit) { ASSERT_NE(crs, nullptr); { - auto alteredCRS = - proj_obj_crs_alter_parameters_linear_unit(crs, "my unit", 2, false); + auto alteredCRS = proj_obj_crs_alter_parameters_linear_unit( + m_ctxt, crs, "my unit", 2, false); ObjectKeeper keeper_alteredCRS(alteredCRS); ASSERT_NE(alteredCRS, nullptr); - auto wkt = proj_obj_as_wkt(alteredCRS, PJ_WKT2_2018, nullptr); + auto wkt = proj_obj_as_wkt(m_ctxt, alteredCRS, PJ_WKT2_2018, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("500000") != std::string::npos) << wkt; @@ -2201,12 +2218,12 @@ TEST_F(CApi, proj_obj_crs_alter_parameters_linear_unit) { } { - auto alteredCRS = - proj_obj_crs_alter_parameters_linear_unit(crs, "my unit", 2, true); + auto alteredCRS = proj_obj_crs_alter_parameters_linear_unit( + m_ctxt, crs, "my unit", 2, true); ObjectKeeper keeper_alteredCRS(alteredCRS); ASSERT_NE(alteredCRS, nullptr); - auto wkt = proj_obj_as_wkt(alteredCRS, PJ_WKT2_2018, nullptr); + auto wkt = proj_obj_as_wkt(m_ctxt, alteredCRS, PJ_WKT2_2018, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_TRUE(std::string(wkt).find("250000") != std::string::npos) << wkt; @@ -2222,7 +2239,7 @@ TEST_F(CApi, proj_obj_create_engineering_crs) { auto crs = proj_obj_create_engineering_crs(m_ctxt, "name"); ObjectKeeper keeper(crs); ASSERT_NE(crs, nullptr); - auto wkt = proj_obj_as_wkt(crs, PJ_WKT1_GDAL, nullptr); + auto wkt = proj_obj_as_wkt(m_ctxt, crs, PJ_WKT1_GDAL, nullptr); ASSERT_NE(wkt, nullptr); EXPECT_EQ(std::string(wkt), "LOCAL_CS[\"name\"]") << wkt; } @@ -2242,7 +2259,7 @@ TEST_F(CApi, proj_obj_alter_name) { ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); - auto alteredObj = proj_obj_alter_name(obj, "new name"); + auto alteredObj = proj_obj_alter_name(m_ctxt, obj, "new name"); ObjectKeeper keeper_alteredObj(alteredObj); ASSERT_NE(alteredObj, nullptr); @@ -2284,7 +2301,8 @@ TEST_F(CApi, proj_obj_create_projected_crs) { ObjectKeeper keeper_cs(cs); ASSERT_NE(cs, nullptr); - auto projCRS = proj_obj_create_projected_crs("my CRS", geogCRS, conv, cs); + auto projCRS = + proj_obj_create_projected_crs(m_ctxt, "my CRS", geogCRS, conv, cs); ObjectKeeper keeper_projCRS(projCRS); ASSERT_NE(projCRS, nullptr); } -- cgit v1.2.3 From 2d1deb2da9eab38febb4d4ce92faffa5d25a1e58 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 30 Nov 2018 02:54:00 +0100 Subject: C API: more camel_casification of parameters --- scripts/create_c_api_projections.py | 14 +- src/c_api.cpp | 1847 +++++++++++++++++++---------------- src/proj.h | 828 ++++++++-------- 3 files changed, 1408 insertions(+), 1281 deletions(-) diff --git a/scripts/create_c_api_projections.py b/scripts/create_c_api_projections.py index a551469d..897212ee 100755 --- a/scripts/create_c_api_projections.py +++ b/scripts/create_c_api_projections.py @@ -91,7 +91,7 @@ for sectiondef in compounddef.iter('sectiondef'): paramname = param.find('declname').text if paramname == 'properties': continue - params.append((type, paramname)) + params.append((type, snake_casify(paramname))) shortName = name[len('create'):] c_shortName = snake_casify(shortName) @@ -114,12 +114,12 @@ for sectiondef in compounddef.iter('sectiondef'): if has_angle: if has_output_params: decl += ",\n" - decl += " const char* angUnitName, double angUnitConvFactor" + decl += " const char* ang_unit_name, double ang_unit_conv_factor" has_output_params = True if has_linear: if has_output_params: decl += ",\n" - decl += " const char* linearUnitName, double linearUnitConvFactor" + decl += " const char* linear_unit_name, double linear_unit_conv_factor" decl += ")" header.write("PJ_OBJ PROJ_DLL *" + decl + ";\n\n") @@ -132,17 +132,17 @@ for sectiondef in compounddef.iter('sectiondef'): cppfile.write(" *\n") cppfile.write(" * See osgeo::proj::operation::Conversion::create" + shortName + "().\n") cppfile.write(" *\n") - cppfile.write(" * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor).\n") + cppfile.write(" * Linear parameters are expressed in (linear_unit_name, linear_unit_conv_factor).\n") if has_angle: - cppfile.write(" * Angular parameters are expressed in (angUnitName, angUnitConvFactor).\n") + cppfile.write(" * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor).\n") cppfile.write(" */\n") cppfile.write("PJ_OBJ* " + decl + "{\n"); cppfile.write(" SANITIZE_CTX(ctx);\n"); cppfile.write(" try {\n"); if has_linear: - cppfile.write(" UnitOfMeasure linearUnit(createLinearUnit(linearUnitName, linearUnitConvFactor));\n") + cppfile.write(" UnitOfMeasure linearUnit(createLinearUnit(linear_unit_name, linear_unit_conv_factor));\n") if has_angle: - cppfile.write(" UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor));\n") + cppfile.write(" UnitOfMeasure angUnit(createAngularUnit(ang_unit_name, ang_unit_conv_factor));\n") cppfile.write(" auto conv = Conversion::create" + shortName + "(PropertyMap()") for param in params: if param[0] in 'int': diff --git a/src/c_api.cpp b/src/c_api.cpp index 5f9ed5c2..c7ba992e 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -1820,31 +1820,33 @@ static UnitOfMeasure createAngularUnit(const char *name, double convFactor) { // --------------------------------------------------------------------------- static GeodeticReferenceFrameNNPtr createGeodeticReferenceFrame( - PJ_CONTEXT *ctx, const char *datumName, const char *ellipsoidName, - double semiMajorMetre, double invFlattening, const char *primeMeridianName, - double primeMeridianOffset, const char *angularUnits, - double angularUnitsConv) { + PJ_CONTEXT *ctx, const char *datum_name, const char *ellps_name, + double semi_major_metre, double inv_flattening, + const char *prime_meridian_name, double prime_meridian_offset, + const char *angular_units, double angular_units_conv) { const UnitOfMeasure angUnit( - createAngularUnit(angularUnits, angularUnitsConv)); + createAngularUnit(angular_units, angular_units_conv)); auto dbContext = getDBcontext(ctx); - auto body = Ellipsoid::guessBodyName(dbContext, semiMajorMetre); - auto ellpsName = createPropertyMapName(ellipsoidName); - auto ellps = - invFlattening != 0.0 - ? Ellipsoid::createFlattenedSphere( - ellpsName, Length(semiMajorMetre), Scale(invFlattening), body) - : Ellipsoid::createSphere(ellpsName, Length(semiMajorMetre), body); + auto body = Ellipsoid::guessBodyName(dbContext, semi_major_metre); + auto ellpsName = createPropertyMapName(ellps_name); + auto ellps = inv_flattening != 0.0 + ? Ellipsoid::createFlattenedSphere( + ellpsName, Length(semi_major_metre), + Scale(inv_flattening), body) + : Ellipsoid::createSphere(ellpsName, + Length(semi_major_metre), body); auto pm = PrimeMeridian::create( - PropertyMap().set(common::IdentifiedObject::NAME_KEY, - primeMeridianName ? primeMeridianName - : primeMeridianOffset == 0.0 - ? (ellps->celestialBody() == - Ellipsoid::EARTH - ? "Greenwich" - : "Reference meridian") - : "unnamed"), - Angle(primeMeridianOffset, angUnit)); - return GeodeticReferenceFrame::create(createPropertyMapName(datumName), + PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + prime_meridian_name + ? prime_meridian_name + : prime_meridian_offset == 0.0 + ? (ellps->celestialBody() == Ellipsoid::EARTH + ? "Greenwich" + : "Reference meridian") + : "unnamed"), + Angle(prime_meridian_offset, angUnit)); + return GeodeticReferenceFrame::create(createPropertyMapName(datum_name), ellps, util::optional(), pm); } @@ -1860,41 +1862,42 @@ static GeodeticReferenceFrameNNPtr createGeodeticReferenceFrame( * It should be used by at most one thread at a time. * * @param ctx PROJ context, or NULL for default context - * @param crsName Name of the GeographicCRS. Or NULL - * @param datumName Name of the GeodeticReferenceFrame. Or NULL - * @param ellipsoidName Name of the Ellipsoid. Or NULL - * @param semiMajorMetre Ellipsoid semi-major axis, in metres. - * @param invFlattening Ellipsoid inverse flattening. Or 0 for a sphere. - * @param primeMeridianName Name of the PrimeMeridian. Or NULL - * @param primeMeridianOffset Offset of the prime meridian, expressed in the + * @param crs_name Name of the GeographicCRS. Or NULL + * @param datum_name Name of the GeodeticReferenceFrame. Or NULL + * @param ellps_name Name of the Ellipsoid. Or NULL + * @param semi_major_metre Ellipsoid semi-major axis, in metres. + * @param inv_flattening Ellipsoid inverse flattening. Or 0 for a sphere. + * @param prime_meridian_name Name of the PrimeMeridian. Or NULL + * @param prime_meridian_offset Offset of the prime meridian, expressed in the * specified angular units. - * @param pmAngularUnits Name of the angular units. Or NULL for Degree - * @param pmAngularUnitsConv Conversion factor from the angular unit to radian. + * @param pm_angular_units Name of the angular units. Or NULL for Degree + * @param pm_angular_units_conv Conversion factor from the angular unit to + * radian. * Or - * 0 for Degree if angularUnits == NULL. Otherwise should be not NULL - * @param ellipsoidalCS Coordinate system. Must not be NULL. + * 0 for Degree if pm_angular_units == NULL. Otherwise should be not NULL + * @param ellipsoidal_cs Coordinate system. Must not be NULL. * * @return Object of type GeographicCRS that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_create_geographic_crs( - PJ_CONTEXT *ctx, const char *crsName, const char *datumName, - const char *ellipsoidName, double semiMajorMetre, double invFlattening, - const char *primeMeridianName, double primeMeridianOffset, - const char *pmAngularUnits, double pmAngularUnitsConv, - PJ_OBJ *ellipsoidalCS) { + PJ_CONTEXT *ctx, const char *crs_name, const char *datum_name, + const char *ellps_name, double semi_major_metre, double inv_flattening, + const char *prime_meridian_name, double prime_meridian_offset, + const char *pm_angular_units, double pm_angular_units_conv, + PJ_OBJ *ellipsoidal_cs) { SANITIZE_CTX(ctx); - auto cs = util::nn_dynamic_pointer_cast(ellipsoidalCS->obj); + auto cs = util::nn_dynamic_pointer_cast(ellipsoidal_cs->obj); if (!cs) { return nullptr; } try { auto datum = createGeodeticReferenceFrame( - ctx, datumName, ellipsoidName, semiMajorMetre, invFlattening, - primeMeridianName, primeMeridianOffset, pmAngularUnits, - pmAngularUnitsConv); - auto geogCRS = GeographicCRS::create(createPropertyMapName(crsName), + ctx, datum_name, ellps_name, semi_major_metre, inv_flattening, + prime_meridian_name, prime_meridian_offset, pm_angular_units, + pm_angular_units_conv); + auto geogCRS = GeographicCRS::create(createPropertyMapName(crs_name), datum, NN_NO_CHECK(cs)); return PJ_OBJ::create(geogCRS); } catch (const std::exception &e) { @@ -1912,17 +1915,17 @@ PJ_OBJ *proj_obj_create_geographic_crs( * It should be used by at most one thread at a time. * * @param ctx PROJ context, or NULL for default context - * @param crsName Name of the GeographicCRS. Or NULL + * @param crs_name Name of the GeographicCRS. Or NULL * @param datum Datum. Must not be NULL. - * @param ellipsoidalCS Coordinate system. Must not be NULL. + * @param ellipsoidal_cs Coordinate system. Must not be NULL. * * @return Object of type GeographicCRS that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_create_geographic_crs_from_datum(PJ_CONTEXT *ctx, - const char *crsName, + const char *crs_name, PJ_OBJ *datum, - PJ_OBJ *ellipsoidalCS) { + PJ_OBJ *ellipsoidal_cs) { SANITIZE_CTX(ctx); auto l_datum = @@ -1932,13 +1935,13 @@ PJ_OBJ *proj_obj_create_geographic_crs_from_datum(PJ_CONTEXT *ctx, "datum is not a GeodeticReferenceFrame"); return nullptr; } - auto cs = util::nn_dynamic_pointer_cast(ellipsoidalCS->obj); + auto cs = util::nn_dynamic_pointer_cast(ellipsoidal_cs->obj); if (!cs) { return nullptr; } try { auto geogCRS = - GeographicCRS::create(createPropertyMapName(crsName), + GeographicCRS::create(createPropertyMapName(crs_name), NN_NO_CHECK(l_datum), NN_NO_CHECK(cs)); return PJ_OBJ::create(geogCRS); } catch (const std::exception &e) { @@ -1956,42 +1959,43 @@ PJ_OBJ *proj_obj_create_geographic_crs_from_datum(PJ_CONTEXT *ctx, * It should be used by at most one thread at a time. * * @param ctx PROJ context, or NULL for default context - * @param crsName Name of the GeographicCRS. Or NULL - * @param datumName Name of the GeodeticReferenceFrame. Or NULL - * @param ellipsoidName Name of the Ellipsoid. Or NULL - * @param semiMajorMetre Ellipsoid semi-major axis, in metres. - * @param invFlattening Ellipsoid inverse flattening. Or 0 for a sphere. - * @param primeMeridianName Name of the PrimeMeridian. Or NULL - * @param primeMeridianOffset Offset of the prime meridian, expressed in the + * @param crs_name Name of the GeographicCRS. Or NULL + * @param datum_name Name of the GeodeticReferenceFrame. Or NULL + * @param ellps_name Name of the Ellipsoid. Or NULL + * @param semi_major_metre Ellipsoid semi-major axis, in metres. + * @param inv_flattening Ellipsoid inverse flattening. Or 0 for a sphere. + * @param prime_meridian_name Name of the PrimeMeridian. Or NULL + * @param prime_meridian_offset Offset of the prime meridian, expressed in the * specified angular units. - * @param angularUnits Name of the angular units. Or NULL for Degree - * @param angularUnitsConv Conversion factor from the angular unit to radian. Or - * 0 for Degree if angularUnits == NULL. Otherwise should be not NULL - * @param linearUnits Name of the linear units. Or NULL for Metre - * @param linearUnitsConv Conversion factor from the linear unit to metre. Or - * 0 for Metre if linearUnits == NULL. Otherwise should be not NULL + * @param angular_units Name of the angular units. Or NULL for Degree + * @param angular_units_conv Conversion factor from the angular unit to radian. + * Or + * 0 for Degree if angular_units == NULL. Otherwise should be not NULL + * @param linear_units Name of the linear units. Or NULL for Metre + * @param linear_units_conv Conversion factor from the linear unit to metre. Or + * 0 for Metre if linear_units == NULL. Otherwise should be not NULL * * @return Object of type GeodeticCRS that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_create_geocentric_crs( - PJ_CONTEXT *ctx, const char *crsName, const char *datumName, - const char *ellipsoidName, double semiMajorMetre, double invFlattening, - const char *primeMeridianName, double primeMeridianOffset, - const char *angularUnits, double angularUnitsConv, const char *linearUnits, - double linearUnitsConv) { + PJ_CONTEXT *ctx, const char *crs_name, const char *datum_name, + const char *ellps_name, double semi_major_metre, double inv_flattening, + const char *prime_meridian_name, double prime_meridian_offset, + const char *angular_units, double angular_units_conv, + const char *linear_units, double linear_units_conv) { SANITIZE_CTX(ctx); try { const UnitOfMeasure linearUnit( - createLinearUnit(linearUnits, linearUnitsConv)); + createLinearUnit(linear_units, linear_units_conv)); auto datum = createGeodeticReferenceFrame( - ctx, datumName, ellipsoidName, semiMajorMetre, invFlattening, - primeMeridianName, primeMeridianOffset, angularUnits, - angularUnitsConv); + ctx, datum_name, ellps_name, semi_major_metre, inv_flattening, + prime_meridian_name, prime_meridian_offset, angular_units, + angular_units_conv); auto geodCRS = - GeodeticCRS::create(createPropertyMapName(crsName), datum, + GeodeticCRS::create(createPropertyMapName(crs_name), datum, cs::CartesianCS::createGeocentric(linearUnit)); return PJ_OBJ::create(geodCRS); } catch (const std::exception &e) { @@ -2009,24 +2013,24 @@ PJ_OBJ *proj_obj_create_geocentric_crs( * It should be used by at most one thread at a time. * * @param ctx PROJ context, or NULL for default context - * @param crsName Name of the GeographicCRS. Or NULL + * @param crs_name Name of the GeographicCRS. Or NULL * @param datum Datum. Must not be NULL. - * @param linearUnits Name of the linear units. Or NULL for Metre - * @param linearUnitsConv Conversion factor from the linear unit to metre. Or - * 0 for Metre if linearUnits == NULL. Otherwise should be not NULL + * @param linear_units Name of the linear units. Or NULL for Metre + * @param linear_units_conv Conversion factor from the linear unit to metre. Or + * 0 for Metre if linear_units == NULL. Otherwise should be not NULL * * @return Object of type GeodeticCRS that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_create_geocentric_crs_from_datum(PJ_CONTEXT *ctx, - const char *crsName, + const char *crs_name, const PJ_OBJ *datum, - const char *linearUnits, - double linearUnitsConv) { + const char *linear_units, + double linear_units_conv) { SANITIZE_CTX(ctx); try { const UnitOfMeasure linearUnit( - createLinearUnit(linearUnits, linearUnitsConv)); + createLinearUnit(linear_units, linear_units_conv)); auto l_datum = util::nn_dynamic_pointer_cast(datum->obj); if (!l_datum) { @@ -2035,7 +2039,7 @@ PJ_OBJ *proj_obj_create_geocentric_crs_from_datum(PJ_CONTEXT *ctx, return nullptr; } auto geodCRS = GeodeticCRS::create( - createPropertyMapName(crsName), NN_NO_CHECK(l_datum), + createPropertyMapName(crs_name), NN_NO_CHECK(l_datum), cs::CartesianCS::createGeocentric(linearUnit)); return PJ_OBJ::create(geodCRS); } catch (const std::exception &e) { @@ -2080,10 +2084,10 @@ PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx, const PJ_OBJ *obj, /** \brief Return a copy of the CRS with its geodetic CRS changed * - * Currently, when obj is a GeodeticCRS, it returns a clone of newGeodCRS - * When obj is a ProjectedCRS, it replaces its base CRS with newGeodCRS. + * Currently, when obj is a GeodeticCRS, it returns a clone of new_geod_crs + * When obj is a ProjectedCRS, it replaces its base CRS with new_geod_crs. * When obj is a CompoundCRS, it replaces the GeodeticCRS part of the horizontal - * CRS with newGeodCRS. + * CRS with new_geod_crs. * In other cases, it returns a clone of obj. * * The returned object must be unreferenced with proj_obj_unref() after @@ -2092,18 +2096,18 @@ PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx, const PJ_OBJ *obj, * * @param ctx PROJ context, or NULL for default context * @param obj Object of type CRS. Must not be NULL - * @param newGeodCRS Object of type GeodeticCRS. Must not be NULL + * @param new_geod_crs Object of type GeodeticCRS. Must not be NULL * * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, const PJ_OBJ *obj, - const PJ_OBJ *newGeodCRS) { + const PJ_OBJ *new_geod_crs) { SANITIZE_CTX(ctx); - auto l_newGeodCRS = - util::nn_dynamic_pointer_cast(newGeodCRS->obj); - if (!l_newGeodCRS) { - proj_log_error(ctx, __FUNCTION__, "newGeodCRS is not a GeodeticCRS"); + auto l_new_geod_crs = + util::nn_dynamic_pointer_cast(new_geod_crs->obj); + if (!l_new_geod_crs) { + proj_log_error(ctx, __FUNCTION__, "new_geod_crs is not a GeodeticCRS"); return nullptr; } @@ -2114,7 +2118,8 @@ PJ_OBJ *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, const PJ_OBJ *obj, } try { - return PJ_OBJ::create(crs->alterGeodeticCRS(NN_NO_CHECK(l_newGeodCRS))); + return PJ_OBJ::create( + crs->alterGeodeticCRS(NN_NO_CHECK(l_new_geod_crs))); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; @@ -2133,16 +2138,17 @@ PJ_OBJ *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, const PJ_OBJ *obj, * * @param ctx PROJ context, or NULL for default context * @param obj Object of type CRS. Must not be NULL - * @param angularUnits Name of the angular units. Or NULL for Degree - * @param angularUnitsConv Conversion factor from the angular unit to radian. Or - * 0 for Degree if angularUnits == NULL. Otherwise should be not NULL + * @param angular_units Name of the angular units. Or NULL for Degree + * @param angular_units_conv Conversion factor from the angular unit to radian. + * Or + * 0 for Degree if angular_units == NULL. Otherwise should be not NULL * * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, - const char *angularUnits, - double angularUnitsConv) { + const char *angular_units, + double angular_units_conv) { SANITIZE_CTX(ctx); auto geodCRS = proj_obj_crs_get_geodetic_crs(ctx, obj); @@ -2158,7 +2164,7 @@ PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, PJ_OBJ *geogCRSAltered = nullptr; try { const UnitOfMeasure angUnit( - createAngularUnit(angularUnits, angularUnitsConv)); + createAngularUnit(angular_units, angular_units_conv)); geogCRSAltered = PJ_OBJ::create(GeographicCRS::create( createPropertyMapName(proj_obj_get_name(geodCRS)), geogCRS->datum(), geogCRS->datumEnsemble(), @@ -2188,16 +2194,16 @@ PJ_OBJ *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, * * @param ctx PROJ context, or NULL for default context * @param obj Object of type CRS. Must not be NULL - * @param linearUnits Name of the linear units. Or NULL for Metre - * @param linearUnitsConv Conversion factor from the linear unit to metre. Or - * 0 for Metre if linearUnits == NULL. Otherwise should be not NULL + * @param linear_units Name of the linear units. Or NULL for Metre + * @param linear_units_conv Conversion factor from the linear unit to metre. Or + * 0 for Metre if linear_units == NULL. Otherwise should be not NULL * * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, - const char *linearUnits, - double linearUnitsConv) { + const char *linear_units, + double linear_units_conv) { SANITIZE_CTX(ctx); auto crs = dynamic_cast(obj->obj.get()); if (!crs) { @@ -2206,7 +2212,7 @@ PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, try { const UnitOfMeasure linearUnit( - createLinearUnit(linearUnits, linearUnitsConv)); + createLinearUnit(linear_units, linear_units_conv)); return PJ_OBJ::create(crs->alterCSLinearUnit(linearUnit)); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2227,10 +2233,10 @@ PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, * * @param ctx PROJ context, or NULL for default context * @param obj Object of type ProjectedCRS. Must not be NULL - * @param linearUnits Name of the linear units. Or NULL for Metre - * @param linearUnitsConv Conversion factor from the linear unit to metre. Or - * 0 for Metre if linearUnits == NULL. Otherwise should be not NULL - * @param convertToNewUnit TRUE if exisiting values should be converted from + * @param linear_units Name of the linear units. Or NULL for Metre + * @param linear_units_conv Conversion factor from the linear unit to metre. Or + * 0 for Metre if linear_units == NULL. Otherwise should be not NULL + * @param convert_to_new_unit TRUE if exisiting values should be converted from * their current unit to the new unit. If FALSE, their value will be left * unchanged and the unit overriden (so the resulting CRS will not be * equivalent to the original one for reprojection purposes). @@ -2240,9 +2246,9 @@ PJ_OBJ *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, */ PJ_OBJ *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, const PJ_OBJ *obj, - const char *linearUnits, - double linearUnitsConv, - int convertToNewUnit) { + const char *linear_units, + double linear_units_conv, + int convert_to_new_unit) { SANITIZE_CTX(ctx); auto crs = dynamic_cast(obj->obj.get()); if (!crs) { @@ -2251,9 +2257,9 @@ PJ_OBJ *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, try { const UnitOfMeasure linearUnit( - createLinearUnit(linearUnits, linearUnitsConv)); + createLinearUnit(linear_units, linear_units_conv)); return PJ_OBJ::create(crs->alterParametersLinearUnit( - linearUnit, convertToNewUnit == TRUE)); + linearUnit, convert_to_new_unit == TRUE)); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); return nullptr; @@ -2269,17 +2275,17 @@ PJ_OBJ *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, * It should be used by at most one thread at a time. * * @param ctx PROJ context, or NULL for default context - * @param crsName CRS name. Or NULL. + * @param crs_name CRS name. Or NULL. * * @return Object that must be unreferenced with * proj_obj_unref(), or NULL in case of error. */ PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx, - const char *crsName) { + const char *crs_name) { SANITIZE_CTX(ctx); try { return PJ_OBJ::create(EngineeringCRS::create( - createPropertyMapName(crsName), + createPropertyMapName(crs_name), EngineeringDatum::create(PropertyMap()), CartesianCS::createEastingNorthing(UnitOfMeasure::METRE))); } catch (const std::exception &e) { @@ -2684,7 +2690,8 @@ static PJ_OBJ *proj_obj_create_conversion(const ConversionNNPtr &conv) { * * See osgeo::proj::operation::Conversion::createUTM(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_utm(PJ_CONTEXT *ctx, int zone, int north) { SANITIZE_CTX(ctx); @@ -2703,25 +2710,26 @@ PJ_OBJ *proj_obj_create_conversion_utm(PJ_CONTEXT *ctx, int zone, int north) { * * See osgeo::proj::operation::Conversion::createTransverseMercator(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_transverse_mercator( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createTransverseMercator( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2736,25 +2744,26 @@ PJ_OBJ *proj_obj_create_conversion_transverse_mercator( * See * osgeo::proj::operation::Conversion::createGaussSchreiberTransverseMercator(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createGaussSchreiberTransverseMercator( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2769,25 +2778,26 @@ PJ_OBJ *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( * See * osgeo::proj::operation::Conversion::createTransverseMercatorSouthOriented(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_transverse_mercator_south_oriented( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createTransverseMercatorSouthOriented( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2801,27 +2811,29 @@ PJ_OBJ *proj_obj_create_conversion_transverse_mercator_south_oriented( * * See osgeo::proj::operation::Conversion::createTwoPointEquidistant(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_two_point_equidistant( - PJ_CONTEXT *ctx, double latitudeFirstPoint, double longitudeFirstPoint, - double latitudeSecondPoint, double longitudeSeconPoint, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_first_point, double longitude_first_point, + double latitude_second_point, double longitude_secon_point, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createTwoPointEquidistant( - PropertyMap(), Angle(latitudeFirstPoint, angUnit), - Angle(longitudeFirstPoint, angUnit), - Angle(latitudeSecondPoint, angUnit), - Angle(longitudeSeconPoint, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_first_point, angUnit), + Angle(longitude_first_point, angUnit), + Angle(latitude_second_point, angUnit), + Angle(longitude_secon_point, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2835,23 +2847,25 @@ PJ_OBJ *proj_obj_create_conversion_two_point_equidistant( * * See osgeo::proj::operation::Conversion::createTunisiaMappingGrid(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_tunisia_mapping_grid( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createTunisiaMappingGrid( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2865,28 +2879,30 @@ PJ_OBJ *proj_obj_create_conversion_tunisia_mapping_grid( * * See osgeo::proj::operation::Conversion::createAlbersEqualArea(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_albers_equal_area( - PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, - double latitudeFirstParallel, double latitudeSecondParallel, - double eastingFalseOrigin, double northingFalseOrigin, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_false_origin, + double longitude_false_origin, double latitude_first_parallel, + double latitude_second_parallel, double easting_false_origin, + double northing_false_origin, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createAlbersEqualArea( - PropertyMap(), Angle(latitudeFalseOrigin, angUnit), - Angle(longitudeFalseOrigin, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(eastingFalseOrigin, linearUnit), - Length(northingFalseOrigin, linearUnit)); + PropertyMap(), Angle(latitude_false_origin, angUnit), + Angle(longitude_false_origin, angUnit), + Angle(latitude_first_parallel, angUnit), + Angle(latitude_second_parallel, angUnit), + Length(easting_false_origin, linearUnit), + Length(northing_false_origin, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2900,25 +2916,26 @@ PJ_OBJ *proj_obj_create_conversion_albers_equal_area( * * See osgeo::proj::operation::Conversion::createLambertConicConformal_1SP(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_1sp( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createLambertConicConformal_1SP( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2932,28 +2949,30 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_1sp( * * See osgeo::proj::operation::Conversion::createLambertConicConformal_2SP(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp( - PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, - double latitudeFirstParallel, double latitudeSecondParallel, - double eastingFalseOrigin, double northingFalseOrigin, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_false_origin, + double longitude_false_origin, double latitude_first_parallel, + double latitude_second_parallel, double easting_false_origin, + double northing_false_origin, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createLambertConicConformal_2SP( - PropertyMap(), Angle(latitudeFalseOrigin, angUnit), - Angle(longitudeFalseOrigin, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(eastingFalseOrigin, linearUnit), - Length(northingFalseOrigin, linearUnit)); + PropertyMap(), Angle(latitude_false_origin, angUnit), + Angle(longitude_false_origin, angUnit), + Angle(latitude_first_parallel, angUnit), + Angle(latitude_second_parallel, angUnit), + Length(easting_false_origin, linearUnit), + Length(northing_false_origin, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -2968,30 +2987,31 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp( * See * osgeo::proj::operation::Conversion::createLambertConicConformal_2SP_Michigan(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( - PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, - double latitudeFirstParallel, double latitudeSecondParallel, - double eastingFalseOrigin, double northingFalseOrigin, - double ellipsoidScalingFactor, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_false_origin, + double longitude_false_origin, double latitude_first_parallel, + double latitude_second_parallel, double easting_false_origin, + double northing_false_origin, double ellipsoid_scaling_factor, + const char *ang_unit_name, double ang_unit_conv_factor, + const char *linear_unit_name, double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createLambertConicConformal_2SP_Michigan( - PropertyMap(), Angle(latitudeFalseOrigin, angUnit), - Angle(longitudeFalseOrigin, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(eastingFalseOrigin, linearUnit), - Length(northingFalseOrigin, linearUnit), - Scale(ellipsoidScalingFactor)); + PropertyMap(), Angle(latitude_false_origin, angUnit), + Angle(longitude_false_origin, angUnit), + Angle(latitude_first_parallel, angUnit), + Angle(latitude_second_parallel, angUnit), + Length(easting_false_origin, linearUnit), + Length(northing_false_origin, linearUnit), + Scale(ellipsoid_scaling_factor)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3006,28 +3026,30 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( * See * osgeo::proj::operation::Conversion::createLambertConicConformal_2SP_Belgium(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( - PJ_CONTEXT *ctx, double latitudeFalseOrigin, double longitudeFalseOrigin, - double latitudeFirstParallel, double latitudeSecondParallel, - double eastingFalseOrigin, double northingFalseOrigin, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_false_origin, + double longitude_false_origin, double latitude_first_parallel, + double latitude_second_parallel, double easting_false_origin, + double northing_false_origin, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createLambertConicConformal_2SP_Belgium( - PropertyMap(), Angle(latitudeFalseOrigin, angUnit), - Angle(longitudeFalseOrigin, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(eastingFalseOrigin, linearUnit), - Length(northingFalseOrigin, linearUnit)); + PropertyMap(), Angle(latitude_false_origin, angUnit), + Angle(longitude_false_origin, angUnit), + Angle(latitude_first_parallel, angUnit), + Angle(latitude_second_parallel, angUnit), + Length(easting_false_origin, linearUnit), + Length(northing_false_origin, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3041,25 +3063,26 @@ PJ_OBJ *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( * * See osgeo::proj::operation::Conversion::createAzimuthalEquidistant(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_azimuthal_equidistant( - PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_nat_origin, double longitude_nat_origin, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createAzimuthalEquidistant( - PropertyMap(), Angle(latitudeNatOrigin, angUnit), - Angle(longitudeNatOrigin, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_nat_origin, angUnit), + Angle(longitude_nat_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3073,25 +3096,26 @@ PJ_OBJ *proj_obj_create_conversion_azimuthal_equidistant( * * See osgeo::proj::operation::Conversion::createGuamProjection(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_guam_projection( - PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_nat_origin, double longitude_nat_origin, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createGuamProjection( - PropertyMap(), Angle(latitudeNatOrigin, angUnit), - Angle(longitudeNatOrigin, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_nat_origin, angUnit), + Angle(longitude_nat_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3105,25 +3129,26 @@ PJ_OBJ *proj_obj_create_conversion_guam_projection( * * See osgeo::proj::operation::Conversion::createBonne(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_bonne( - PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_nat_origin, double longitude_nat_origin, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = Conversion::createBonne(PropertyMap(), - Angle(latitudeNatOrigin, angUnit), - Angle(longitudeNatOrigin, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); + auto conv = Conversion::createBonne( + PropertyMap(), Angle(latitude_nat_origin, angUnit), + Angle(longitude_nat_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3138,25 +3163,26 @@ PJ_OBJ *proj_obj_create_conversion_bonne( * See * osgeo::proj::operation::Conversion::createLambertCylindricalEqualAreaSpherical(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( - PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_first_parallel, + double longitude_nat_origin, double false_easting, double false_northing, + const char *ang_unit_name, double ang_unit_conv_factor, + const char *linear_unit_name, double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createLambertCylindricalEqualAreaSpherical( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(longitudeNatOrigin, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_first_parallel, angUnit), + Angle(longitude_nat_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3170,25 +3196,26 @@ PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( * * See osgeo::proj::operation::Conversion::createLambertCylindricalEqualArea(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area( - PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_first_parallel, + double longitude_nat_origin, double false_easting, double false_northing, + const char *ang_unit_name, double ang_unit_conv_factor, + const char *linear_unit_name, double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createLambertCylindricalEqualArea( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(longitudeNatOrigin, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_first_parallel, angUnit), + Angle(longitude_nat_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3202,23 +3229,25 @@ PJ_OBJ *proj_obj_create_conversion_lambert_cylindrical_equal_area( * * See osgeo::proj::operation::Conversion::createCassiniSoldner(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_cassini_soldner( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createCassiniSoldner( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3232,27 +3261,29 @@ PJ_OBJ *proj_obj_create_conversion_cassini_soldner( * * See osgeo::proj::operation::Conversion::createEquidistantConic(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_equidistant_conic( - PJ_CONTEXT *ctx, double centerLat, double centerLong, - double latitudeFirstParallel, double latitudeSecondParallel, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double latitude_first_parallel, double latitude_second_parallel, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createEquidistantConic( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), + Angle(latitude_first_parallel, angUnit), + Angle(latitude_second_parallel, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3266,23 +3297,27 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_conic( * * See osgeo::proj::operation::Conversion::createEckertI(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_conversion_eckert_i( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). + */ +PJ_OBJ *proj_obj_create_conversion_eckert_i(PJ_CONTEXT *ctx, double center_long, + double false_easting, + double false_northing, + const char *ang_unit_name, + double ang_unit_conv_factor, + const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = - Conversion::createEckertI(PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); + auto conv = Conversion::createEckertI( + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3296,23 +3331,25 @@ PJ_OBJ *proj_obj_create_conversion_eckert_i( * * See osgeo::proj::operation::Conversion::createEckertII(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_eckert_ii( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createEckertII( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3326,23 +3363,25 @@ PJ_OBJ *proj_obj_create_conversion_eckert_ii( * * See osgeo::proj::operation::Conversion::createEckertIII(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_eckert_iii( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createEckertIII( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3356,23 +3395,25 @@ PJ_OBJ *proj_obj_create_conversion_eckert_iii( * * See osgeo::proj::operation::Conversion::createEckertIV(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_eckert_iv( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createEckertIV( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3386,23 +3427,27 @@ PJ_OBJ *proj_obj_create_conversion_eckert_iv( * * See osgeo::proj::operation::Conversion::createEckertV(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_conversion_eckert_v( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). + */ +PJ_OBJ *proj_obj_create_conversion_eckert_v(PJ_CONTEXT *ctx, double center_long, + double false_easting, + double false_northing, + const char *ang_unit_name, + double ang_unit_conv_factor, + const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = - Conversion::createEckertV(PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); + auto conv = Conversion::createEckertV( + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3416,23 +3461,25 @@ PJ_OBJ *proj_obj_create_conversion_eckert_v( * * See osgeo::proj::operation::Conversion::createEckertVI(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_eckert_vi( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createEckertVI( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3446,25 +3493,26 @@ PJ_OBJ *proj_obj_create_conversion_eckert_vi( * * See osgeo::proj::operation::Conversion::createEquidistantCylindrical(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical( - PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_first_parallel, + double longitude_nat_origin, double false_easting, double false_northing, + const char *ang_unit_name, double ang_unit_conv_factor, + const char *linear_unit_name, double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createEquidistantCylindrical( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(longitudeNatOrigin, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_first_parallel, angUnit), + Angle(longitude_nat_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3479,25 +3527,26 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical( * See * osgeo::proj::operation::Conversion::createEquidistantCylindricalSpherical(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical_spherical( - PJ_CONTEXT *ctx, double latitudeFirstParallel, double longitudeNatOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_first_parallel, + double longitude_nat_origin, double false_easting, double false_northing, + const char *ang_unit_name, double ang_unit_conv_factor, + const char *linear_unit_name, double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createEquidistantCylindricalSpherical( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(longitudeNatOrigin, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_first_parallel, angUnit), + Angle(longitude_nat_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3511,23 +3560,27 @@ PJ_OBJ *proj_obj_create_conversion_equidistant_cylindrical_spherical( * * See osgeo::proj::operation::Conversion::createGall(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_conversion_gall( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). + */ +PJ_OBJ *proj_obj_create_conversion_gall(PJ_CONTEXT *ctx, double center_long, + double false_easting, + double false_northing, + const char *ang_unit_name, + double ang_unit_conv_factor, + const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = - Conversion::createGall(PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + Conversion::createGall(PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3541,23 +3594,25 @@ PJ_OBJ *proj_obj_create_conversion_gall( * * See osgeo::proj::operation::Conversion::createGoodeHomolosine(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_goode_homolosine( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createGoodeHomolosine( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3571,23 +3626,25 @@ PJ_OBJ *proj_obj_create_conversion_goode_homolosine( * * See osgeo::proj::operation::Conversion::createInterruptedGoodeHomolosine(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_interrupted_goode_homolosine( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createInterruptedGoodeHomolosine( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3602,23 +3659,25 @@ PJ_OBJ *proj_obj_create_conversion_interrupted_goode_homolosine( * * See osgeo::proj::operation::Conversion::createGeostationarySatelliteSweepX(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_x( - PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double height, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createGeostationarySatelliteSweepX( - PropertyMap(), Angle(centerLong, angUnit), - Length(height, linearUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(height, linearUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3633,23 +3692,25 @@ PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_x( * * See osgeo::proj::operation::Conversion::createGeostationarySatelliteSweepY(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_y( - PJ_CONTEXT *ctx, double centerLong, double height, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double height, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createGeostationarySatelliteSweepY( - PropertyMap(), Angle(centerLong, angUnit), - Length(height, linearUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(height, linearUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3663,23 +3724,25 @@ PJ_OBJ *proj_obj_create_conversion_geostationary_satellite_sweep_y( * * See osgeo::proj::operation::Conversion::createGnomonic(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_gnomonic( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createGnomonic( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3694,28 +3757,30 @@ PJ_OBJ *proj_obj_create_conversion_gnomonic( * See * osgeo::proj::operation::Conversion::createHotineObliqueMercatorVariantA(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( - PJ_CONTEXT *ctx, double latitudeProjectionCentre, - double longitudeProjectionCentre, double azimuthInitialLine, - double angleFromRectifiedToSkrewGrid, double scale, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_projection_centre, + double longitude_projection_centre, double azimuth_initial_line, + double angle_from_rectified_to_skrew_grid, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createHotineObliqueMercatorVariantA( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(longitudeProjectionCentre, angUnit), - Angle(azimuthInitialLine, angUnit), - Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_projection_centre, angUnit), + Angle(longitude_projection_centre, angUnit), + Angle(azimuth_initial_line, angUnit), + Angle(angle_from_rectified_to_skrew_grid, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3730,29 +3795,30 @@ PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( * See * osgeo::proj::operation::Conversion::createHotineObliqueMercatorVariantB(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( - PJ_CONTEXT *ctx, double latitudeProjectionCentre, - double longitudeProjectionCentre, double azimuthInitialLine, - double angleFromRectifiedToSkrewGrid, double scale, - double eastingProjectionCentre, double northingProjectionCentre, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_projection_centre, + double longitude_projection_centre, double azimuth_initial_line, + double angle_from_rectified_to_skrew_grid, double scale, + double easting_projection_centre, double northing_projection_centre, + const char *ang_unit_name, double ang_unit_conv_factor, + const char *linear_unit_name, double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createHotineObliqueMercatorVariantB( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(longitudeProjectionCentre, angUnit), - Angle(azimuthInitialLine, angUnit), - Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), - Length(eastingProjectionCentre, linearUnit), - Length(northingProjectionCentre, linearUnit)); + PropertyMap(), Angle(latitude_projection_centre, angUnit), + Angle(longitude_projection_centre, angUnit), + Angle(azimuth_initial_line, angUnit), + Angle(angle_from_rectified_to_skrew_grid, angUnit), Scale(scale), + Length(easting_projection_centre, linearUnit), + Length(northing_projection_centre, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3767,30 +3833,33 @@ PJ_OBJ *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( * See * osgeo::proj::operation::Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ * proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( - PJ_CONTEXT *ctx, double latitudeProjectionCentre, double latitudePoint1, - double longitudePoint1, double latitudePoint2, double longitudePoint2, - double scale, double eastingProjectionCentre, - double northingProjectionCentre, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_projection_centre, double latitude_point1, + double longitude_point1, double latitude_point2, double longitude_point2, + double scale, double easting_projection_centre, + double northing_projection_centre, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(latitudePoint1, angUnit), Angle(longitudePoint1, angUnit), - Angle(latitudePoint2, angUnit), Angle(longitudePoint2, angUnit), - Scale(scale), Length(eastingProjectionCentre, linearUnit), - Length(northingProjectionCentre, linearUnit)); + PropertyMap(), Angle(latitude_projection_centre, angUnit), + Angle(latitude_point1, angUnit), + Angle(longitude_point1, angUnit), + Angle(latitude_point2, angUnit), + Angle(longitude_point2, angUnit), Scale(scale), + Length(easting_projection_centre, linearUnit), + Length(northing_projection_centre, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3805,26 +3874,28 @@ proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( * See * osgeo::proj::operation::Conversion::createInternationalMapWorldPolyconic(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_international_map_world_polyconic( - PJ_CONTEXT *ctx, double centerLong, double latitudeFirstParallel, - double latitudeSecondParallel, double falseEasting, double falseNorthing, - const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double latitude_first_parallel, + double latitude_second_parallel, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createInternationalMapWorldPolyconic( - PropertyMap(), Angle(centerLong, angUnit), - Angle(latitudeFirstParallel, angUnit), - Angle(latitudeSecondParallel, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Angle(latitude_first_parallel, angUnit), + Angle(latitude_second_parallel, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3838,29 +3909,32 @@ PJ_OBJ *proj_obj_create_conversion_international_map_world_polyconic( * * See osgeo::proj::operation::Conversion::createKrovakNorthOriented(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_krovak_north_oriented( - PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeOfOrigin, - double colatitudeConeAxis, double latitudePseudoStandardParallel, - double scaleFactorPseudoStandardParallel, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_projection_centre, + double longitude_of_origin, double colatitude_cone_axis, + double latitude_pseudo_standard_parallel, + double scale_factor_pseudo_standard_parallel, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createKrovakNorthOriented( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(longitudeOfOrigin, angUnit), - Angle(colatitudeConeAxis, angUnit), - Angle(latitudePseudoStandardParallel, angUnit), - Scale(scaleFactorPseudoStandardParallel), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_projection_centre, angUnit), + Angle(longitude_of_origin, angUnit), + Angle(colatitude_cone_axis, angUnit), + Angle(latitude_pseudo_standard_parallel, angUnit), + Scale(scale_factor_pseudo_standard_parallel), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3874,29 +3948,32 @@ PJ_OBJ *proj_obj_create_conversion_krovak_north_oriented( * * See osgeo::proj::operation::Conversion::createKrovak(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_krovak( - PJ_CONTEXT *ctx, double latitudeProjectionCentre, double longitudeOfOrigin, - double colatitudeConeAxis, double latitudePseudoStandardParallel, - double scaleFactorPseudoStandardParallel, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_projection_centre, + double longitude_of_origin, double colatitude_cone_axis, + double latitude_pseudo_standard_parallel, + double scale_factor_pseudo_standard_parallel, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createKrovak( - PropertyMap(), Angle(latitudeProjectionCentre, angUnit), - Angle(longitudeOfOrigin, angUnit), - Angle(colatitudeConeAxis, angUnit), - Angle(latitudePseudoStandardParallel, angUnit), - Scale(scaleFactorPseudoStandardParallel), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_projection_centre, angUnit), + Angle(longitude_of_origin, angUnit), + Angle(colatitude_cone_axis, angUnit), + Angle(latitude_pseudo_standard_parallel, angUnit), + Scale(scale_factor_pseudo_standard_parallel), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3910,25 +3987,26 @@ PJ_OBJ *proj_obj_create_conversion_krovak( * * See osgeo::proj::operation::Conversion::createLambertAzimuthalEqualArea(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_lambert_azimuthal_equal_area( - PJ_CONTEXT *ctx, double latitudeNatOrigin, double longitudeNatOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_nat_origin, double longitude_nat_origin, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createLambertAzimuthalEqualArea( - PropertyMap(), Angle(latitudeNatOrigin, angUnit), - Angle(longitudeNatOrigin, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_nat_origin, angUnit), + Angle(longitude_nat_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3942,23 +4020,25 @@ PJ_OBJ *proj_obj_create_conversion_lambert_azimuthal_equal_area( * * See osgeo::proj::operation::Conversion::createMillerCylindrical(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_miller_cylindrical( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createMillerCylindrical( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -3972,25 +4052,26 @@ PJ_OBJ *proj_obj_create_conversion_miller_cylindrical( * * See osgeo::proj::operation::Conversion::createMercatorVariantA(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_mercator_variant_a( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createMercatorVariantA( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4004,24 +4085,25 @@ PJ_OBJ *proj_obj_create_conversion_mercator_variant_a( * * See osgeo::proj::operation::Conversion::createMercatorVariantB(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_mercator_variant_b( - PJ_CONTEXT *ctx, double latitudeFirstParallel, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_first_parallel, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createMercatorVariantB( - PropertyMap(), Angle(latitudeFirstParallel, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_first_parallel, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4036,23 +4118,25 @@ PJ_OBJ *proj_obj_create_conversion_mercator_variant_b( * See * osgeo::proj::operation::Conversion::createPopularVisualisationPseudoMercator(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createPopularVisualisationPseudoMercator( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4066,23 +4150,25 @@ PJ_OBJ *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( * * See osgeo::proj::operation::Conversion::createMollweide(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_mollweide( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createMollweide( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4096,23 +4182,25 @@ PJ_OBJ *proj_obj_create_conversion_mollweide( * * See osgeo::proj::operation::Conversion::createNewZealandMappingGrid(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_new_zealand_mapping_grid( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createNewZealandMappingGrid( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4126,25 +4214,26 @@ PJ_OBJ *proj_obj_create_conversion_new_zealand_mapping_grid( * * See osgeo::proj::operation::Conversion::createObliqueStereographic(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_oblique_stereographic( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createObliqueStereographic( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4158,23 +4247,25 @@ PJ_OBJ *proj_obj_create_conversion_oblique_stereographic( * * See osgeo::proj::operation::Conversion::createOrthographic(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_orthographic( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createOrthographic( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4188,23 +4279,25 @@ PJ_OBJ *proj_obj_create_conversion_orthographic( * * See osgeo::proj::operation::Conversion::createAmericanPolyconic(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_american_polyconic( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createAmericanPolyconic( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4218,25 +4311,26 @@ PJ_OBJ *proj_obj_create_conversion_american_polyconic( * * See osgeo::proj::operation::Conversion::createPolarStereographicVariantA(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_a( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createPolarStereographicVariantA( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4250,24 +4344,26 @@ PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_a( * * See osgeo::proj::operation::Conversion::createPolarStereographicVariantB(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_b( - PJ_CONTEXT *ctx, double latitudeStandardParallel, double longitudeOfOrigin, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_standard_parallel, + double longitude_of_origin, double false_easting, double false_northing, + const char *ang_unit_name, double ang_unit_conv_factor, + const char *linear_unit_name, double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createPolarStereographicVariantB( - PropertyMap(), Angle(latitudeStandardParallel, angUnit), - Angle(longitudeOfOrigin, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_standard_parallel, angUnit), + Angle(longitude_of_origin, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4281,23 +4377,27 @@ PJ_OBJ *proj_obj_create_conversion_polar_stereographic_variant_b( * * See osgeo::proj::operation::Conversion::createRobinson(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_conversion_robinson( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). + */ +PJ_OBJ *proj_obj_create_conversion_robinson(PJ_CONTEXT *ctx, double center_long, + double false_easting, + double false_northing, + const char *ang_unit_name, + double ang_unit_conv_factor, + const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createRobinson( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4311,23 +4411,25 @@ PJ_OBJ *proj_obj_create_conversion_robinson( * * See osgeo::proj::operation::Conversion::createSinusoidal(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_sinusoidal( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createSinusoidal( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4341,25 +4443,26 @@ PJ_OBJ *proj_obj_create_conversion_sinusoidal( * * See osgeo::proj::operation::Conversion::createStereographic(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_stereographic( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double scale, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, double scale, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createStereographic( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Scale(scale), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Scale(scale), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4373,23 +4476,25 @@ PJ_OBJ *proj_obj_create_conversion_stereographic( * * See osgeo::proj::operation::Conversion::createVanDerGrinten(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_van_der_grinten( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createVanDerGrinten( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4403,23 +4508,27 @@ PJ_OBJ *proj_obj_create_conversion_van_der_grinten( * * See osgeo::proj::operation::Conversion::createWagnerI(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_conversion_wagner_i( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). + */ +PJ_OBJ *proj_obj_create_conversion_wagner_i(PJ_CONTEXT *ctx, double center_long, + double false_easting, + double false_northing, + const char *ang_unit_name, + double ang_unit_conv_factor, + const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = - Conversion::createWagnerI(PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); + auto conv = Conversion::createWagnerI( + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4433,23 +4542,25 @@ PJ_OBJ *proj_obj_create_conversion_wagner_i( * * See osgeo::proj::operation::Conversion::createWagnerII(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_wagner_ii( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createWagnerII( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4463,24 +4574,25 @@ PJ_OBJ *proj_obj_create_conversion_wagner_ii( * * See osgeo::proj::operation::Conversion::createWagnerIII(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_wagner_iii( - PJ_CONTEXT *ctx, double latitudeTrueScale, double centerLong, - double falseEasting, double falseNorthing, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double latitude_true_scale, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createWagnerIII( - PropertyMap(), Angle(latitudeTrueScale, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(latitude_true_scale, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4494,23 +4606,25 @@ PJ_OBJ *proj_obj_create_conversion_wagner_iii( * * See osgeo::proj::operation::Conversion::createWagnerIV(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_wagner_iv( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createWagnerIV( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4524,23 +4638,27 @@ PJ_OBJ *proj_obj_create_conversion_wagner_iv( * * See osgeo::proj::operation::Conversion::createWagnerV(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). - */ -PJ_OBJ *proj_obj_create_conversion_wagner_v( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). + */ +PJ_OBJ *proj_obj_create_conversion_wagner_v(PJ_CONTEXT *ctx, double center_long, + double false_easting, + double false_northing, + const char *ang_unit_name, + double ang_unit_conv_factor, + const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); - auto conv = - Conversion::createWagnerV(PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); + auto conv = Conversion::createWagnerV( + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4554,23 +4672,25 @@ PJ_OBJ *proj_obj_create_conversion_wagner_v( * * See osgeo::proj::operation::Conversion::createWagnerVI(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_wagner_vi( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createWagnerVI( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4584,23 +4704,25 @@ PJ_OBJ *proj_obj_create_conversion_wagner_vi( * * See osgeo::proj::operation::Conversion::createWagnerVII(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_wagner_vii( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createWagnerVII( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4615,23 +4737,25 @@ PJ_OBJ *proj_obj_create_conversion_wagner_vii( * See * osgeo::proj::operation::Conversion::createQuadrilateralizedSphericalCube(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_quadrilateralized_spherical_cube( - PJ_CONTEXT *ctx, double centerLat, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_lat, double center_long, + double false_easting, double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createQuadrilateralizedSphericalCube( - PropertyMap(), Angle(centerLat, angUnit), - Angle(centerLong, angUnit), Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_lat, angUnit), + Angle(center_long, angUnit), Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4645,24 +4769,25 @@ PJ_OBJ *proj_obj_create_conversion_quadrilateralized_spherical_cube( * * See osgeo::proj::operation::Conversion::createSphericalCrossTrackHeight(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_spherical_cross_track_height( - PJ_CONTEXT *ctx, double pegPointLat, double pegPointLong, - double pegPointHeading, double pegPointHeight, const char *angUnitName, - double angUnitConvFactor, const char *linearUnitName, - double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double peg_point_lat, double peg_point_long, + double peg_point_heading, double peg_point_height, + const char *ang_unit_name, double ang_unit_conv_factor, + const char *linear_unit_name, double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createSphericalCrossTrackHeight( - PropertyMap(), Angle(pegPointLat, angUnit), - Angle(pegPointLong, angUnit), Angle(pegPointHeading, angUnit), - Length(pegPointHeight, linearUnit)); + PropertyMap(), Angle(peg_point_lat, angUnit), + Angle(peg_point_long, angUnit), Angle(peg_point_heading, angUnit), + Length(peg_point_height, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); @@ -4676,23 +4801,25 @@ PJ_OBJ *proj_obj_create_conversion_spherical_cross_track_height( * * See osgeo::proj::operation::Conversion::createEqualEarth(). * - * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). - * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + * Linear parameters are expressed in (linear_unit_name, + * linear_unit_conv_factor). + * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor). */ PJ_OBJ *proj_obj_create_conversion_equal_earth( - PJ_CONTEXT *ctx, double centerLong, double falseEasting, - double falseNorthing, const char *angUnitName, double angUnitConvFactor, - const char *linearUnitName, double linearUnitConvFactor) { + PJ_CONTEXT *ctx, double center_long, double false_easting, + double false_northing, const char *ang_unit_name, + double ang_unit_conv_factor, const char *linear_unit_name, + double linear_unit_conv_factor) { SANITIZE_CTX(ctx); try { UnitOfMeasure linearUnit( - createLinearUnit(linearUnitName, linearUnitConvFactor)); + createLinearUnit(linear_unit_name, linear_unit_conv_factor)); UnitOfMeasure angUnit( - createAngularUnit(angUnitName, angUnitConvFactor)); + createAngularUnit(ang_unit_name, ang_unit_conv_factor)); auto conv = Conversion::createEqualEarth( - PropertyMap(), Angle(centerLong, angUnit), - Length(falseEasting, linearUnit), - Length(falseNorthing, linearUnit)); + PropertyMap(), Angle(center_long, angUnit), + Length(false_easting, linearUnit), + Length(false_northing, linearUnit)); return proj_obj_create_conversion(conv); } catch (const std::exception &e) { proj_log_error(ctx, __FUNCTION__, e.what()); diff --git a/src/proj.h b/src/proj.h index 3d546bdd..aca8aed2 100644 --- a/src/proj.h +++ b/src/proj.h @@ -981,64 +981,64 @@ PJ_OBJ PROJ_DLL *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx, PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( PJ_CONTEXT *ctx, - const char *crsName, - const char *datumName, - const char *ellipsoidName, - double semiMajorMetre, double invFlattening, - const char *primeMeridianName, - double primeMeridianOffset, - const char *pmAngularUnits, - double pmUnitsConv, - PJ_OBJ* ellipsoidalCS); + const char *crs_name, + const char *datum_name, + const char *ellps_name, + double semi_major_metre, double inv_flattening, + const char *prime_meridian_name, + double prime_meridian_offset, + const char *pm_angular_units, + double pm_units_conv, + PJ_OBJ* ellipsoidal_cs); PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs_from_datum( PJ_CONTEXT *ctx, - const char *crsName, + const char *crs_name, PJ_OBJ* datum, - PJ_OBJ* ellipsoidalCS); + PJ_OBJ* ellipsoidal_cs); PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs( PJ_CONTEXT *ctx, - const char *crsName, - const char *datumName, - const char *ellipsoidName, - double semiMajorMetre, double invFlattening, - const char *primeMeridianName, - double primeMeridianOffset, - const char *angularUnits, - double angularUnitsConv, - const char *linearUnits, - double linearUnitsConv); + const char *crs_name, + const char *datum_name, + const char *ellps_name, + double semi_major_metre, double inv_flattening, + const char *prime_meridian_name, + double prime_meridian_offset, + const char *angular_units, + double angular_units_conv, + const char *linear_units, + double linear_units_conv); PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs_from_datum( PJ_CONTEXT *ctx, - const char *crsName, + const char *crs_name, const PJ_OBJ* datum, - const char *linearUnits, - double linearUnitsConv); + const char *linear_units, + double linear_units_conv); PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx, const PJ_OBJ* obj, const char* name); PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, const PJ_OBJ* obj, - const PJ_OBJ* newGeodCRS); + const PJ_OBJ* new_geod_crs); PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx, const PJ_OBJ* obj, - const char *angularUnits, - double angularUnitsConv); + const char *angular_units, + double angular_units_conv); PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, const PJ_OBJ* obj, - const char *linearUnits, - double linearUnitsConv); + const char *linear_units, + double linear_units_conv); PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, const PJ_OBJ* obj, - const char *linearUnits, - double linearUnitsConv, - int convertToNewUnit); + const char *linear_units, + double linear_units_conv, + int convert_to_new_unit); PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx, const char *crsName); @@ -1094,587 +1094,587 @@ PJ_OBJ PROJ_DLL *proj_obj_create_conversion_utm( PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, + double center_lat, + double center_long, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, + double center_lat, + double center_long, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator_south_oriented( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, + double center_lat, + double center_long, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_two_point_equidistant( PJ_CONTEXT *ctx, - double latitudeFirstPoint, - double longitudeFirstPoint, - double latitudeSecondPoint, - double longitudeSeconPoint, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_first_point, + double longitude_first_point, + double latitude_second_point, + double longitude_secon_point, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_tunisia_mapping_grid( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_albers_equal_area( PJ_CONTEXT *ctx, - double latitudeFalseOrigin, - double longitudeFalseOrigin, - double latitudeFirstParallel, - double latitudeSecondParallel, - double eastingFalseOrigin, - double northingFalseOrigin, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_false_origin, + double longitude_false_origin, + double latitude_first_parallel, + double latitude_second_parallel, + double easting_false_origin, + double northing_false_origin, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_1sp( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, + double center_lat, + double center_long, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp( PJ_CONTEXT *ctx, - double latitudeFalseOrigin, - double longitudeFalseOrigin, - double latitudeFirstParallel, - double latitudeSecondParallel, - double eastingFalseOrigin, - double northingFalseOrigin, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_false_origin, + double longitude_false_origin, + double latitude_first_parallel, + double latitude_second_parallel, + double easting_false_origin, + double northing_false_origin, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( PJ_CONTEXT *ctx, - double latitudeFalseOrigin, - double longitudeFalseOrigin, - double latitudeFirstParallel, - double latitudeSecondParallel, - double eastingFalseOrigin, - double northingFalseOrigin, - double ellipsoidScalingFactor, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_false_origin, + double longitude_false_origin, + double latitude_first_parallel, + double latitude_second_parallel, + double easting_false_origin, + double northing_false_origin, + double ellipsoid_scaling_factor, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( PJ_CONTEXT *ctx, - double latitudeFalseOrigin, - double longitudeFalseOrigin, - double latitudeFirstParallel, - double latitudeSecondParallel, - double eastingFalseOrigin, - double northingFalseOrigin, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_false_origin, + double longitude_false_origin, + double latitude_first_parallel, + double latitude_second_parallel, + double easting_false_origin, + double northing_false_origin, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_azimuthal_equidistant( PJ_CONTEXT *ctx, - double latitudeNatOrigin, - double longitudeNatOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_nat_origin, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_guam_projection( PJ_CONTEXT *ctx, - double latitudeNatOrigin, - double longitudeNatOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_nat_origin, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_bonne( PJ_CONTEXT *ctx, - double latitudeNatOrigin, - double longitudeNatOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_nat_origin, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( PJ_CONTEXT *ctx, - double latitudeFirstParallel, - double longitudeNatOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_first_parallel, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area( PJ_CONTEXT *ctx, - double latitudeFirstParallel, - double longitudeNatOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_first_parallel, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_cassini_soldner( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_conic( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double latitudeFirstParallel, - double latitudeSecondParallel, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double latitude_first_parallel, + double latitude_second_parallel, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_i( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_ii( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iii( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iv( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_v( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_vi( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical( PJ_CONTEXT *ctx, - double latitudeFirstParallel, - double longitudeNatOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_first_parallel, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical_spherical( PJ_CONTEXT *ctx, - double latitudeFirstParallel, - double longitudeNatOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_first_parallel, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gall( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_goode_homolosine( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_interrupted_goode_homolosine( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_x( PJ_CONTEXT *ctx, - double centerLong, + double center_long, double height, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_y( PJ_CONTEXT *ctx, - double centerLong, + double center_long, double height, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gnomonic( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( PJ_CONTEXT *ctx, - double latitudeProjectionCentre, - double longitudeProjectionCentre, - double azimuthInitialLine, - double angleFromRectifiedToSkrewGrid, + double latitude_projection_centre, + double longitude_projection_centre, + double azimuth_initial_line, + double angle_from_rectified_to_skrew_grid, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( PJ_CONTEXT *ctx, - double latitudeProjectionCentre, - double longitudeProjectionCentre, - double azimuthInitialLine, - double angleFromRectifiedToSkrewGrid, + double latitude_projection_centre, + double longitude_projection_centre, + double azimuth_initial_line, + double angle_from_rectified_to_skrew_grid, double scale, - double eastingProjectionCentre, - double northingProjectionCentre, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double easting_projection_centre, + double northing_projection_centre, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( PJ_CONTEXT *ctx, - double latitudeProjectionCentre, - double latitudePoint1, - double longitudePoint1, - double latitudePoint2, - double longitudePoint2, + double latitude_projection_centre, + double latitude_point1, + double longitude_point1, + double latitude_point2, + double longitude_point2, double scale, - double eastingProjectionCentre, - double northingProjectionCentre, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double easting_projection_centre, + double northing_projection_centre, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_international_map_world_polyconic( PJ_CONTEXT *ctx, - double centerLong, - double latitudeFirstParallel, - double latitudeSecondParallel, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double latitude_first_parallel, + double latitude_second_parallel, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak_north_oriented( PJ_CONTEXT *ctx, - double latitudeProjectionCentre, - double longitudeOfOrigin, - double colatitudeConeAxis, - double latitudePseudoStandardParallel, - double scaleFactorPseudoStandardParallel, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_projection_centre, + double longitude_of_origin, + double colatitude_cone_axis, + double latitude_pseudo_standard_parallel, + double scale_factor_pseudo_standard_parallel, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak( PJ_CONTEXT *ctx, - double latitudeProjectionCentre, - double longitudeOfOrigin, - double colatitudeConeAxis, - double latitudePseudoStandardParallel, - double scaleFactorPseudoStandardParallel, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_projection_centre, + double longitude_of_origin, + double colatitude_cone_axis, + double latitude_pseudo_standard_parallel, + double scale_factor_pseudo_standard_parallel, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_azimuthal_equal_area( PJ_CONTEXT *ctx, - double latitudeNatOrigin, - double longitudeNatOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_nat_origin, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_miller_cylindrical( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_a( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, + double center_lat, + double center_long, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_b( PJ_CONTEXT *ctx, - double latitudeFirstParallel, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_first_parallel, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mollweide( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_new_zealand_mapping_grid( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_oblique_stereographic( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, + double center_lat, + double center_long, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_orthographic( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_american_polyconic( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_a( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, + double center_lat, + double center_long, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_b( PJ_CONTEXT *ctx, - double latitudeStandardParallel, - double longitudeOfOrigin, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_standard_parallel, + double longitude_of_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_robinson( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_sinusoidal( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_stereographic( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, + double center_lat, + double center_long, double scale, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_van_der_grinten( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_i( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_ii( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iii( PJ_CONTEXT *ctx, - double latitudeTrueScale, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double latitude_true_scale, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iv( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_v( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vi( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vii( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_quadrilateralized_spherical_cube( PJ_CONTEXT *ctx, - double centerLat, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_spherical_cross_track_height( PJ_CONTEXT *ctx, - double pegPointLat, - double pegPointLong, - double pegPointHeading, - double pegPointHeight, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double peg_point_lat, + double peg_point_long, + double peg_point_heading, + double peg_point_height, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equal_earth( PJ_CONTEXT *ctx, - double centerLong, - double falseEasting, - double falseNorthing, - const char* angUnitName, double angUnitConvFactor, - const char* linearUnitName, double linearUnitConvFactor); + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); /* END: Generated by scripts/create_c_api_projections.py*/ -- cgit v1.2.3 From b6a5c445e202e61c64b0986679a6e0a83724c322 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 30 Nov 2018 16:15:36 +0100 Subject: API: move all advanced PJ_OBJ creation functions in a dedicated proj_experimental.h header --- Doxyfile | 2 +- src/Makefile.am | 2 +- src/c_api.cpp | 1 + src/lib_proj.cmake | 1 + src/proj.h | 778 -------------------------------------------- src/proj_experimental.h | 831 +++++++++++++++++++++++++++++++++++++++++++++++ test/unit/test_c_api.cpp | 1 + 7 files changed, 836 insertions(+), 780 deletions(-) create mode 100644 src/proj_experimental.h diff --git a/Doxyfile b/Doxyfile index cc772c2e..282030fc 100644 --- a/Doxyfile +++ b/Doxyfile @@ -772,7 +772,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = src include/proj src/proj.h src/general_doc.dox +INPUT = src include/proj src/proj.h src/proj_experimental.h src/general_doc.dox # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/src/Makefile.am b/src/Makefile.am index c0802dff..99158f02 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,7 +10,7 @@ AM_CPPFLAGS = -DPROJ_LIB=\"$(pkgdatadir)\" \ -DMUTEX_@MUTEX_SETTING@ @JNI_INCLUDE@ -I$(top_srcdir)/include @SQLITE3_FLAGS@ AM_CXXFLAGS = @CXX_WFLAGS@ @FLTO_FLAG@ -DPROJ_COMPILATION -include_HEADERS = proj.h proj_constants.h proj_api.h geodesic.h \ +include_HEADERS = proj.h proj_experimental.h proj_constants.h proj_api.h geodesic.h \ org_proj4_PJ.h proj_symbol_rename.h EXTRA_DIST = bin_cct.cmake bin_gie.cmake bin_cs2cs.cmake \ diff --git a/src/c_api.cpp b/src/c_api.cpp index c7ba992e..a0dbecc2 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -52,6 +52,7 @@ // clang-format off #include "proj_internal.h" #include "proj.h" +#include "proj_experimental.h" #include "projects.h" // clang-format on diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake index bb45db44..9e6f51fd 100644 --- a/src/lib_proj.cmake +++ b/src/lib_proj.cmake @@ -265,6 +265,7 @@ set(SRC_LIBPROJ_CPP set(HEADERS_LIBPROJ proj_api.h proj.h + proj_experimental.h proj_constants.h geodesic.h ) diff --git a/src/proj.h b/src/proj.h index aca8aed2..18731328 100644 --- a/src/proj.h +++ b/src/proj.h @@ -902,784 +902,6 @@ double PROJ_DLL proj_coordoperation_get_accuracy(PJ_CONTEXT *ctx, /**@}*/ -/* ------------------------------------------------------------------------- */ -/* Binding in C of advanced methods from the C++ API */ -/* */ -/* Manual construction of CRS objects. */ -/* ------------------------------------------------------------------------- */ - -/** - * \defgroup advanced_cpp_binding Binding in C of advanced methods from the C++ API - * @{ - */ - -/** Type of unit of measure. */ -typedef enum -{ - /** Angular unit of measure */ - PJ_UT_ANGULAR, - /** Linear unit of measure */ - PJ_UT_LINEAR, - /** Scale unit of measure */ - PJ_UT_SCALE, - /** Time unit of measure */ - PJ_UT_TIME, - /** Parametric unit of measure */ - PJ_UT_PARAMETRIC -} PJ_UNIT_TYPE; - -/** Axis description. */ -typedef struct -{ - /** Axis name. */ - char* name; - /** Axis abbreviation. */ - char* abbreviation; - /** Axis direction. */ - char* direction; - /** Axis unit name. */ - char* unit_name; - /** Conversion factor to SI of the unit. */ - double unit_conv_factor; - /** Type of unit */ - PJ_UNIT_TYPE unit_type; -} PJ_AXIS_DESCRIPTION; - -PJ_OBJ PROJ_DLL *proj_obj_create_cs(PJ_CONTEXT *ctx, - PJ_COORDINATE_SYSTEM_TYPE type, - int axis_count, - const PJ_AXIS_DESCRIPTION* axis); - -/** Type of Cartesian 2D coordinate system. */ -typedef enum -{ - /* Easting-Norting */ - PJ_CART2D_EASTING_NORTHING, - /* Northing-Easting */ - PJ_CART2D_NORTHING_EASTING, -} PJ_CARTESIAN_CS_2D_TYPE; - -PJ_OBJ PROJ_DLL *proj_obj_create_cartesian_2D_cs(PJ_CONTEXT *ctx, - PJ_CARTESIAN_CS_2D_TYPE type, - const char* unit_name, - double unit_conv_factor); - - -/** Type of Cartesian 2D coordinate system. */ -typedef enum -{ - /* Longitude-Latitude */ - PJ_ELLPS2D_LONGITUDE_LATITUDE, - /* Latitude-Longitude */ - PJ_ELLPS2D_LATITUDE_LONGITUDE, -} PJ_ELLIPSOIDAL_CS_2D_TYPE; - -PJ_OBJ PROJ_DLL *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx, - PJ_ELLIPSOIDAL_CS_2D_TYPE type, - const char* unit_name, - double unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( - PJ_CONTEXT *ctx, - const char *crs_name, - const char *datum_name, - const char *ellps_name, - double semi_major_metre, double inv_flattening, - const char *prime_meridian_name, - double prime_meridian_offset, - const char *pm_angular_units, - double pm_units_conv, - PJ_OBJ* ellipsoidal_cs); - -PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs_from_datum( - PJ_CONTEXT *ctx, - const char *crs_name, - PJ_OBJ* datum, - PJ_OBJ* ellipsoidal_cs); - -PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs( - PJ_CONTEXT *ctx, - const char *crs_name, - const char *datum_name, - const char *ellps_name, - double semi_major_metre, double inv_flattening, - const char *prime_meridian_name, - double prime_meridian_offset, - const char *angular_units, - double angular_units_conv, - const char *linear_units, - double linear_units_conv); - -PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs_from_datum( - PJ_CONTEXT *ctx, - const char *crs_name, - const PJ_OBJ* datum, - const char *linear_units, - double linear_units_conv); - -PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx, - const PJ_OBJ* obj, const char* name); - -PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, - const PJ_OBJ* obj, - const PJ_OBJ* new_geod_crs); - -PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx, - const PJ_OBJ* obj, - const char *angular_units, - double angular_units_conv); - -PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, - const PJ_OBJ* obj, - const char *linear_units, - double linear_units_conv); - -PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, - const PJ_OBJ* obj, - const char *linear_units, - double linear_units_conv, - int convert_to_new_unit); - -PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx, - const char *crsName); - -/** Description of a parameter value for a Conversion. */ -typedef struct -{ - /** Parameter name. */ - const char* name; - /** Parameter authority name. */ - const char* auth_name; - /** Parameter code. */ - const char* code; - /** Parameter value. */ - double value; - /** Name of unit in which parameter value is expressed. */ - const char* unit_name; - /** Conversion factor to SI of the unit. */ - double unit_conv_factor; - /** Type of unit */ - PJ_UNIT_TYPE unit_type; -} PJ_PARAM_DESCRIPTION; - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion(PJ_CONTEXT *ctx, - const char* name, - const char* auth_name, - const char* code, - const char* method_name, - const char* method_auth_name, - const char* method_code, - int param_count, - const PJ_PARAM_DESCRIPTION* params); - -PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs(PJ_CONTEXT *ctx, - const char* crs_name, - const PJ_OBJ* geodetic_crs, - const PJ_OBJ* conversion, - const PJ_OBJ* coordinate_system); - -PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs(PJ_CONTEXT *ctx, - const PJ_OBJ *base_crs, - const PJ_OBJ *hub_crs, - const PJ_OBJ *transformation); - -PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_CONTEXT *ctx, - const PJ_OBJ *crs); - -/* BEGIN: Generated by scripts/create_c_api_projections.py*/ -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_utm( - PJ_CONTEXT *ctx, - int zone, - int north); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator_south_oriented( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_two_point_equidistant( - PJ_CONTEXT *ctx, - double latitude_first_point, - double longitude_first_point, - double latitude_second_point, - double longitude_secon_point, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_tunisia_mapping_grid( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_albers_equal_area( - PJ_CONTEXT *ctx, - double latitude_false_origin, - double longitude_false_origin, - double latitude_first_parallel, - double latitude_second_parallel, - double easting_false_origin, - double northing_false_origin, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_1sp( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp( - PJ_CONTEXT *ctx, - double latitude_false_origin, - double longitude_false_origin, - double latitude_first_parallel, - double latitude_second_parallel, - double easting_false_origin, - double northing_false_origin, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( - PJ_CONTEXT *ctx, - double latitude_false_origin, - double longitude_false_origin, - double latitude_first_parallel, - double latitude_second_parallel, - double easting_false_origin, - double northing_false_origin, - double ellipsoid_scaling_factor, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( - PJ_CONTEXT *ctx, - double latitude_false_origin, - double longitude_false_origin, - double latitude_first_parallel, - double latitude_second_parallel, - double easting_false_origin, - double northing_false_origin, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_azimuthal_equidistant( - PJ_CONTEXT *ctx, - double latitude_nat_origin, - double longitude_nat_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_guam_projection( - PJ_CONTEXT *ctx, - double latitude_nat_origin, - double longitude_nat_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_bonne( - PJ_CONTEXT *ctx, - double latitude_nat_origin, - double longitude_nat_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( - PJ_CONTEXT *ctx, - double latitude_first_parallel, - double longitude_nat_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area( - PJ_CONTEXT *ctx, - double latitude_first_parallel, - double longitude_nat_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_cassini_soldner( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_conic( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double latitude_first_parallel, - double latitude_second_parallel, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_i( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_ii( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iii( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iv( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_v( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_vi( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical( - PJ_CONTEXT *ctx, - double latitude_first_parallel, - double longitude_nat_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical_spherical( - PJ_CONTEXT *ctx, - double latitude_first_parallel, - double longitude_nat_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gall( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_goode_homolosine( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_interrupted_goode_homolosine( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_x( - PJ_CONTEXT *ctx, - double center_long, - double height, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_y( - PJ_CONTEXT *ctx, - double center_long, - double height, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gnomonic( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( - PJ_CONTEXT *ctx, - double latitude_projection_centre, - double longitude_projection_centre, - double azimuth_initial_line, - double angle_from_rectified_to_skrew_grid, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( - PJ_CONTEXT *ctx, - double latitude_projection_centre, - double longitude_projection_centre, - double azimuth_initial_line, - double angle_from_rectified_to_skrew_grid, - double scale, - double easting_projection_centre, - double northing_projection_centre, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( - PJ_CONTEXT *ctx, - double latitude_projection_centre, - double latitude_point1, - double longitude_point1, - double latitude_point2, - double longitude_point2, - double scale, - double easting_projection_centre, - double northing_projection_centre, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_international_map_world_polyconic( - PJ_CONTEXT *ctx, - double center_long, - double latitude_first_parallel, - double latitude_second_parallel, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak_north_oriented( - PJ_CONTEXT *ctx, - double latitude_projection_centre, - double longitude_of_origin, - double colatitude_cone_axis, - double latitude_pseudo_standard_parallel, - double scale_factor_pseudo_standard_parallel, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak( - PJ_CONTEXT *ctx, - double latitude_projection_centre, - double longitude_of_origin, - double colatitude_cone_axis, - double latitude_pseudo_standard_parallel, - double scale_factor_pseudo_standard_parallel, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_azimuthal_equal_area( - PJ_CONTEXT *ctx, - double latitude_nat_origin, - double longitude_nat_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_miller_cylindrical( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_a( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_b( - PJ_CONTEXT *ctx, - double latitude_first_parallel, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mollweide( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_new_zealand_mapping_grid( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_oblique_stereographic( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_orthographic( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_american_polyconic( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_a( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_b( - PJ_CONTEXT *ctx, - double latitude_standard_parallel, - double longitude_of_origin, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_robinson( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_sinusoidal( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_stereographic( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double scale, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_van_der_grinten( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_i( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_ii( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iii( - PJ_CONTEXT *ctx, - double latitude_true_scale, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iv( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_v( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vi( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vii( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_quadrilateralized_spherical_cube( - PJ_CONTEXT *ctx, - double center_lat, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_spherical_cross_track_height( - PJ_CONTEXT *ctx, - double peg_point_lat, - double peg_point_long, - double peg_point_heading, - double peg_point_height, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equal_earth( - PJ_CONTEXT *ctx, - double center_long, - double false_easting, - double false_northing, - const char* ang_unit_name, double ang_unit_conv_factor, - const char* linear_unit_name, double linear_unit_conv_factor); - -/* END: Generated by scripts/create_c_api_projections.py*/ - -/**@}*/ - #ifdef __cplusplus } #endif diff --git a/src/proj_experimental.h b/src/proj_experimental.h new file mode 100644 index 00000000..1dc16f99 --- /dev/null +++ b/src/proj_experimental.h @@ -0,0 +1,831 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Experimental C API + * Author: Even Rouault + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************/ + +#include "proj.h" + +#ifndef PROJ_EXPERIMENTAL_H +#define PROJ_EXPERIMENTAL_H +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file proj_experimental.h + * + * Experimental C API. + * + * \warning + * This API has been considered now to be experimental, and may change or + * be removed in the future. It addresses for now the needs of the GDAL + * project to be able to construct CRS objects in a programmatic way, piece + * by piece, instead of whole conversion from PROJ string or WKT string. + */ + +/* ------------------------------------------------------------------------- */ +/* Binding in C of advanced methods from the C++ API */ +/* */ +/* Manual construction of CRS objects. */ +/* ------------------------------------------------------------------------- */ + +/** + * \defgroup advanced_cpp_binding Binding in C of advanced methods from the C++ API + * @{ + */ + +/** Type of unit of measure. */ +typedef enum +{ + /** Angular unit of measure */ + PJ_UT_ANGULAR, + /** Linear unit of measure */ + PJ_UT_LINEAR, + /** Scale unit of measure */ + PJ_UT_SCALE, + /** Time unit of measure */ + PJ_UT_TIME, + /** Parametric unit of measure */ + PJ_UT_PARAMETRIC +} PJ_UNIT_TYPE; + +/** Axis description. */ +typedef struct +{ + /** Axis name. */ + char* name; + /** Axis abbreviation. */ + char* abbreviation; + /** Axis direction. */ + char* direction; + /** Axis unit name. */ + char* unit_name; + /** Conversion factor to SI of the unit. */ + double unit_conv_factor; + /** Type of unit */ + PJ_UNIT_TYPE unit_type; +} PJ_AXIS_DESCRIPTION; + +PJ_OBJ PROJ_DLL *proj_obj_create_cs(PJ_CONTEXT *ctx, + PJ_COORDINATE_SYSTEM_TYPE type, + int axis_count, + const PJ_AXIS_DESCRIPTION* axis); + +/** Type of Cartesian 2D coordinate system. */ +typedef enum +{ + /* Easting-Norting */ + PJ_CART2D_EASTING_NORTHING, + /* Northing-Easting */ + PJ_CART2D_NORTHING_EASTING, +} PJ_CARTESIAN_CS_2D_TYPE; + +PJ_OBJ PROJ_DLL *proj_obj_create_cartesian_2D_cs(PJ_CONTEXT *ctx, + PJ_CARTESIAN_CS_2D_TYPE type, + const char* unit_name, + double unit_conv_factor); + + +/** Type of Cartesian 2D coordinate system. */ +typedef enum +{ + /* Longitude-Latitude */ + PJ_ELLPS2D_LONGITUDE_LATITUDE, + /* Latitude-Longitude */ + PJ_ELLPS2D_LATITUDE_LONGITUDE, +} PJ_ELLIPSOIDAL_CS_2D_TYPE; + +PJ_OBJ PROJ_DLL *proj_obj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx, + PJ_ELLIPSOIDAL_CS_2D_TYPE type, + const char* unit_name, + double unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( + PJ_CONTEXT *ctx, + const char *crs_name, + const char *datum_name, + const char *ellps_name, + double semi_major_metre, double inv_flattening, + const char *prime_meridian_name, + double prime_meridian_offset, + const char *pm_angular_units, + double pm_units_conv, + PJ_OBJ* ellipsoidal_cs); + +PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs_from_datum( + PJ_CONTEXT *ctx, + const char *crs_name, + PJ_OBJ* datum, + PJ_OBJ* ellipsoidal_cs); + +PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs( + PJ_CONTEXT *ctx, + const char *crs_name, + const char *datum_name, + const char *ellps_name, + double semi_major_metre, double inv_flattening, + const char *prime_meridian_name, + double prime_meridian_offset, + const char *angular_units, + double angular_units_conv, + const char *linear_units, + double linear_units_conv); + +PJ_OBJ PROJ_DLL *proj_obj_create_geocentric_crs_from_datum( + PJ_CONTEXT *ctx, + const char *crs_name, + const PJ_OBJ* datum, + const char *linear_units, + double linear_units_conv); + +PJ_OBJ PROJ_DLL *proj_obj_alter_name(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, const char* name); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, + const PJ_OBJ* new_geod_crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_angular_unit(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, + const char *angular_units, + double angular_units_conv); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, + const char *linear_units, + double linear_units_conv); + +PJ_OBJ PROJ_DLL *proj_obj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, + const PJ_OBJ* obj, + const char *linear_units, + double linear_units_conv, + int convert_to_new_unit); + +PJ_OBJ PROJ_DLL *proj_obj_create_engineering_crs(PJ_CONTEXT *ctx, + const char *crsName); + +/** Description of a parameter value for a Conversion. */ +typedef struct +{ + /** Parameter name. */ + const char* name; + /** Parameter authority name. */ + const char* auth_name; + /** Parameter code. */ + const char* code; + /** Parameter value. */ + double value; + /** Name of unit in which parameter value is expressed. */ + const char* unit_name; + /** Conversion factor to SI of the unit. */ + double unit_conv_factor; + /** Type of unit */ + PJ_UNIT_TYPE unit_type; +} PJ_PARAM_DESCRIPTION; + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion(PJ_CONTEXT *ctx, + const char* name, + const char* auth_name, + const char* code, + const char* method_name, + const char* method_auth_name, + const char* method_code, + int param_count, + const PJ_PARAM_DESCRIPTION* params); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs(PJ_CONTEXT *ctx, + const char* crs_name, + const PJ_OBJ* geodetic_crs, + const PJ_OBJ* conversion, + const PJ_OBJ* coordinate_system); + +PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs(PJ_CONTEXT *ctx, + const PJ_OBJ *base_crs, + const PJ_OBJ *hub_crs, + const PJ_OBJ *transformation); + +PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_CONTEXT *ctx, + const PJ_OBJ *crs); + +/* BEGIN: Generated by scripts/create_c_api_projections.py*/ +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_utm( + PJ_CONTEXT *ctx, + int zone, + int north); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gauss_schreiber_transverse_mercator( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_transverse_mercator_south_oriented( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_two_point_equidistant( + PJ_CONTEXT *ctx, + double latitude_first_point, + double longitude_first_point, + double latitude_second_point, + double longitude_secon_point, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_tunisia_mapping_grid( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_albers_equal_area( + PJ_CONTEXT *ctx, + double latitude_false_origin, + double longitude_false_origin, + double latitude_first_parallel, + double latitude_second_parallel, + double easting_false_origin, + double northing_false_origin, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_1sp( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp( + PJ_CONTEXT *ctx, + double latitude_false_origin, + double longitude_false_origin, + double latitude_first_parallel, + double latitude_second_parallel, + double easting_false_origin, + double northing_false_origin, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_michigan( + PJ_CONTEXT *ctx, + double latitude_false_origin, + double longitude_false_origin, + double latitude_first_parallel, + double latitude_second_parallel, + double easting_false_origin, + double northing_false_origin, + double ellipsoid_scaling_factor, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_conic_conformal_2sp_belgium( + PJ_CONTEXT *ctx, + double latitude_false_origin, + double longitude_false_origin, + double latitude_first_parallel, + double latitude_second_parallel, + double easting_false_origin, + double northing_false_origin, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_azimuthal_equidistant( + PJ_CONTEXT *ctx, + double latitude_nat_origin, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_guam_projection( + PJ_CONTEXT *ctx, + double latitude_nat_origin, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_bonne( + PJ_CONTEXT *ctx, + double latitude_nat_origin, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area_spherical( + PJ_CONTEXT *ctx, + double latitude_first_parallel, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_cylindrical_equal_area( + PJ_CONTEXT *ctx, + double latitude_first_parallel, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_cassini_soldner( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_conic( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double latitude_first_parallel, + double latitude_second_parallel, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_i( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_ii( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iii( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_iv( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_v( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_eckert_vi( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical( + PJ_CONTEXT *ctx, + double latitude_first_parallel, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equidistant_cylindrical_spherical( + PJ_CONTEXT *ctx, + double latitude_first_parallel, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gall( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_goode_homolosine( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_interrupted_goode_homolosine( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_x( + PJ_CONTEXT *ctx, + double center_long, + double height, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_geostationary_satellite_sweep_y( + PJ_CONTEXT *ctx, + double center_long, + double height, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_gnomonic( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_a( + PJ_CONTEXT *ctx, + double latitude_projection_centre, + double longitude_projection_centre, + double azimuth_initial_line, + double angle_from_rectified_to_skrew_grid, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_variant_b( + PJ_CONTEXT *ctx, + double latitude_projection_centre, + double longitude_projection_centre, + double azimuth_initial_line, + double angle_from_rectified_to_skrew_grid, + double scale, + double easting_projection_centre, + double northing_projection_centre, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_hotine_oblique_mercator_two_point_natural_origin( + PJ_CONTEXT *ctx, + double latitude_projection_centre, + double latitude_point1, + double longitude_point1, + double latitude_point2, + double longitude_point2, + double scale, + double easting_projection_centre, + double northing_projection_centre, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_international_map_world_polyconic( + PJ_CONTEXT *ctx, + double center_long, + double latitude_first_parallel, + double latitude_second_parallel, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak_north_oriented( + PJ_CONTEXT *ctx, + double latitude_projection_centre, + double longitude_of_origin, + double colatitude_cone_axis, + double latitude_pseudo_standard_parallel, + double scale_factor_pseudo_standard_parallel, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_krovak( + PJ_CONTEXT *ctx, + double latitude_projection_centre, + double longitude_of_origin, + double colatitude_cone_axis, + double latitude_pseudo_standard_parallel, + double scale_factor_pseudo_standard_parallel, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_lambert_azimuthal_equal_area( + PJ_CONTEXT *ctx, + double latitude_nat_origin, + double longitude_nat_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_miller_cylindrical( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_a( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mercator_variant_b( + PJ_CONTEXT *ctx, + double latitude_first_parallel, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_popular_visualisation_pseudo_mercator( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_mollweide( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_new_zealand_mapping_grid( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_oblique_stereographic( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_orthographic( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_american_polyconic( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_a( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_polar_stereographic_variant_b( + PJ_CONTEXT *ctx, + double latitude_standard_parallel, + double longitude_of_origin, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_robinson( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_sinusoidal( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_stereographic( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double scale, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_van_der_grinten( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_i( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_ii( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iii( + PJ_CONTEXT *ctx, + double latitude_true_scale, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_iv( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_v( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vi( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_wagner_vii( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_quadrilateralized_spherical_cube( + PJ_CONTEXT *ctx, + double center_lat, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_spherical_cross_track_height( + PJ_CONTEXT *ctx, + double peg_point_lat, + double peg_point_long, + double peg_point_heading, + double peg_point_height, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +PJ_OBJ PROJ_DLL *proj_obj_create_conversion_equal_earth( + PJ_CONTEXT *ctx, + double center_long, + double false_easting, + double false_northing, + const char* ang_unit_name, double ang_unit_conv_factor, + const char* linear_unit_name, double linear_unit_conv_factor); + +/* END: Generated by scripts/create_c_api_projections.py*/ + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* ndef PROJ_EXPERIMENTAL_H */ diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 51de990b..59ba12ca 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -29,6 +29,7 @@ #include "gtest_include.h" #include "proj.h" +#include "proj_experimental.h" #include "proj/common.hpp" #include "proj/coordinateoperation.hpp" -- cgit v1.2.3 From 9d19d5578705e06990fb716adcb9e6a1529424aa Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 30 Nov 2018 18:37:12 +0100 Subject: importFromWKT: morph GDAL_WKT1 datum names into their EPSG spelling --- src/c_api.cpp | 48 ++++++++++++++++++++++++++++++++++------ src/io.cpp | 31 ++++++++++++++++++++++++++ test/unit/test_c_api.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ test/unit/test_io.cpp | 27 +++++++++++++++++++++++ 4 files changed, 156 insertions(+), 7 deletions(-) diff --git a/src/c_api.cpp b/src/c_api.cpp index a0dbecc2..30365297 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -409,8 +409,13 @@ PJ_OBJ *proj_obj_create_from_wkt(PJ_CONTEXT *ctx, const char *wkt, assert(wkt); (void)options; try { + WKTParser parser; + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); + if (dbContext) { + parser.attachDatabaseContext(NN_NO_CHECK(dbContext)); + } auto identifiedObject = nn_dynamic_pointer_cast( - WKTParser().createFromWKT(wkt)); + parser.createFromWKT(wkt)); if (identifiedObject) { return PJ_OBJ::create(NN_NO_CHECK(identifiedObject)); } @@ -442,8 +447,13 @@ PJ_OBJ *proj_obj_create_from_proj_string(PJ_CONTEXT *ctx, (void)options; assert(proj_string); try { + PROJStringParser parser; + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); + if (dbContext) { + parser.attachDatabaseContext(NN_NO_CHECK(dbContext)); + } auto identifiedObject = nn_dynamic_pointer_cast( - PROJStringParser().createFromPROJString(proj_string)); + parser.createFromPROJString(proj_string)); if (identifiedObject) { return PJ_OBJ::create(NN_NO_CHECK(identifiedObject)); } @@ -961,7 +971,8 @@ const char *proj_obj_as_wkt(PJ_CONTEXT *ctx, const PJ_OBJ *obj, const WKTFormatter::Convention convention = static_cast(type); try { - auto formatter = WKTFormatter::create(convention); + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); + auto formatter = WKTFormatter::create(convention, dbContext); for (auto iter = options; iter && iter[0]; ++iter) { const char *value; if ((value = getOptionValue(*iter, "MULTILINE="))) { @@ -1827,7 +1838,7 @@ static GeodeticReferenceFrameNNPtr createGeodeticReferenceFrame( const char *angular_units, double angular_units_conv) { const UnitOfMeasure angUnit( createAngularUnit(angular_units, angular_units_conv)); - auto dbContext = getDBcontext(ctx); + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); auto body = Ellipsoid::guessBodyName(dbContext, semi_major_metre); auto ellpsName = createPropertyMapName(ellps_name); auto ellps = inv_flattening != 0.0 @@ -1847,9 +1858,32 @@ static GeodeticReferenceFrameNNPtr createGeodeticReferenceFrame( : "Reference meridian") : "unnamed"), Angle(prime_meridian_offset, angUnit)); - return GeodeticReferenceFrame::create(createPropertyMapName(datum_name), - ellps, util::optional(), - pm); + + std::string datumName(datum_name ? datum_name : "unnamed"); + if (datumName == "WGS_1984") { + datumName = GeodeticReferenceFrame::EPSG_6326->nameStr(); + } else if (datumName.find('_') != std::string::npos) { + // Likely coming from WKT1 + if (dbContext) { + auto authFactory = + AuthorityFactory::create(NN_NO_CHECK(dbContext), std::string()); + auto res = authFactory->createObjectsFromName( + datumName, + {AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME}, true, + 1); + if (!res.empty()) { + const auto &refDatum = res.front(); + if (metadata::Identifier::isEquivalentName( + datumName.c_str(), refDatum->nameStr().c_str())) { + datumName = refDatum->nameStr(); + } + } + } + } + + return GeodeticReferenceFrame::create( + createPropertyMapName(datumName.c_str()), ellps, + util::optional(), pm); } //! @endcond diff --git a/src/io.cpp b/src/io.cpp index 3a980993..29417c73 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -1925,6 +1925,37 @@ GeodeticReferenceFrameNNPtr WKTParser::Private::buildGeodeticReferenceFrame( .set(Identifier::AUTHORITY_KEY, authNameFromAlias))); properties.set(IdentifiedObject::IDENTIFIERS_KEY, identifiers); } + } else if (name.find('_') != std::string::npos) { + // Likely coming from WKT1 + if (dbContext_) { + auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_), + std::string()); + auto res = authFactory->createObjectsFromName( + name, {AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME}, + true, 1); + if (!res.empty()) { + const auto &refDatum = res.front(); + if (metadata::Identifier::isEquivalentName( + name.c_str(), refDatum->nameStr().c_str())) { + properties.set(IdentifiedObject::NAME_KEY, + refDatum->nameStr()); + if (properties.find(Identifier::CODESPACE_KEY) == + properties.end() && + refDatum->identifiers().size() == 1) { + const auto &id = refDatum->identifiers()[0]; + auto identifiers = ArrayOfBaseObject::create(); + identifiers->add(Identifier::create( + id->code(), PropertyMap() + .set(Identifier::CODESPACE_KEY, + *id->codeSpace()) + .set(Identifier::AUTHORITY_KEY, + *id->codeSpace()))); + properties.set(IdentifiedObject::IDENTIFIERS_KEY, + identifiers); + } + } + } + } } auto ellipsoid = buildEllipsoid(ellipsoidNode); diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 59ba12ca..855ebf36 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -292,6 +292,25 @@ TEST_F(CApi, proj_obj_as_wkt) { // --------------------------------------------------------------------------- +TEST_F(CApi, proj_obj_as_wkt_check_db_use) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, "GEOGCS[\"AGD66\",DATUM[\"Australian_Geodetic_Datum_1966\"," + "SPHEROID[\"Australian National Spheroid\",6378160,298.25]]," + "PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]", + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto wkt = proj_obj_as_wkt(m_ctxt, obj, PJ_WKT1_ESRI, nullptr); + EXPECT_EQ(std::string(wkt), + "GEOGCS[\"GCS_Australian_1966\",DATUM[\"D_Australian_1966\"," + "SPHEROID[\"Australian\",6378160.0,298.25]]," + "PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]"); +} + +// --------------------------------------------------------------------------- + TEST_F(CApi, proj_obj_as_wkt_incompatible_WKT1) { auto obj = proj_obj_create_from_wkt( m_ctxt, @@ -1547,6 +1566,44 @@ TEST_F(CApi, proj_obj_create_geographic_crs) { ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); } + + // Datum with GDAL_WKT1 spelling: special case of WGS_1984 + { + auto obj = proj_obj_create_geographic_crs( + m_ctxt, "WGS 84", "WGS_1984", "WGS 84", 6378137, 298.257223563, + "Greenwich", 0.0, "Degree", 0.0174532925199433, cs); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto objRef = proj_obj_create_from_user_input( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeperobjRef(objRef); + EXPECT_NE(objRef, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(obj, objRef, PJ_COMP_EQUIVALENT)); + } + + // Datum with GDAL_WKT1 spelling: database query + { + auto obj = proj_obj_create_geographic_crs( + m_ctxt, "NAD83", "North_American_Datum_1983", "GRS 1980", 6378137, + 298.257222101, "Greenwich", 0.0, "Degree", 0.0174532925199433, cs); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto objRef = proj_obj_create_from_user_input( + m_ctxt, + GeographicCRS::EPSG_4269->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeperobjRef(objRef); + EXPECT_NE(objRef, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(obj, objRef, PJ_COMP_EQUIVALENT)); + } } // --------------------------------------------------------------------------- diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 0cf36766..6a2de028 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -401,6 +401,33 @@ TEST(wkt_parse, wkt1_EPSG_4326) { // --------------------------------------------------------------------------- +TEST(wkt_parse, wkt1_EPSG_4267) { + auto obj = + WKTParser() + .attachDatabaseContext(DatabaseContext::create()) + .createFromWKT( + "GEOGCS[\"NAD27\"," + " DATUM[\"North_American_Datum_1927\"," + " SPHEROID[\"Clarke 1866\",6378206.4,294.978698213898," + " AUTHORITY[\"EPSG\",\"7008\"]]," + " AUTHORITY[\"EPSG\",\"6267\"]]," + " PRIMEM[\"Greenwich\",0," + " AUTHORITY[\"EPSG\",\"8901\"]]," + " UNIT[\"degree\",0.0174532925199433," + " AUTHORITY[\"EPSG\",\"9122\"]]," + " AUTHORITY[\"EPSG\",\"4267\"]]"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + + auto datum = crs->datum(); + ASSERT_EQ(datum->identifiers().size(), 1); + EXPECT_EQ(datum->identifiers()[0]->code(), "6267"); + EXPECT_EQ(*(datum->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(datum->nameStr(), "North American Datum 1927"); +} + +// --------------------------------------------------------------------------- + TEST(wkt_parse, wkt1_EPSG_4807_grad_mess) { auto obj = WKTParser().createFromWKT( "GEOGCS[\"NTF (Paris)\",\n" -- cgit v1.2.3 From 872751c6734487bf1a222f2358678aa27ceeab4f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 30 Nov 2018 21:38:31 +0100 Subject: projinfo: add a --single-line option --- src/projinfo.cpp | 51 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/src/projinfo.cpp b/src/projinfo.cpp index dbbcdae2..8ed8e14a 100644 --- a/src/projinfo.cpp +++ b/src/projinfo.cpp @@ -65,6 +65,7 @@ struct OutputOptions { bool WKT1_GDAL = false; bool WKT1_ESRI = false; bool c_ify = false; + bool singleLine = false; }; // --------------------------------------------------------------------------- @@ -86,6 +87,7 @@ static void usage() { << " [--main-db-path path] [--aux-db-path path]*" << std::endl << " [--identify]" << std::endl + << " [--c-ify] [--single-line]" << std::endl << " {object_definition} | (-s {srs_def} -t {srs_def})" << std::endl; std::cerr << std::endl; @@ -263,9 +265,12 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, if (!outputOpt.quiet) { std::cout << "WKT2_2015 string: " << std::endl; } - auto wkt = wktExportable->exportToWKT( - WKTFormatter::create(WKTFormatter::Convention::WKT2_2015) - .get()); + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2015); + if (outputOpt.singleLine) { + formatter->setMultiLine(false); + } + auto wkt = wktExportable->exportToWKT(formatter.get()); if (outputOpt.c_ify) { wkt = c_ify_string(wkt); } @@ -285,10 +290,12 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, if (!outputOpt.quiet) { std::cout << "WKT2_2015_SIMPLIFIED string: " << std::endl; } - auto wkt = wktExportable->exportToWKT( - WKTFormatter::create( - WKTFormatter::Convention::WKT2_2015_SIMPLIFIED) - .get()); + auto formatter = WKTFormatter::create( + WKTFormatter::Convention::WKT2_2015_SIMPLIFIED); + if (outputOpt.singleLine) { + formatter->setMultiLine(false); + } + auto wkt = wktExportable->exportToWKT(formatter.get()); if (outputOpt.c_ify) { wkt = c_ify_string(wkt); } @@ -308,9 +315,12 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, if (!outputOpt.quiet) { std::cout << "WKT2_2018 string: " << std::endl; } - auto wkt = wktExportable->exportToWKT( - WKTFormatter::create(WKTFormatter::Convention::WKT2_2018) - .get()); + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); + if (outputOpt.singleLine) { + formatter->setMultiLine(false); + } + auto wkt = wktExportable->exportToWKT(formatter.get()); if (outputOpt.c_ify) { wkt = c_ify_string(wkt); } @@ -330,10 +340,12 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, if (!outputOpt.quiet) { std::cout << "WKT2_2018_SIMPLIFIED string: " << std::endl; } - auto wkt = wktExportable->exportToWKT( - WKTFormatter::create( - WKTFormatter::Convention::WKT2_2018_SIMPLIFIED) - .get()); + auto formatter = WKTFormatter::create( + WKTFormatter::Convention::WKT2_2018_SIMPLIFIED); + if (outputOpt.singleLine) { + formatter->setMultiLine(false); + } + auto wkt = wktExportable->exportToWKT(formatter.get()); if (outputOpt.c_ify) { wkt = c_ify_string(wkt); } @@ -364,9 +376,12 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, objToExport = wktExportable; } - auto wkt = objToExport->exportToWKT( - WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL) - .get()); + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL); + if (outputOpt.singleLine) { + formatter->setMultiLine(false); + } + auto wkt = objToExport->exportToWKT(formatter.get()); if (outputOpt.c_ify) { wkt = c_ify_string(wkt); } @@ -684,6 +699,8 @@ int main(int argc, char **argv) { outputOpt.quiet = true; } else if (arg == "--c-ify") { outputOpt.c_ify = true; + } else if (arg == "--single-line") { + outputOpt.singleLine = true; } else if (arg == "--summary") { summary = true; } else if (ci_equal(arg, "--boundcrs-to-wgs84")) { -- cgit v1.2.3 From fa11a21801ac1f8afaa768390c46f5226089b090 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 30 Nov 2018 21:40:16 +0100 Subject: Add ESRI 'Central_Parallel' as an alias of other similar parameters --- src/coordinateoperation.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/coordinateoperation.cpp b/src/coordinateoperation.cpp index fe22448f..6ecd3838 100644 --- a/src/coordinateoperation.cpp +++ b/src/coordinateoperation.cpp @@ -162,7 +162,8 @@ static std::set buildSetEquivalentParameters() { {WKT1_LATITUDE_OF_ORIGIN, WKT1_LATITUDE_OF_CENTER, EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN, - EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, nullptr}, + EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, "Central_Parallel", + nullptr}, {WKT1_CENTRAL_MERIDIAN, WKT1_LONGITUDE_OF_CENTER, EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, -- cgit v1.2.3 From 18dbc00dc30db7ca5fa7bd6a00115628324dcd0c Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 1 Dec 2018 17:29:19 +0100 Subject: importFromWKT: deal with uncommon formulation of EPSG:3857 --- src/io.cpp | 28 +++++++++++++++++++++------- test/unit/test_operation.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/io.cpp b/src/io.cpp index 29417c73..691d96e3 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -3299,6 +3299,18 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard( // --------------------------------------------------------------------------- +static ProjectedCRSNNPtr createPseudoMercator(PropertyMap &props) { + auto conversion = Conversion::createPopularVisualisationPseudoMercator( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0), + Angle(0), Length(0), Length(0)); + props.set(IdentifiedObject::NAME_KEY, "WGS 84 / Pseudo-Mercator"); + return ProjectedCRS::create( + props, GeographicCRS::EPSG_4326, conversion, + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + ProjectedCRSNNPtr WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { @@ -3312,13 +3324,15 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { auto props = buildProperties(node); if (isNull(conversionNode) && hasWebMercPROJ4String(node, projectionNode)) { - auto conversion = Conversion::createPopularVisualisationPseudoMercator( - PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0), - Angle(0), Length(0), Length(0)); - props.set(IdentifiedObject::NAME_KEY, "WGS 84 / Pseudo-Mercator"); - return ProjectedCRS::create( - props, GeographicCRS::EPSG_4326, conversion, - CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + return createPseudoMercator(props); + } + + const std::string projectedCRSName = stripQuotes(nodeP->children()[0]); + // Particular case for corrupted ESRI WKT generated by older GDAL versions + // https://trac.osgeo.org/gdal/changeset/30732 + if (metadata::Identifier::isEquivalentName(projectedCRSName.c_str(), + "WGS_84_Pseudo_Mercator")) { + return createPseudoMercator(props); } auto &baseGeodCRSNode = diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index c2e35e89..bb8221fd 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -3187,6 +3187,44 @@ TEST(operation, webmerc_import_from_WKT2_EPSG_3785_deprecated) { // --------------------------------------------------------------------------- +TEST(operation, webmerc_import_from_broken_esri_WGS_84_Pseudo_Mercator) { + + // Likely the result of a broken export of GDAL morphToESRI() + auto wkt1 = "PROJCS[\"WGS_84_Pseudo_Mercator\",GEOGCS[\"GCS_WGS_1984\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137,298.257223563]],PRIMEM[\"Greenwich\",0]," + "UNIT[\"Degree\",0.017453292519943295]]," + "PROJECTION[\"Mercator\"],PARAMETER[\"central_meridian\",0]," + "PARAMETER[\"false_easting\",0]," + "PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]," + "PARAMETER[\"standard_parallel_1\",0.0]]"; + + auto obj = WKTParser().createFromWKT(wkt1); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + + auto convGot = crs->derivingConversion(); + + EXPECT_EQ(convGot->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"unnamed\",\n" + " METHOD[\"Popular Visualisation Pseudo Mercator\",\n" + " ID[\"EPSG\",1024]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); +} + +// --------------------------------------------------------------------------- + TEST(operation, mollweide_export) { auto conv = Conversion::createMollweide(PropertyMap(), Angle(1), Length(2), -- cgit v1.2.3 From 23bf8bf5977073a91353f992ee0dd608be1d45fe Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 1 Dec 2018 17:57:32 +0100 Subject: Rename test/old/ to test/cli/ to better reflect their nature --- cmake/ProjTest.cmake | 2 +- configure.ac | 2 +- test/CMakeLists.txt | 2 +- test/Makefile.am | 2 +- test/cli/CMakeLists.txt | 12 + test/cli/Makefile.am | 35 ++ test/cli/ntv2_out.dist | 11 + test/cli/pj_out27.dist | 265 ++++++++++++ test/cli/pj_out83.dist | 225 +++++++++++ test/cli/proj_outIGNF.dist | 40 ++ test/cli/td_out.dist | 25 ++ test/cli/test27 | 849 +++++++++++++++++++++++++++++++++++++++ test/cli/test83 | 730 +++++++++++++++++++++++++++++++++ test/cli/testIGNF | 175 ++++++++ test/cli/testdatumfile | 115 ++++++ test/cli/testflaky | 75 ++++ test/cli/testntv2 | 75 ++++ test/cli/testvarious | 978 +++++++++++++++++++++++++++++++++++++++++++++ test/cli/tf_out.dist | 13 + test/cli/tv_out.dist | 462 +++++++++++++++++++++ test/old/CMakeLists.txt | 12 - test/old/Makefile.am | 35 -- test/old/ntv2_out.dist | 11 - test/old/pj_out27.dist | 265 ------------ test/old/pj_out83.dist | 225 ----------- test/old/proj_outIGNF.dist | 40 -- test/old/td_out.dist | 25 -- test/old/test27 | 849 --------------------------------------- test/old/test83 | 730 --------------------------------- test/old/testIGNF | 175 -------- test/old/testdatumfile | 115 ------ test/old/testflaky | 75 ---- test/old/testntv2 | 75 ---- test/old/testvarious | 978 --------------------------------------------- test/old/tf_out.dist | 13 - test/old/tv_out.dist | 462 --------------------- 36 files changed, 4089 insertions(+), 4089 deletions(-) create mode 100644 test/cli/CMakeLists.txt create mode 100644 test/cli/Makefile.am create mode 100644 test/cli/ntv2_out.dist create mode 100644 test/cli/pj_out27.dist create mode 100644 test/cli/pj_out83.dist create mode 100644 test/cli/proj_outIGNF.dist create mode 100644 test/cli/td_out.dist create mode 100755 test/cli/test27 create mode 100755 test/cli/test83 create mode 100755 test/cli/testIGNF create mode 100755 test/cli/testdatumfile create mode 100755 test/cli/testflaky create mode 100755 test/cli/testntv2 create mode 100755 test/cli/testvarious create mode 100644 test/cli/tf_out.dist create mode 100644 test/cli/tv_out.dist delete mode 100644 test/old/CMakeLists.txt delete mode 100644 test/old/Makefile.am delete mode 100644 test/old/ntv2_out.dist delete mode 100644 test/old/pj_out27.dist delete mode 100644 test/old/pj_out83.dist delete mode 100644 test/old/proj_outIGNF.dist delete mode 100644 test/old/td_out.dist delete mode 100755 test/old/test27 delete mode 100755 test/old/test83 delete mode 100755 test/old/testIGNF delete mode 100755 test/old/testdatumfile delete mode 100755 test/old/testflaky delete mode 100755 test/old/testntv2 delete mode 100755 test/old/testvarious delete mode 100644 test/old/tf_out.dist delete mode 100644 test/old/tv_out.dist diff --git a/cmake/ProjTest.cmake b/cmake/ProjTest.cmake index 9d886f5e..46c4e515 100644 --- a/cmake/ProjTest.cmake +++ b/cmake/ProjTest.cmake @@ -23,7 +23,7 @@ function(proj_add_test_script_sh SH_NAME BIN_USE) if(${TEST_OK}) add_test( NAME "${testname}" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/data - COMMAND ${PROJECT_SOURCE_DIR}/test/old/${SH_NAME} + COMMAND ${PROJECT_SOURCE_DIR}/test/cli/${SH_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}} ) endif(${TEST_OK}) diff --git a/configure.ac b/configure.ac index 25675d6a..4b400858 100644 --- a/configure.ac +++ b/configure.ac @@ -351,7 +351,7 @@ dnl Generate files dnl --------------------------------------------------------------------------- AC_CONFIG_FILES([Makefile cmake/Makefile src/Makefile include/Makefile include/proj/Makefile include/proj/internal/Makefile - test/Makefile test/old/Makefile test/gie/Makefile test/gigs/Makefile test/unit/Makefile + test/Makefile test/cli/Makefile test/gie/Makefile test/gigs/Makefile test/unit/Makefile test/googletest/Makefile test/googletest/include/Makefile test/googletest/include/gtest/Makefile test/googletest/include/gtest/internal/Makefile diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ae3d6bf4..c46ad5d7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -52,5 +52,5 @@ proj_add_gie_test("GIGS-5208" "gigs/5208.gie") # ${TEST_MAIN_SRC} # ${CATCH2_INCLUDE} ) -add_subdirectory(old) +add_subdirectory(cli) add_subdirectory(unit) diff --git a/test/Makefile.am b/test/Makefile.am index 428e1650..b65e9785 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -7,4 +7,4 @@ EXTRA_DIST = CMakeLists.txt # libtestmain_la_LDFLAGS = -no-undefined # libtestmain_la_SOURCES = test_main.cpp -SUBDIRS = old googletest . gie gigs unit +SUBDIRS = cli googletest . gie gigs unit diff --git a/test/cli/CMakeLists.txt b/test/cli/CMakeLists.txt new file mode 100644 index 00000000..d197b2aa --- /dev/null +++ b/test/cli/CMakeLists.txt @@ -0,0 +1,12 @@ +# +# test +# +set(CS2CS_BIN "cs2cs") +set(PROJ_BIN "proj") +proj_add_test_script_sh("test27" PROJ_BIN ) +proj_add_test_script_sh("test83" PROJ_BIN ) +proj_add_test_script_sh("testvarious" CS2CS_BIN ) +proj_add_test_script_sh("testdatumfile" CS2CS_BIN "connu") +proj_add_test_script_sh("testIGNF" CS2CS_BIN "ntf_r93.gsb") +proj_add_test_script_sh("testntv2" CS2CS_BIN "ntv2_0.gsb") + diff --git a/test/cli/Makefile.am b/test/cli/Makefile.am new file mode 100644 index 00000000..f1bd4543 --- /dev/null +++ b/test/cli/Makefile.am @@ -0,0 +1,35 @@ +# Executables paths passed to test scripts +DATAPATH = ../../data +THIS_DIR = $(top_srcdir)/test/cli +EXEPATH = ../../src +PROJEXE = $(EXEPATH)/proj +CS2CSEXE = $(EXEPATH)/cs2cs + +# PROJ.4 test scripts +TEST27 = $(THIS_DIR)/test27 +TEST83 = $(THIS_DIR)/test83 +TESTNTV2 = $(THIS_DIR)/testntv2 +TESTVARIOUS = $(THIS_DIR)/testvarious +TESTFLAKY = $(THIS_DIR)/testflaky +TESTDATUMFILE = $(THIS_DIR)/testdatumfile +TESTIGN = $(THIS_DIR)/testIGNF + +EXTRA_DIST = pj_out27.dist pj_out83.dist td_out.dist \ + test27 test83 tv_out.dist tf_out.dist \ + testflaky testvarious testdatumfile testntv2 ntv2_out.dist \ + testIGNF proj_outIGNF.dist \ + CMakeLists.txt + +check-local: + $(TEST27) $(PROJEXE) + $(TEST83) $(PROJEXE) + PROJ_LIB=$(DATAPATH) $(TESTVARIOUS) $(CS2CSEXE) + @if [ -f $(DATAPATH)/conus ] ; then \ + PROJ_LIB=$(DATAPATH) $(TESTDATUMFILE) $(CS2CSEXE) ; \ + fi + @if [ -f $(DATAPATH)/ntf_r93.gsb ] ; then \ + PROJ_LIB=$(DATAPATH) $(TESTIGN) $(CS2CSEXE) ; \ + fi + @if [ -f $(DATAPATH)/ntv2_0.gsb ] ; then \ + PROJ_LIB=$(DATAPATH) $(TESTNTV2) $(CS2CSEXE) ; \ + fi diff --git a/test/cli/ntv2_out.dist b/test/cli/ntv2_out.dist new file mode 100644 index 00000000..5ce26e6e --- /dev/null +++ b/test/cli/ntv2_out.dist @@ -0,0 +1,11 @@ +############################################################## +Point in the ONwinsor subgrid. +82d00'00.000"W 42d00'00.000"N 0.0 81d59'59.6104"W 42d0'0.1602"N 0.000 +82d00'01.000"W 42d00'00.000"N 0.0 82d0'0.6104"W 42d0'0.1602"N 0.000 +82d00'02.000"W 42d00'00.000"N 0.0 82d0'1.6104"W 42d0'0.1602"N 0.000 +84d00'00.000"W 42d00'00.000"N 0.0 83d59'59.8593"W 42d0'0.18"N 0.000 +############################################################## +Try with NTv2 and NTv1 together ... falls back to NTv1 +99d00'00.000"W 65d00'00.000"N 0.0 99d0'1.5885"W 65d0'1.3482"N 0.000 +111d00'00.000"W 46d00'00.000"N 0.0 111d0'3.1549"W 45d59'59.7528"N 0.000 +111d00'00.000"W 47d30'00.000"N 0.0 111d0'2.7989"W 47d29'59.9896"N 0.000 diff --git a/test/cli/pj_out27.dist b/test/cli/pj_out27.dist new file mode 100644 index 00000000..632dfc62 --- /dev/null +++ b/test/cli/pj_out27.dist @@ -0,0 +1,265 @@ + -134d00'00.000 55d00'00.000 2615716.535 1156768.938 2615716.535 1156768.938 AK 1 GP1 + -133d40'00.000 57d00'00.000 2685642.815 1887198.473 2685642.815 1887198.473 AK 1 GP2 + -131d35'45.432 54d39'02.654 3124247.971 1035731.647 3124247.971 1035731.647 AK 1 GP3 + -129d32'30.000 54d32'30.000 3561180.429 1015414.284 3561180.429 1015414.284 AK 1 GP4 + -141d30'00.000 60d30'00.000 1275974.313 3248584.184 1275974.313 3248584.184 AK 1 GP6 + -142d00'00.000 56d30'30.000 500000.000 916085.508 500000.000 916085.508 AK 2 GP1 + -146d00'00.000 56d30'30.000 500000.000 916085.508 500000.000 916085.508 AK 3 GP1 + -150d00'00.000 56d30'30.000 500000.000 916085.508 500000.000 916085.508 AK 4 GP1 + -152d28'56.134 60d53'28.765 770312.640 2520850.030 770312.640 2520850.031 AK 5 GP1 + -154d00'00.000 56d30'30.000 500000.000 916085.508 500000.000 916085.508 AK 5 GP2 + -155d00'00.000 71d00'00.000 857636.168 6224356.319 857636.168 6224356.320 AK 6 GP1 + -158d00'00.000 71d00'00.000 500000.000 6215501.077 500000.000 6215501.078 AK 6 GP1 + -162d00'00.000 65d15'00.000 700000.000 4111525.685 700000.000 4111525.687 AK 7 GP1 + -166d00'00.000 65d15'00.000 500000.000 4111525.685 500000.000 4111525.687 AK 8 GP1 + -170d00'00.000 63d20'00.000 600000.000 3410550.007 600000.000 3410550.008 AK 9 GP1 + -164d02'30.000 54d27'30.000 5533424.392 1473805.123 5533424.392 1473805.123 AK10 GP1 + -176d00'00.000 52d30'00.000 3000000.000 547583.333 3000000.000 547583.333 AK10 GP2 + -85d50'00.000 31d20'00.000 500000.000 303093.746 500000.000 303093.746 AL E GP1 + -85d12'41.738 32d38'57.737 691376.573 782394.791 691376.573 782394.791 AL E GP2 + -86d36'58.670 34d48'58.708 264979.900 1571249.667 264979.900 1571249.667 AL E GP3 + -87d30'00.000 33d20'00.000 500000.000 1212487.425 500000.000 1212487.425 AL W GP1 + -87d30'00.000 33d20'30.000 500000.000 1215519.455 500000.000 1215519.455 AL W GP2 + -91d34'46.321 35d18'37.443 2125448.748 355890.988 2125448.748 355890.988 AR N GP1 + -92d04'11.625 35d19'34.269 1979150.162 361375.766 1979150.162 361375.766 AR N GP2 + -92d00'00.000 34d45'00.000 2000000.000 758096.040 2000000.000 758096.040 AR S GP1 + -92d00'00.000 33d15'00.000 2000000.000 212263.845 2000000.000 212263.845 AR S GP2 + -170d00'00.000 -14d16'00.000 500000.000 312234.650 500000.000 312234.650 AS GP1 + -166d50'38.406 -9d34'41.556 1640416.676 2007870.029 1640416.676 2007870.029 AS GP2 + -111d55'00.000 34d45'00.000 500000.000 1364267.386 500000.000 1364267.386 AZ C GP1 + -111d55'00.000 32d20'00.000 500000.000 484978.270 500000.000 484978.270 AZ C GP2 + -110d24'59.771 35d09'58.568 425301.125 1515853.425 425301.125 1515853.426 AZ E GP1 + -109d34'33.127 31d59'53.103 683147.830 363527.538 683147.830 363527.538 AZ E GP2 + -110d30'34.948 35d07'28.243 397422.297 1500739.241 397422.297 1500739.241 AZ E GP3 + -109d45'13.226 32d08'41.778 627823.092 416691.532 627823.092 416691.532 AZ E GP4 + -113d45'00.000 34d45'00.000 500000.000 1364312.866 500000.000 1364312.866 AZ W GP1 + -113d45'00.000 34d45'30.000 500000.000 1367345.603 500000.000 1367345.603 AZ W GP2 + -113d45'00.000 34d46'00.000 500000.000 1370378.345 500000.000 1370378.345 AZ W GP3 + -122d00'00.000 41d30'00.000 2000000.000 789314.699 2000000.000 789314.699 CA 1 GP1 + -122d00'00.000 41d30'30.000 2000000.000 792351.052 2000000.000 792351.052 CA 1 GP2 + -122d00'00.000 39d20'00.000 2000000.000 606975.074 2000000.000 606975.074 CA 2 GP1 + -122d00'00.000 39d20'30.000 2000000.000 610010.158 2000000.000 610010.158 CA 2 GP2 + -120d30'00.000 37d05'00.000 2000000.000 212394.029 2000000.000 212394.029 CA 3 GP1 + -121d22'26.019 37d30'30.324 1746516.910 368350.900 1746516.910 368350.900 CA 3 GP2 + -119d46'32.733 37d07'41.470 2211146.746 229541.692 2211146.746 229541.692 CA 3 GP3 + -119d38'26.434 36d55'48.009 2251190.696 157720.169 2251190.696 157720.169 CA 3 GP4 + -120d42'59.779 38d06'52.815 1937681.203 587984.757 1937681.203 587984.757 CA 3 GP5 + -119d00'00.000 36d20'00.000 2000000.000 364036.106 2000000.000 364036.106 CA 4 GP1 + -119d00'00.000 36d20'30.000 2000000.000 367069.711 2000000.000 367069.711 CA 4 GP2 + -118d00'00.000 34d45'00.000 2000000.000 454894.032 2000000.000 454894.032 CA 5 GP1 + -118d00'00.000 34d45'30.000 2000000.000 457926.735 2000000.000 457926.735 CA 5 GP2 + -116d15'00.000 33d20'00.000 2000000.000 424481.703 2000000.000 424481.703 CA 6 GP1 + -116d15'00.000 33d20'30.000 2000000.000 427513.796 2000000.000 427513.796 CA 6 GP2 + -118d20'00.000 34d30'00.000 4186692.580 4294365.712 4186692.580 4294365.712 CA 7 GP1 + -105d30'00.000 39d15'00.000 2000000.000 515936.228 2000000.000 515936.228 CO C GP1 + -105d30'00.000 39d15'30.000 2000000.000 518971.313 2000000.000 518971.313 CO C GP2 + -108d45'55.378 40d25'33.504 1091086.832 414752.176 1091086.832 414752.176 CO N GP1 + -105d14'45.588 40d12'42.711 2070940.652 320120.166 2070940.652 320120.166 CO N GP2 + -105d30'00.000 37d30'00.000 2000000.000 303425.100 2000000.000 303425.100 CO S GP1 + -105d30'00.000 37d30'30.000 2000000.000 306459.335 2000000.000 306459.335 CO S GP2 + -72d43'30.515 41d16'55.847 606832.139 163540.219 606832.139 163540.219 CT GP1 + -73d01'15.609 41d13'25.985 525446.203 142415.891 525446.203 142415.891 CT GP2 + -75d33'00.748 39d21'15.214 462235.881 493228.846 462235.881 493228.846 DE GP1 + -75d19'01.889 39d45'14.765 527969.596 638870.822 527969.596 638870.822 DE GP2 + -80d11'00.000 25d45'00.000 768810.056 515637.939 768810.056 515637.939 FL E GP1 + -82d45'52.412 29d39'06.589 2551254.254 241240.008 2551254.254 241240.008 FL N GP1 + -84d55'11.533 29d38'51.982 1866620.008 235814.655 1866620.008 235814.655 FL N GP2 + -82d38'00.000 27d47'00.000 295216.148 1254408.638 295216.148 1254408.638 FL W GP1 + -81d27'15.592 32d38'03.003 719287.314 958818.262 719287.314 958818.262 GA E GP1 + -83d15'39.990 33d29'58.626 166361.311 1274706.363 166361.311 1274706.363 GA E GP2 + -84d23'00.000 33d45'00.000 434141.824 1364117.672 434141.824 1364117.672 GA W GP1 + 144d44'55.503 13d28'20.879 164041.712 164041.680 164041.712 164041.680 GU GP1 + 144d38'07.193 13d20'20.538 123728.401 115623.086 123728.401 115623.086 GU GP2 + -155d59'16.911 19d37'23.477 332050.939 287068.342 332050.939 287068.342 HI 1 GP1 + -155d18'06.262 19d31'24.578 568270.061 250663.241 568270.061 250663.241 HI 1 GP2 + -155d30'00.000 19d42'00.000 500000.000 314722.985 500000.000 314722.985 HI 1 GP3 + -155d30'00.000 19d42'30.000 500000.000 317749.315 500000.000 317749.315 HI 1 GP4 + -156d40'00.000 20d42'00.000 500000.000 133170.903 500000.000 133170.903 HI 2 GP1 + -156d40'00.000 20d42'30.000 500000.000 136197.580 500000.000 136197.580 HI 2 GP2 + -158d00'00.000 21d30'00.000 500000.000 121078.981 500000.000 121078.981 HI 3 GP1 + -158d01'30.000 21d37'30.000 491508.215 166485.537 491508.215 166485.537 HI 3 GP2 + -159d30'00.000 22d05'00.000 500000.000 90816.138 500000.000 90816.138 HI 4 GP1 + -160d10'00.000 21d42'00.000 500000.000 12108.532 500000.000 12108.532 HI 5 GP1 + -93d28'33.966 42d44'50.101 2006419.316 454523.076 2006419.316 454523.076 IA N GP1 + -93d54'22.084 42d40'23.699 1890779.351 427816.212 1890779.351 427816.212 IA N GP2 + -93d37'00.000 41d35'00.000 1968081.762 576880.709 1968081.762 576880.709 IA S GP1 + -114d24'00.000 42d56'00.000 392878.009 461838.231 392878.009 461838.231 ID C GP1 + -111d42'29.824 43d48'07.616 621017.480 778569.749 621017.480 778569.749 ID E GP1 + -112d22'35.516 43d35'26.260 444398.356 701217.958 444398.356 701217.958 ID E GP2 + -116d22'02.592 48d07'50.941 349231.302 2357247.272 349231.302 2357247.272 ID W GP1 + -88d07'06.790 41d46'11.855 558591.507 1858801.531 558591.507 1858801.531 IL E GP1 + -88d41'35.208 40d43'37.202 400279.755 1478930.010 400279.755 1478930.010 IL E GP2 + -90d10'00.000 38d30'00.000 500000.000 667527.020 500000.000 667527.020 IL W GP1 + -85d40'00.000 40d00'00.000 500000.000 910470.785 500000.000 910470.786 IN E GP1 + -85d40'00.000 40d00'30.000 500000.000 913506.350 500000.000 913506.351 IN E GP2 + -86d14'27.780 40d00'12.690 339087.973 912273.324 339087.973 912273.325 IN E GP3 + -86d14'27.790 40d00'31.660 339099.565 914192.836 339099.565 914192.836 IN E GP4 + -86d14'28.103 40d00'47.412 339085.485 915786.883 339085.485 915786.883 IN E GP6 + -87d05'00.000 40d00'00.000 500000.000 910470.785 500000.000 910470.786 IN W GP1 + -87d05'00.000 40d00'30.000 500000.000 913506.350 500000.000 913506.351 IN W GP2 + -86d45'10.717 39d41'24.840 592969.921 797807.077 592969.921 797807.077 IN W GP3 + -87d41'44.075 37d54'24.755 323351.583 148732.658 323351.583 148732.658 IN W GP4 + -86d32'13.179 39d32'46.419 654071.692 745650.467 654071.692 745650.467 IN W GP5 + -87d25'26.675 38d26'17.646 402398.078 341828.410 402398.078 341828.410 IN W GP6 + -86d14'28.103 40d00'47.412 735905.989 916383.007 735905.989 916383.007 IN W GP7 + -86d14'27.780 40d00'12.690 735964.329 912869.812 735964.329 912869.812 IN W GP8 + -86d14'27.790 40d00'31.660 735945.409 914789.331 735945.409 914789.331 IN W GP9 + -96d47'54.567 38d58'52.096 2341555.463 238196.375 2341555.463 238196.375 KS N GP1 + -98d35'23.954 39d58'41.967 1834645.786 599682.614 1834645.786 599682.614 KS N GP2 + -97d21'00.000 37d42'00.000 2332714.529 378302.303 2332714.529 378302.303 KS S GP1 + -84d05'43.283 38d14'35.963 2044414.776 270720.831 2044414.776 270720.831 KY N GP1 + -84d26'49.265 39d04'03.099 1944057.054 570906.807 1944057.054 570906.807 KY N GP2 + -86d05'00.000 37d10'00.000 1902871.440 303569.007 1902871.440 303569.007 KY S GP1 + -91d34'46.483 31d57'26.243 2285456.159 470671.781 2285456.159 470671.781 LA N GP1 + -92d52'46.615 32d54'52.264 1883486.181 817905.853 1883486.181 817905.853 LA N GP2 + -91d29'09.480 31d56'44.721 2314527.078 466735.568 2314527.078 466735.568 LA N GP3 + -93d59'38.241 32d48'43.467 1540965.776 783590.902 1540965.776 783590.902 LA N GP4 + -89d00'00.000 28d50'00.000 2747176.527 68218.410 2747176.527 68218.410 LA S GP1 + -89d30'00.000 28d50'00.000 2587082.796 65307.429 2587082.796 65307.429 LA S GP2 + -89d29'59.999 29d19'59.994 2584173.994 247106.020 2584173.994 247106.020 LA S GP3 + -89d00'00.004 29d19'59.998 2743474.038 250002.972 2743474.038 250002.972 LA S GP4 + -89d10'23.487 29d20'32.615 2688234.966 252215.035 2688234.966 252215.035 LA S GP5 + -89d06'34.632 29d15'19.642 2709099.980 220994.973 2709099.980 220994.973 LA S GP6 + -89d01'33.803 29d07'47.918 2736661.987 175901.967 2736661.987 175901.967 LA S GP7 + -89d08'45.781 28d58'27.979 2699434.976 118600.021 2699434.976 118600.021 LA S GP9 + -70d30'00.000 41d30'00.000 200000.000 182180.613 200000.000 182180.613 MA I GP1 + -70d27'00.716 41d40'15.808 886823.958 246295.510 886823.958 246295.510 MA M GP1 + -73d25'59.173 42d06'06.860 75432.106 407473.253 75432.106 407473.253 MA M GP2 + -76d11'27.492 39d12'06.132 1029272.677 499353.154 1029272.677 499353.154 MD GP1 + -77d02'30.406 38d26'37.492 788033.549 222300.512 788033.549 222300.512 MD GP2 + -77d30'10.460 38d59'25.903 657055.715 421819.661 657055.715 421819.661 MD GP3 + -68d24'25.489 46d32'46.920 523379.868 989125.403 523379.868 989125.403 ME E GP1 + -68d37'29.366 47d02'12.659 468876.638 1168006.571 468876.638 1168006.571 ME E GP2 + -70d16'00.000 43d40'00.000 473538.933 303746.300 473538.933 303746.300 ME W GP1 + -85d40'00.000 44d45'00.000 1653612.784 525406.529 1653612.784 525406.529 MI C GP1 + -83d29'17.919 42d19'19.299 2228532.810 300724.433 2228532.810 300724.433 MI S GP1 + -83d35'24.656 42d20'02.682 2200944.119 304856.048 2200944.119 304856.048 MI S GP2 + -85d55'26.569 41d50'10.236 1566471.427 126614.633 1566471.427 126614.633 MI S GP3 + -85d45'59.490 41d49'22.346 1609315.113 120996.336 1609315.113 120996.336 MI S GP4 + -89d20'00.000 46d50'00.000 353999.488 1944621.410 353999.488 1944621.410 MI W GP1 + -91d27'51.183 47d08'19.177 2407087.310 237254.364 2407087.310 237254.364 MN N GP1 + -95d51'05.998 48d19'26.552 1330690.998 677229.560 1330690.998 677229.560 MN N GP2 + -92d30'00.000 38d15'00.000 500000.000 879833.618 500000.000 879833.618 MO C GP1 + -92d30'00.000 38d15'30.000 500000.000 882868.158 500000.000 882868.158 MO C GP2 + -91d42'04.297 37d22'05.932 150919.587 561018.126 150919.587 561018.127 MO E GP1 + -90d08'08.896 36d53'44.124 606497.861 386893.306 606497.861 386893.306 MO E GP2 + -94d30'00.000 38d15'00.000 500000.000 758504.732 500000.000 758504.732 MO W GP1 + -94d30'00.000 38d15'30.000 500000.000 761539.296 500000.000 761539.296 MO W GP2 + -89d10'14.013 30d30'51.338 393805.810 308399.629 393805.810 308399.629 MS E GP1 + -88d26'04.338 30d43'01.454 625321.316 382224.788 625321.316 382224.788 MS E GP2 + -90d10'00.000 32d17'00.000 551507.962 648697.041 551507.962 648697.041 MS W GP1 + -109d25'00.000 47d05'00.000 2020760.609 455889.692 2020760.609 455889.692 MT C GP1 + -106d29'11.521 47d52'21.103 2739443.845 332808.759 2739443.845 332808.759 MT N GP1 + -114d30'43.122 48d52'46.764 794693.447 725072.329 794693.447 725072.329 MT N GP2 + -109d15'00.000 45d39'00.000 2063931.561 601700.560 2063931.561 601700.560 MT S GP1 + -81d12'31.790 35d09'31.049 1339854.041 519988.737 1339854.041 519988.737 NC GP1 + -76d31'54.918 35d33'51.452 2733941.071 669408.798 2733941.071 669408.798 NC GP2 + -78d28'26.580 36d15'15.480 2155088.262 911860.343 2155088.262 911860.343 NC GP3 + -98d46'03.232 48d08'13.483 2422983.823 419525.823 2422983.823 419525.823 ND N GP1 + -101d18'21.456 47d39'18.935 1801367.700 240053.997 1801367.700 240053.997 ND N GP2 + -100d46'00.000 46d48'00.000 1933213.911 413422.204 1933213.911 413422.204 ND S GP1 + -96d17'52.930 42d04'48.305 3004688.243 293978.208 3004688.243 293978.208 NE N GP1 + -100d49'26.949 41d58'54.025 1775916.042 237340.591 1775916.042 237340.591 NE N GP2 + -96d43'00.000 40d49'00.000 2770252.364 431225.617 2770252.364 431225.617 NE S GP1 + -70d56'11.287 43d08'15.006 694907.496 233185.793 694907.496 233185.793 NH GP1 + -72d32'32.197 42d51'25.984 265213.564 131404.574 265213.564 131404.574 NH GP2 + -74d13'55.737 39d52'02.095 2121971.499 376878.657 2121971.499 376878.657 NJ GP1 + -74d51'24.058 41d12'07.401 1947709.569 862915.876 1947709.569 862915.876 NJ GP2 + -106d15'00.000 33d30'00.000 500000.000 909419.295 500000.000 909419.295 NM C GP1 + -106d15'00.000 33d30'30.000 500000.000 912451.306 500000.000 912451.306 NM C GP2 + -104d11'42.410 33d17'21.732 542236.924 832820.301 542236.924 832820.301 NM E GP1 + -104d47'37.948 33d22'32.349 359406.535 864495.731 359406.535 864495.732 NM E GP2 + -107d50'00.000 32d30'00.000 500000.000 545616.897 500000.000 545616.897 NM W GP1 + -107d50'00.000 32d30'30.000 500000.000 548648.466 500000.000 548648.466 NM W GP2 + -116d48'00.000 36d58'00.000 461048.286 806858.042 461048.286 806858.042 NV C GP1 + -114d49'09.337 35d43'09.299 726805.224 353637.053 726805.224 353637.053 NV E GP1 + -116d50'32.766 41d30'37.869 155162.931 2464191.578 155162.931 2464191.579 NV E GP2 + -119d49'00.000 39d32'00.000 152145.548 1743820.923 152145.548 1743820.924 NV W GP1 + -76d10'00.000 43d05'00.000 611313.134 1123706.620 611313.134 1123706.621 NY C GP1 + -74d02'53.671 42d17'01.775 577147.690 832219.885 577147.690 832219.885 NY E GP1 + -74d44'39.818 42d30'07.382 389148.814 911884.889 389148.814 911884.889 NY E GP2 + -73d02'36.247 40d47'50.624 2264860.626 209793.919 2264860.626 209793.919 NY L GP1 + -74d06'58.125 40d36'07.281 1967746.807 137190.013 1967746.807 137190.013 NY L GP2 + -74d00'00.000 40d45'00.000 2000000.000 191080.202 2000000.000 191080.202 NY L GP3 + -73d15'00.000 40d37'30.000 2208197.581 146431.086 2208197.581 146431.086 NY L GP4 + -73d22'30.000 40d45'00.000 2173173.707 191697.996 2173173.707 191697.996 NY L GP5 + -78d51'00.000 42d54'00.000 428547.567 1056727.674 428547.567 1056727.674 NY W GP1 + -80d49'28.238 40d17'50.894 2467363.986 234305.751 2467363.986 234305.751 OH N GP1 + -82d37'31.021 40d20'14.678 1965071.932 244391.910 1965071.932 244391.910 OH N GP2 + -84d15'00.000 39d45'00.000 1507970.925 642141.152 1507970.925 642141.152 OH S GP1 + -98d42'45.414 36d50'19.568 1791448.615 670119.442 1791448.615 670119.442 OK N GP1 + -95d38'44.046 35d20'36.925 2702176.218 133585.952 2702176.218 133585.952 OK N GP2 + -97d08'00.000 34d34'00.000 2260914.787 449942.599 2260914.787 449942.599 OK S GP1 + -123d41'00.000 45d31'00.000 1184216.898 690530.257 1184216.898 690530.257 OR N GP1 + -119d46'26.562 44d24'25.943 2189746.353 999672.239 2189746.353 999672.239 OR S GP1 + -121d09'56.105 44d23'08.924 1825970.576 991740.899 1825970.576 991740.899 OR S GP2 + -74d33'20.644 41d23'48.566 2876202.339 464358.775 2876202.339 464358.775 PA N GP1 + -78d09'48.121 40d51'35.455 1885652.438 252829.477 1885652.438 252829.477 PA N GP2 + -67d08'56.930 18d29'56.972 251990.753 242253.319 251990.753 242253.319 PR F GP1 + -66d52'30.000 18d15'00.000 346756.548 151479.295 346756.548 151479.295 PR F GP2 + -66d26'00.000 18d15'00.000 500000.000 151294.491 500000.000 151294.491 PR F GP3 + -66d26'00.000 18d30'00.000 500000.000 242074.012 500000.000 242074.012 PR F GP4 + -67d08'56.930 18d29'56.972 251990.753 242253.319 251990.753 242253.319 PR M GP1 + -66d52'30.000 18d15'00.000 346756.548 151479.295 346756.548 151479.295 PR M GP2 + -66d26'00.000 18d15'00.000 500000.000 151294.491 500000.000 151294.491 PR M GP3 + -66d26'00.000 18d30'00.000 500000.000 242074.012 500000.000 242074.012 PR M GP4 + -64d43'00.000 17d40'00.000 1097602.972 42283.509 1097602.972 42283.509 PS S GP1 + -71d16'00.833 41d32'24.848 563817.074 166563.592 563817.074 166563.592 RI GP1 + -71d37'13.730 41d23'53.266 466943.554 114721.079 466943.554 114721.079 RI GP2 + -80d32'30.000 34d32'30.000 2138028.224 561330.721 2138028.224 561330.721 SC N GP1 + -81d00'00.000 34d32'30.000 2000000.000 561019.077 2000000.000 561019.077 SC N GP2 + -80d32'30.000 33d32'30.000 2139661.529 621836.603 2139661.529 621836.603 SC S GP1 + -81d00'00.000 33d32'30.000 2000000.000 621532.356 2000000.000 621532.356 SC S GP2 + -99d12'21.983 44d06'08.121 2208566.880 99065.808 2208566.880 99065.808 SD N GP1 + -100d32'28.873 44d32'34.917 1858852.206 259207.243 1858852.206 259207.243 SD N GP2 + -103d14'00.000 44d06'00.000 1238344.555 657205.595 1238344.555 657205.595 SD S GP1 + -85d13'55.967 36d21'48.503 2226074.895 718522.870 2226074.895 718522.870 TN GP1 + -88d43'05.849 36d30'08.410 1201097.659 779285.593 1201097.659 779285.593 TN GP2 + -97d06'00.000 31d35'00.000 3006704.541 711708.204 3006704.541 711708.204 TX C GP1 + -100d33'06.303 34d39'35.684 2285173.373 241550.390 2285173.373 241550.390 TX N GP1 + -102d48'50.949 34d43'39.249 1605118.921 267430.718 1605118.921 267430.718 TX N GP2 + -97d30'00.000 25d55'00.000 2328727.194 92175.721 2328727.194 92175.721 TX S GP1 + -96d48'00.000 32d45'00.000 2215204.973 394833.169 2215204.973 394833.169 TXNC GP1 + -98d30'00.000 29d25'00.000 2159176.237 576022.948 2159176.237 576022.948 TXSC GP1 + -111d30'00.000 38d40'00.000 2000000.000 121415.345 2000000.000 121415.345 UT C GP1 + -111d30'00.000 38d40'30.000 2000000.000 124450.619 2000000.000 124450.619 UT C GP2 + -111d30'00.000 41d30'00.000 2000000.000 425057.445 2000000.000 425057.445 UT N GP1 + -111d30'00.000 41d30'30.000 2000000.000 428093.810 2000000.000 428093.810 UT N GP2 + -109d48'37.967 38d29'30.877 2483568.472 668988.098 2483568.472 668988.098 UT S GP1 + -113d52'56.922 37d09'18.788 1305706.243 186731.606 1305706.243 186731.606 UT S GP2 + -77d13'46.945 38d55'12.407 2361415.621 458962.786 2361415.621 458962.786 VA N GP1 + -79d18'51.557 38d09'59.020 1765875.433 183017.881 1765875.433 183017.881 VA N GP2 + -77d38'10.823 37d49'23.964 2249484.834 58221.695 2249484.834 58221.695 VA N GP3 + -79d26'19.475 37d47'25.852 1728704.621 46487.604 1728704.621 46487.604 VA N GP4 + -77d44'30.336 39d00'06.804 2215488.016 487135.448 2215488.016 487135.448 VA N GP6 + -77d43'47.013 38d59'55.454 2218917.620 486015.701 2218917.620 486015.701 VA N GP9 + -78d30'00.000 37d30'00.000 2000000.000 424763.516 2000000.000 424763.516 VA S GP1 + -78d30'00.000 37d30'30.000 2000000.000 427797.710 2000000.000 427797.710 VA S GP2 + -77d32'33.000 36d54'42.507 2279939.213 212030.192 2279939.213 212030.192 VA S GP3 + -77d21'55.732 38d04'53.901 2326572.191 638519.064 2326572.191 638519.064 VA S GP4 + -64d45'30.000 17d45'30.000 1082794.001 75432.552 1082794.001 75432.552 VI F GP1 + -66d26'00.000 17d45'56.426 500000.000 75432.505 500000.000 75432.505 VI F GP2 + -64d45'30.000 17d45'30.000 1082794.001 75432.552 1082794.001 75432.552 VI M GP1 + -66d26'00.000 17d45'56.426 500000.000 75432.505 500000.000 75432.505 VI M GP2 + -72d29'31.418 43d09'58.526 502118.227 242816.621 502118.227 242816.621 VT GP1 + -73d12'06.978 44d22'22.810 316451.963 683472.660 316451.963 683472.660 VT GP2 + -119d51'37.006 47d50'51.069 2238927.196 310658.148 2238927.196 310658.148 WA N GP1 + -123d59'49.087 48d09'29.131 1228043.506 438306.777 1228043.506 438306.777 WA N GP2 + -122d54'00.000 46d09'00.000 1391814.257 307059.945 1391814.257 307059.945 WA S GP1 + -88d04'00.000 44d30'00.000 2504399.560 249042.105 2504399.560 249042.105 WI C GP1 + -88d44'40.778 45d22'21.598 2322632.765 77666.151 2322632.765 77666.151 WI N GP1 + -92d12'19.275 45d48'35.812 1437681.450 242373.846 1437681.450 242373.846 WI N GP2 + -89d23'00.000 43d05'00.000 2164743.544 395445.420 2164743.544 395445.420 WI S GP1 + -77d53'39.269 39d14'39.339 2454764.840 275139.246 2454764.840 275139.246 WV N GP1 + -81d33'23.549 39d18'08.535 1418073.862 298900.611 1418073.862 298900.611 WV N GP2 + -77d30'10.460 38d59'25.903 2567632.286 184970.946 2567632.286 184970.946 WV N GP3 + -105d07'00.000 44d38'00.000 513016.009 1445570.354 513016.009 1445570.355 WY E GP1 + -105d31'02.882 43d30'40.600 406937.677 1036750.417 406937.677 1036750.418 WY E GP1 + -105d22'42.856 43d30'14.685 443778.141 1034002.062 443778.141 1034002.062 WY E GP2 + -105d28'42.827 43d36'33.391 417392.389 1072428.186 417392.389 1072428.186 WY E GP3 + -105d23'43.223 42d00'59.422 437860.186 491889.060 437860.186 491889.060 WY E GP4 + -104d35'06.686 42d34'50.366 656606.905 697923.643 656606.905 697923.643 WY E GP5 + -110d36'00.000 41d48'00.000 359125.204 413338.815 359125.204 413338.815 WY W GP1 + -106d13'03.224 41d36'14.640 805153.891 343496.745 805153.891 343496.746 WYEC GP1 + -108d01'56.720 41d51'57.518 309581.204 437731.262 309581.204 437731.262 WYEC GP2 + -108d24'00.000 43d02'00.000 593579.361 862553.590 593579.361 862553.590 WYWC GP1 diff --git a/test/cli/pj_out83.dist b/test/cli/pj_out83.dist new file mode 100644 index 00000000..726140f3 --- /dev/null +++ b/test/cli/pj_out83.dist @@ -0,0 +1,225 @@ + -134d00'00.000 55d00'00.000 2616018.154 1156379.643 2616018.154 1156379.643 AK 1 GP1 + -133d40'00.000 57d00'00.000 2685941.919 1886799.668 2685941.919 1886799.668 AK 1 GP2 + -131d35'45.432 54d39'02.654 3124531.426 1035343.511 3124531.426 1035343.511 AK 1 GP3 + -129d32'30.000 54d32'30.000 3561448.345 1015025.876 3561448.345 1015025.876 AK 1 GP4 + -141d30'00.000 60d30'00.000 1276328.587 3248159.207 1276328.587 3248159.207 AK 1 GP6 + -142d00'00.000 56d30'30.000 1640416.667 916074.824 1640416.667 916074.825 AK 2 GP1 + -146d00'00.000 56d30'30.000 1640416.667 916074.824 1640416.667 916074.825 AK 3 GP1 + -150d00'00.000 56d30'30.000 1640416.667 916074.824 1640416.667 916074.825 AK 4 GP1 + -152d28'56.134 60d53'28.765 1910718.662 2520810.679 1910718.662 2520810.680 AK 5 GP1 + -154d00'00.000 56d30'30.000 1640416.667 916074.824 1640416.667 916074.825 AK 5 GP2 + -155d00'00.000 71d00'00.000 1998036.998 6224208.215 1998036.998 6224208.217 AK 6 GP1 + -158d00'00.000 71d00'00.000 1640416.667 6215353.365 1640416.667 6215353.367 AK 6 GP1 + -162d00'00.000 65d15'00.000 1640416.667 4111446.440 1640416.667 4111446.441 AK 7 GP1 + -166d00'00.000 65d15'00.000 1640416.667 4111446.440 1640416.667 4111446.441 AK 8 GP1 + -170d00'00.000 63d20'00.000 1640416.667 3410489.716 1640416.667 3410489.717 AK 9 GP1 + -164d02'30.000 54d27'30.000 5814167.604 1473788.834 5814167.604 1473788.834 AK10 GP1 + -176d00'00.000 52d30'00.000 3280833.333 547580.542 3280833.333 547580.542 AK10 GP2 + -85d50'00.000 31d20'00.000 656166.667 303104.183 656166.667 303104.183 AL E GP1 + -85d12'41.738 32d38'57.737 847539.085 782420.807 847539.085 782420.807 AL E GP2 + -86d36'58.670 34d48'58.708 421151.975 1571298.908 421151.975 1571298.908 AL E GP3 + -87d30'00.000 33d20'00.000 1968500.000 1212527.586 1968500.000 1212527.587 AL W GP1 + -87d30'00.000 33d20'30.000 1968500.000 1215559.708 1968500.000 1215559.708 AL W GP2 + -91d34'46.321 35d18'37.443 1437779.156 355900.759 1437779.156 355900.759 AR N GP1 + -92d04'11.625 35d19'34.269 1291483.982 361385.695 1291483.982 361385.695 AR N GP2 + -92d00'00.000 34d45'00.000 1312333.333 2070451.744 1312333.333 2070451.744 AR S GP1 + -92d00'00.000 33d15'00.000 1312333.333 1524603.730 1312333.333 1524603.730 AR S GP2 + -111d55'00.000 34d45'00.000 699998.600 1364309.666 699998.600 1364309.666 AZ C GP1 + -111d55'00.000 32d20'00.000 699998.600 484994.340 699998.600 484994.340 AZ C GP2 + -110d24'59.771 35d09'58.568 625301.460 1515899.830 625301.460 1515899.830 AZ E GP1 + -109d34'33.127 31d59'53.103 883142.524 363539.663 883142.524 363539.663 AZ E GP2 + -110d30'34.948 35d07'28.243 597423.277 1500785.234 597423.277 1500785.235 AZ E GP3 + -109d45'13.226 32d08'41.778 827818.955 416705.394 827818.955 416705.394 AZ E GP4 + -113d45'00.000 34d45'00.000 699998.600 1364355.147 699998.600 1364355.147 AZ W GP1 + -113d45'00.000 34d45'30.000 699998.600 1367387.968 699998.600 1367387.968 AZ W GP2 + -113d45'00.000 34d46'00.000 699998.600 1370420.793 699998.600 1370420.793 AZ W GP3 + -122d00'00.000 41d30'00.000 6561666.667 2429744.729 6561666.667 2429744.729 CA 1 GP1 + -122d00'00.000 41d30'30.000 6561666.667 2432781.128 6561666.667 2432781.128 CA 1 GP2 + -122d00'00.000 39d20'00.000 6561666.667 2247404.250 6561666.667 2247404.250 CA 2 GP1 + -122d00'00.000 39d20'30.000 6561666.667 2250439.391 6561666.667 2250439.391 CA 2 GP2 + -120d30'00.000 37d05'00.000 6561666.667 1852815.760 6561666.667 1852815.760 CA 3 GP1 + -121d22'26.019 37d30'30.324 6308189.835 2008776.145 6308189.835 2008776.145 CA 3 GP2 + -119d46'32.733 37d07'41.470 6772808.251 1869963.783 6772808.251 1869963.783 CA 3 GP3 + -119d38'26.434 36d55'48.009 6812851.254 1798140.563 6812851.254 1798140.563 CA 3 GP4 + -120d42'59.779 38d06'52.815 6499349.432 2228414.867 6499349.432 2228414.867 CA 3 GP5 + -119d00'00.000 36d20'00.000 6561666.667 2004462.102 6561666.667 2004462.102 CA 4 GP1 + -119d00'00.000 36d20'30.000 6561666.667 2007495.782 6561666.667 2007495.782 CA 4 GP2 + -118d00'00.000 34d45'00.000 6561666.667 2095323.781 6561666.667 2095323.781 CA 5 GP1 + -118d00'00.000 34d45'30.000 6561666.667 2098356.568 6561666.667 2098356.568 CA 5 GP2 + -116d15'00.000 33d20'00.000 6561666.667 2064911.626 6561666.667 2064911.626 CA 6 GP1 + -116d15'00.000 33d20'30.000 6561666.667 2067943.810 6561666.667 2067943.810 CA 6 GP2 + -118d20'00.000 34d30'00.000 5933874.572 2495758.727 5933874.572 2495758.727 CA 7 GP1 + -105d30'00.000 39d15'00.000 3000000.000 1515946.820 3000000.000 1515946.820 CO C GP1 + -105d30'00.000 39d15'30.000 3000000.000 1518981.963 3000000.000 1518981.963 CO C GP2 + -108d45'55.378 40d25'33.504 2091110.958 1414758.884 2091110.958 1414758.884 CO N GP1 + -105d14'45.588 40d12'42.711 3070938.779 1320125.979 3070938.779 1320125.979 CO N GP2 + -105d30'00.000 37d30'00.000 3000000.000 1303432.168 3000000.000 1303432.168 CO S GP1 + -105d30'00.000 37d30'30.000 3000000.000 1306466.471 3000000.000 1306466.471 CO S GP2 + -72d43'30.515 41d16'55.847 1006831.954 663542.786 1006831.954 663542.786 CT GP1 + -73d01'15.609 41d13'25.985 925448.220 642418.129 925448.220 642418.129 CT GP2 + -75d33'00.748 39d21'15.214 618403.524 493238.843 618403.524 493238.843 DE GP1 + -75d19'01.889 39d45'14.765 684135.532 638883.528 684135.532 638883.528 DE GP2 + -82d45'52.412 29d39'06.589 2519743.236 241248.726 2519743.236 241248.726 FL N GP1 + -84d55'11.533 29d38'51.982 1835122.674 235823.399 1835122.674 235823.399 FL N GP2 + -81d27'15.592 32d38'03.003 875449.222 958850.568 875449.222 958850.568 GA E GP1 + -83d15'39.990 33d29'58.626 322535.391 1274748.301 322535.391 1274748.301 GA E GP2 + -155d59'16.911 19d37'23.477 1472470.137 287083.198 1472470.137 287083.198 HI 1 GP1 + -155d18'06.262 19d31'24.578 1708685.701 250676.240 1708685.701 250676.240 HI 1 GP2 + -155d30'00.000 19d42'00.000 1640416.667 314739.275 1640416.667 314739.275 HI 1 GP3 + -155d30'00.000 19d42'30.000 1640416.667 317765.760 1640416.667 317765.760 HI 1 GP4 + -156d40'00.000 20d42'00.000 1640416.667 133177.588 1640416.667 133177.588 HI 2 GP1 + -156d40'00.000 20d42'30.000 1640416.667 136204.417 1640416.667 136204.417 HI 2 GP2 + -158d00'00.000 21d30'00.000 1640416.667 121084.931 1640416.667 121084.931 HI 3 GP1 + -158d01'30.000 21d37'30.000 1631925.017 166493.704 1631925.017 166493.704 HI 3 GP2 + -159d30'00.000 22d05'00.000 1640416.667 90820.525 1640416.667 90820.525 HI 4 GP1 + -160d10'00.000 21d42'00.000 1640416.667 12109.121 1640416.667 12109.121 HI 5 GP1 + -93d28'33.966 42d44'50.101 4927669.136 3735362.601 4927669.136 3735362.601 IA N GP1 + -93d54'22.084 42d40'23.699 4812032.409 3708655.393 4812032.409 3708655.393 IA N GP2 + -111d42'29.824 43d48'07.616 777180.670 778579.414 777180.670 778579.414 ID E GP1 + -112d22'35.516 43d35'26.260 600566.613 701226.817 600566.613 701226.817 ID E GP2 + -116d22'02.592 48d07'50.941 2473902.726 2357266.576 2473902.726 2357266.577 ID W GP1 + -88d07'06.790 41d46'11.855 1042839.901 1858837.259 1042839.901 1858837.259 IL E GP1 + -88d41'35.208 40d43'37.202 884532.422 1478959.911 884532.422 1478959.912 IL E GP2 + -85d40'00.000 40d00'00.000 328083.333 1730697.447 328083.333 1730697.447 IN E GP1 + -85d40'00.000 40d00'30.000 328083.333 1733733.065 328083.333 1733733.066 IN E GP2 + -86d14'27.780 40d00'12.690 167175.533 1732499.995 167175.533 1732499.995 IN E GP3 + -86d14'27.790 40d00'31.660 167187.126 1734419.540 167187.126 1734419.540 IN E GP4 + -86d14'28.103 40d00'47.412 167173.047 1736013.615 167173.047 1736013.616 IN E GP6 + -87d05'00.000 40d00'00.000 2952750.000 1730697.447 2952750.000 1730697.447 IN W GP1 + -87d05'00.000 40d00'30.000 2952750.000 1733733.065 2952750.000 1733733.066 IN W GP2 + -86d45'10.717 39d41'24.840 3045717.498 1618031.699 3045717.498 1618031.699 IN W GP3 + -87d41'44.075 37d54'24.755 2776105.988 968944.255 2776105.988 968944.255 IN W GP4 + -86d32'13.179 39d32'46.419 3106817.690 1565874.112 3106817.690 1565874.113 IN W GP5 + -87d25'26.675 38d26'17.646 2855150.544 1162044.125 2855150.544 1162044.125 IN W GP6 + -86d14'28.103 40d00'47.412 3188649.790 1736609.724 3188649.790 1736609.724 IN W GP7 + -86d14'27.780 40d00'12.690 3188708.130 1733096.467 3188708.130 1733096.467 IN W GP8 + -86d14'27.790 40d00'31.660 3188689.210 1735016.020 3188689.210 1735016.020 IN W GP9 + -96d47'54.567 38d58'52.096 1653880.047 238201.110 1653880.047 238201.110 KS N GP1 + -98d35'23.954 39d58'41.967 1146983.460 599694.197 1146983.460 599694.197 KS N GP2 + -84d05'43.283 38d14'35.963 1684830.325 270726.733 1684830.325 270726.733 KY N GP1 + -84d26'49.265 39d04'03.099 1584475.157 570918.805 1584475.157 570918.805 KY N GP2 + -91d34'46.483 31d57'26.243 3566283.410 531318.874 3566283.410 531318.874 LA N GP1 + -92d52'46.615 32d54'52.264 3164322.062 878564.036 3164322.062 878564.036 LA N GP2 + -91d29'09.480 31d56'44.721 3595353.711 527382.519 3595353.711 527382.519 LA N GP3 + -93d59'38.241 32d48'43.467 2821809.119 844247.864 2821809.119 844247.864 LA N GP4 + -89d00'00.000 28d50'00.000 4027995.272 128836.330 4027995.272 128836.330 LA S GP1 + -89d30'00.000 28d50'00.000 3867904.667 125925.406 3867904.667 125925.406 LA S GP2 + -89d29'59.999 29d19'59.994 3864995.756 307730.820 3864995.756 307730.820 LA S GP3 + -89d00'00.004 29d19'59.998 4024292.645 310627.715 4024292.645 310627.715 LA S GP4 + -89d10'23.487 29d20'32.615 3969054.663 312839.922 3969054.663 312839.922 LA S GP5 + -89d06'34.632 29d15'19.642 3989919.298 281618.678 3989919.298 281618.678 LA S GP6 + -89d01'33.803 29d07'47.918 4017480.813 236523.957 4017480.813 236523.957 LA S GP7 + -89d08'45.781 28d58'27.979 3980254.597 179219.900 3980254.597 179219.900 LA S GP9 + -70d27'00.716 41d40'15.808 942982.782 2706924.168 942982.782 2706924.168 MA M GP1 + -73d25'59.173 42d06'06.860 131613.265 2868104.007 131613.265 2868104.007 MA M GP2 + -76d11'27.492 39d12'06.132 1541600.105 560062.872 1541600.105 560062.872 MD GP1 + -77d02'30.406 38d26'37.492 1300367.185 283004.738 1300367.185 283004.738 MD GP2 + -77d30'10.460 38d59'25.903 1169392.711 482527.897 1169392.711 482527.897 MD GP3 + -68d24'25.489 46d32'46.920 1007629.154 1049880.999 1007629.154 1049880.999 ME E GP1 + -68d37'29.366 47d02'12.659 953127.598 1228762.971 953127.598 1228762.971 ME E GP2 + -83d29'17.919 42d19'19.299 13360865.013 300809.378 13360865.013 300809.378 MI S GP1 + -83d35'24.656 42d20'02.682 13333276.507 304929.978 13333276.507 304929.978 MI S GP2 + -85d55'26.569 41d50'10.236 12698916.149 126441.631 12698916.149 126441.631 MI S GP3 + -85d45'59.490 41d49'22.346 12741759.240 120840.463 12741759.240 120840.463 MI S GP4 + -91d27'51.183 47d08'19.177 3031741.394 565338.600 3031741.394 565338.600 MN N GP1 + -95d51'05.998 48d19'26.552 1955378.869 1005314.701 1955378.869 1005314.701 MN N GP2 + -92d30'00.000 38d15'00.000 1640416.667 879854.176 1640416.667 879854.176 MO C GP1 + -92d30'00.000 38d15'30.000 1640416.667 882888.780 1640416.667 882888.780 MO C GP2 + -91d42'04.297 37d22'05.932 471136.507 561031.592 471136.507 561031.592 MO E GP1 + -90d08'08.896 36d53'44.124 926703.606 386902.829 926703.606 386902.829 MO E GP2 + -94d30'00.000 38d15'00.000 2788708.333 758522.219 2788708.333 758522.219 MO W GP1 + -94d30'00.000 38d15'30.000 2788708.333 761556.846 2788708.333 761556.846 MO W GP2 + -89d10'14.013 30d30'51.338 878059.046 369015.468 878059.046 369015.468 MS E GP1 + -88d26'04.338 30d43'01.454 1109567.483 442842.466 1109567.483 442842.466 MS E GP2 + -106d29'11.521 47d52'21.103 2707564.623 1334850.273 2707564.623 1334850.273 MT N GP1 + -114d30'43.122 48d52'46.764 763315.457 1726511.247 763315.457 1726511.247 MT N GP2 + -81d12'31.790 35d09'31.049 1339869.379 520003.003 1339869.379 520003.003 NC GP1 + -76d31'54.918 35d33'51.452 2733923.842 669426.932 2733923.842 669426.932 NC GP2 + -78d28'26.580 36d15'15.480 2155084.559 911885.081 2155084.559 911885.081 NC GP3 + -98d46'03.232 48d08'13.483 2391470.474 419526.909 2391470.474 419526.909 ND N GP1 + -101d18'21.456 47d39'18.935 1769873.906 240054.790 1769873.906 240054.790 ND N GP2 + -96d17'52.930 42d04'48.305 2644820.409 839912.565 2644820.409 839912.565 NE N GP1 + -100d49'26.949 41d58'54.025 1416403.828 783622.046 1416403.828 783622.046 NE N GP2 + -70d56'11.287 43d08'15.006 1179151.981 233188.619 1179151.981 233188.620 NH GP1 + -72d32'32.197 42d51'25.984 749470.166 131406.173 749470.166 131406.173 NH GP2 + -74d13'55.737 39d52'02.095 567304.543 376673.733 567304.543 376673.733 NJ GP1 + -74d51'24.058 41d12'07.401 393979.614 863010.549 393979.614 863010.549 NJ GP2 + -106d15'00.000 33d30'00.000 1640416.667 909448.493 1640416.667 909448.493 NM C GP1 + -106d15'00.000 33d30'30.000 1640416.667 912480.595 1640416.667 912480.595 NM C GP2 + -104d11'42.410 33d17'21.732 583573.491 832847.194 583573.491 832847.194 NM E GP1 + -104d47'37.948 33d22'32.349 400747.149 864523.566 400747.149 864523.566 NM E GP2 + -107d50'00.000 32d30'00.000 2723091.667 545634.896 2723091.667 545634.896 NM W GP1 + -107d50'00.000 32d30'30.000 2723091.667 548666.562 2723091.667 548666.562 NM W GP2 + -114d49'09.337 35d43'09.299 882966.545 26600313.129 882966.545 26600313.129 NV E GP1 + -116d50'32.766 41d30'37.869 311338.993 28710910.564 311338.993 28710910.565 NV E GP2 + -74d02'53.671 42d17'01.775 614362.369 1257287.611 614362.369 1257287.611 NY E GP1 + -74d44'39.818 42d30'07.382 426225.275 1336579.561 426225.275 1336579.561 NY E GP2 + -73d02'36.247 40d47'50.624 1249103.533 231235.845 1249103.533 231235.845 NY L GP1 + -74d06'58.125 40d36'07.281 951997.667 158630.811 951997.667 158630.811 NY L GP2 + -74d00'00.000 40d45'00.000 984250.000 212521.887 984250.000 212521.887 NY L GP3 + -73d15'00.000 40d37'30.000 1192442.028 167871.999 1192442.028 167871.999 NY L GP4 + -73d22'30.000 40d45'00.000 1157419.074 213139.664 1157419.074 213139.664 NY L GP5 + -80d49'28.238 40d17'50.894 2435851.621 234309.717 2435851.621 234309.717 OH N GP1 + -82d37'31.021 40d20'14.678 1933572.857 244396.244 1933572.857 244396.244 OH N GP2 + -98d42'45.414 36d50'19.568 1759953.675 670136.468 1759953.675 670136.468 OK N GP1 + -95d38'44.046 35d20'36.925 2670659.833 133589.112 2670659.833 133589.112 OK N GP2 + -119d46'26.562 44d24'25.943 5110990.827 999684.042 5110990.827 999684.042 OR S GP1 + -121d09'56.105 44d23'08.924 4747225.642 991752.635 4747225.642 991752.635 OR S GP2 + -74d33'20.644 41d23'48.566 2844678.533 464365.610 2844678.533 464365.610 PA N GP1 + -78d09'48.121 40d51'35.455 1854155.505 252833.700 1854155.505 252833.700 PA N GP2 + -67d08'56.930 18d29'56.972 408161.046 898432.808 408161.046 898432.808 PR F GP1 + -66d52'30.000 18d15'00.000 502925.440 807654.009 502925.440 807654.009 PR F GP2 + -66d26'00.000 18d15'00.000 656166.667 807469.207 656166.667 807469.207 PR F GP3 + -66d26'00.000 18d30'00.000 656166.667 898253.524 656166.667 898253.524 PR F GP4 + -67d08'56.930 18d29'56.972 408161.046 898432.808 408161.046 898432.808 PR M GP1 + -66d52'30.000 18d15'00.000 502925.440 807654.009 502925.440 807654.009 PR M GP2 + -66d26'00.000 18d15'00.000 656166.667 807469.207 656166.667 807469.207 PR M GP3 + -66d26'00.000 18d30'00.000 656166.667 898253.524 656166.667 898253.524 PR M GP4 + -71d16'00.833 41d32'24.848 391898.667 166566.121 391898.667 166566.121 RI GP1 + -71d37'13.730 41d23'53.266 295027.785 114722.837 295027.785 114722.837 RI GP2 + -80d32'30.000 34d32'30.000 2138015.480 985710.127 2138015.480 985710.127 SC N GP1 + -81d00'00.000 34d32'30.000 1999996.000 985404.077 1999996.000 985404.077 SC N GP2 + -80d32'30.000 33d32'30.000 2139629.138 621856.156 2139629.138 621856.156 SC S GP1 + -81d00'00.000 33d32'30.000 1999996.000 621546.527 1999996.000 621546.527 SC S GP2 + -99d12'21.983 44d06'08.121 2177060.848 99066.761 2177060.848 99066.761 SD N GP1 + -100d32'28.873 44d32'34.917 1827356.330 259209.712 1827356.330 259209.712 SD N GP2 + -85d13'55.967 36d21'48.503 2194569.476 739881.374 2194569.476 739881.374 TN GP1 + -88d43'05.849 36d30'08.410 1169616.875 800645.091 1169616.875 800645.091 TN GP2 + -100d33'06.303 34d39'35.684 941333.504 3522390.511 941333.504 3522390.511 TX N GP1 + -102d48'50.949 34d43'39.249 261294.654 3548271.494 261294.654 3548271.494 TX N GP2 + -111d30'00.000 38d40'00.000 1640416.667 6683084.515 1640416.667 6683084.515 UT C GP1 + -111d30'00.000 38d40'30.000 1640416.667 6686119.851 1640416.667 6686119.851 UT C GP2 + -111d30'00.000 41d30'00.000 1640416.667 3705897.565 1640416.667 3705897.565 UT N GP1 + -111d30'00.000 41d30'30.000 1640416.667 3708933.975 1640416.667 3708933.975 UT N GP2 + -109d48'37.967 38d29'30.877 2123972.902 10511502.846 2123972.902 10511502.846 UT S GP1 + -113d52'56.922 37d09'18.788 946139.893 10029235.592 946139.893 10029235.592 UT S GP2 + -77d13'46.945 38d55'12.407 11844323.043 7020638.975 11844323.043 7020638.975 VA N GP1 + -79d18'51.557 38d09'59.020 11248797.976 6744688.474 11248797.976 6744688.474 VA N GP2 + -77d38'10.823 37d49'23.964 11732395.294 6619889.590 11732395.294 6619889.590 VA N GP3 + -79d26'19.475 37d47'25.852 11211628.032 6608155.232 11211628.032 6608155.232 VA N GP4 + -77d44'30.336 39d00'06.804 11698399.159 7048812.266 11698399.159 7048812.266 VA N GP6 + -77d43'47.013 38d59'55.454 11701828.676 7047692.496 11701828.676 7047692.496 VA N GP9 + -78d30'00.000 37d30'00.000 11482916.667 3705606.876 11482916.667 3705606.876 VA S GP1 + -78d30'00.000 37d30'30.000 11482916.667 3708641.137 11482916.667 3708641.137 VA S GP2 + -77d32'33.000 36d54'42.507 11762849.074 3492868.579 11762849.074 3492868.579 VA S GP3 + -77d21'55.732 38d04'53.901 11809480.679 3919367.025 11809480.679 3919367.025 VA S GP4 + -64d45'30.000 17d45'30.000 1238952.313 631597.723 1238952.313 631597.723 VI F GP1 + -66d26'00.000 17d45'56.426 656166.667 631597.858 656166.667 631597.858 VI F GP2 + -64d45'30.000 17d45'30.000 1238952.313 631597.723 1238952.313 631597.723 VI M GP1 + -66d26'00.000 17d45'56.426 656166.667 631597.858 656166.667 631597.858 VI M GP2 + -72d29'31.418 43d09'58.526 1642534.834 242819.594 1642534.834 242819.594 VT GP1 + -73d12'06.978 44d22'22.810 1456873.971 683480.189 1456873.971 683480.189 VT GP2 + -119d51'37.006 47d50'51.069 1879336.368 310659.110 1879336.368 310659.110 WA N GP1 + -123d59'49.087 48d09'29.131 868484.545 438307.526 868484.545 438307.526 WA N GP2 + -88d44'40.778 45d22'21.598 2291123.165 77666.637 2291123.165 77666.637 WI N GP1 + -92d12'19.275 45d48'35.812 1406198.343 242375.264 1406198.343 242375.264 WI N GP2 + -77d53'39.269 39d14'39.339 2423253.113 275144.536 2423253.113 275144.536 WV N GP1 + -81d33'23.549 39d18'08.535 1386588.889 298906.239 1386588.889 298906.239 WV N GP2 + -77d30'10.460 38d59'25.903 2536117.742 184974.384 2536117.742 184974.384 WV N GP3 + -105d31'02.882 43d30'40.600 563107.342 1097477.489 563107.342 1097477.489 WY E GP1 + -105d22'42.856 43d30'14.685 599946.619 1094729.118 599946.619 1094729.119 WY E GP2 + -105d28'42.827 43d36'33.391 573561.723 1133155.513 573561.723 1133155.514 WY E GP3 + -105d23'43.223 42d00'59.422 594028.794 552611.396 594028.794 552611.396 WY E GP4 + -104d35'06.686 42d34'50.366 812768.620 758647.940 812768.620 758647.940 WY E GP5 + -106d13'03.224 41d36'14.640 1617477.770 732300.770 1617477.770 732300.770 WYEC GP1 + -108d01'56.720 41d51'57.518 1121920.469 826536.345 1121920.469 826536.345 WYEC GP2 diff --git a/test/cli/proj_outIGNF.dist b/test/cli/proj_outIGNF.dist new file mode 100644 index 00000000..611144b8 --- /dev/null +++ b/test/cli/proj_outIGNF.dist @@ -0,0 +1,40 @@ ++init=IGNF:NTFG +to +init=IGNF:RGF93G + 3.300866856 43.4477976569 0.0000 3d18'0.915"E 43d26'52.077"N 0.000 ++init=IGNF:LAMBE +to +init=IGNF:LAMB93 + 600000.0000 2600545.4523 0.0000 652759.036 7033588.609 0.000 + 135638.3592 2418760.4094 0.0000 187444.148 6856142.911 0.000 + 998137.3947 2413822.2844 0.0000 1048843.997 6843923.913 0.000 + 600000.0000 2200000.0000 0.0000 649398.872 6633524.191 0.000 + 311552.5340 1906457.4840 0.0000 358593.374 6342647.465 0.000 + 960488.4138 1910172.8812 0.0000 1007324.119 6340956.093 0.000 + 600000.0000 1699510.8340 0.0000 645201.753 6133255.515 0.000 +1203792.5981 626873.17210 0.0000 * * inf ++init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX + 600000.0000 2600545.4523 0.0000 179040.150 5610292.766 0.000 + 135638.3592 2418760.4094 0.0000 -303490.059 5410353.890 0.000 + 998137.3947 2413822.2844 0.0000 592635.926 5410280.335 0.000 + 600000.0000 2200000.0000 0.0000 179041.670 5209746.080 0.000 + 311552.5340 1906457.4840 0.0000 -97021.878 4909167.981 0.000 + 960488.4138 1910172.8812 0.0000 524126.466 4909227.598 0.000 + 600000.0000 1699510.8340 0.0000 179047.637 4708515.623 0.000 +1203792.5981 626873.17210 0.0000 * * inf ++init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX +2d20'11.4239243" 50d23'59.7718445" 0.0 179040.151 5610495.281 0.000 +-3d57'49.4051448" 48d35'59.7121716" 0.0 -303729.365 5410118.352 0.000 +7d44'12.1439796" 48d35'59.7832558" 0.0 592842.794 5410120.550 0.000 +2d20'11.4951975" 46d47'59.8029841" 0.0 179041.668 5209746.077 0.000 +-1d15'48.9240599" 44d05'59.8251878" 0.0 -96825.467 4909184.138 0.000 +6d50'12.2276489" 44d06'00.0517019" 0.0 523880.022 4909191.143 0.000 +2d20'11.7754730" 42d18'00.0824436" 0.0 179047.634 4708817.010 0.000 +9d32'12.6680218" 41d24'00.3542556" 0.0 730783.054 4608637.873 0.000 ++init=IGNF:RGF93G +to +init=IGNF:MILLER +2d20'11.4239243" 50d23'59.7718445" 0.0 260098.730 6140682.441 0.000 +-3d57'49.4051448" 48d35'59.7121716" 0.0 -441239.699 5880610.004 0.000 +7d44'12.1439796" 48d35'59.7832558" 0.0 861246.246 5880612.827 0.000 +2d20'11.4951975" 46d47'59.8029841" 0.0 260100.934 5625762.156 0.000 +-1d15'48.9240599" 44d05'59.8251878" 0.0 -140662.197 5252490.165 0.000 +6d50'12.2276489" 44d06'00.0517019" 0.0 761061.291 5252498.745 0.000 +2d20'11.7754730" 42d18'00.0824436" 0.0 260109.601 5009175.714 0.000 +9d32'12.6680218" 41d24'00.3542556" 0.0 1061637.534 4889066.592 0.000 ++init=IGNF:RGR92 +to +init=IGNF:REUN47 +3356123.5400 1303218.3090 5247430.6050 3353420.949 1304075.021 5248935.144 diff --git a/test/cli/td_out.dist b/test/cli/td_out.dist new file mode 100644 index 00000000..f6b2a219 --- /dev/null +++ b/test/cli/td_out.dist @@ -0,0 +1,25 @@ +############################################################## +1st through ntv1, 2nd through conus +111d00'00.000"W 44d00'00.000"N 0.0 111d0'3.208"W 43d59'59.732"N 0.000 +111d00'00.000"W 39d00'00.000"N 0.0 111d0'2.604"W 38d59'59.912"N 0.000 +############################################################## +As above, but without ntv1 everything goes through conus file. +111d00'00.000"W 44d00'00.000"N 0.0 111d0'2.788"W 43d59'59.725"N 0.000 +111d00'00.000"W 39d00'00.000"N 0.0 111d0'2.604"W 38d59'59.912"N 0.000 +############################################################## +Test MD used where available +79d58'00.000"W 37d02'00.000"N 0.0 79d58'0.005"W 37d1'59.998"N 0.000 +79d58'00.000"W 36d58'00.000"N 0.0 79d57'59.128"W 36d58'0.501"N 0.000 +79d58'00.000"W 37d02'00.000"N 0.0 79d57'59.126"W 37d2'0.501"N 0.000 +79d58'00.000"W 36d58'00.000"N 0.0 79d57'59.128"W 36d58'0.501"N 0.000 +############################################################## +Test that we use grid shift files even if we are right on the +edge or even a wee bit outside (#141). +-5.5 52.0 -5.501106465528 51.999890470284 0.000000000000 +-5.5000000000001 52.0000000000001 -5.501106465529 51.999890470284 0.000000000000 +-5.4999 51.9999 -5.501006458305 51.999790470257 0.000000000000 +-5.5001 52.0 -5.500100000000 52.000000000000 0.000000000000 +-5.5 52.0 -5.498893534472 52.000109529716 0.000000000000 +-5.5000000000001 52.0000000000001 -5.498893534472 52.000109529717 0.000000000000 +-5.4999 51.9999 -5.498793541695 52.000009529743 0.000000000000 +-5.5001 52.0 -5.500100000000 52.000000000000 0.000000000000 diff --git a/test/cli/test27 b/test/cli/test27 new file mode 100755 index 00000000..43c060d8 --- /dev/null +++ b/test/cli/test27 @@ -0,0 +1,849 @@ +: +# Script to test most of the SPCS zones. +# This script generated from execution of NMD's program l176, where +# the second pair of numbers are respective easting and northing output. +# +# Proj will vary in the .001ft range with projections using Transverse +# Mercator due to greater precision of meridional distance function. +# +TEST_CLI_DIR=`dirname $0` +DATA_DIR=`dirname $0`/../../data +EXE=$1 + +usage() +{ + echo "Usage: ${0} " + echo + exit 1 +} + +if test -z "${EXE}"; then + EXE=../../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=proj_out27 +INIT_FILE=${DATA_DIR}/nad27 +# +echo "doing tests into file ${OUT}, please wait" +# +$EXE +units=us-ft +init=${INIT_FILE}:5001 -E -f '%.3f' >${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <" + echo + exit 1 +} + +if test -z "${EXE}"; then + EXE=../../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=proj_out83 +INIT_FILE=${DATA_DIR}/nad83 +# +echo "doing tests into file ${OUT}, please wait" +# +$EXE +units=us-ft +init=${INIT_FILE}:5001 -E -f '%.3f' >${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <" + echo + exit 1 +} + +if test -z "${EXE}"; then + EXE=../../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +if test -z "${PROJ_LIB}"; then + export PROJ_LIB=${DATA_DIR} +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=proj_outIGNF + +INIT_FILE=IGNF +RES="-f %.3f" +# +echo "doing tests into file ${OUT}, please wait" +# +rm -f ${OUT} +echo "+init=${INIT_FILE}:NTFG +to +init=${INIT_FILE}:RGF93G" >>${OUT} +$EXE +init=${INIT_FILE}:NTFG +to +init=${INIT_FILE}:RGF93G -E >>${OUT} <>${OUT} +$EXE +init=${INIT_FILE}:LAMBE +to +init=${INIT_FILE}:LAMB93 -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} +$EXE +init=${INIT_FILE}:LAMBE +to +init=${INIT_FILE}:GEOPORTALFXX -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} +$EXE +init=${INIT_FILE}:RGF93G +to +init=${INIT_FILE}:GEOPORTALFXX -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} +$EXE +init=${INIT_FILE}:RGF93G +to +init=${INIT_FILE}:MILLER -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} +$EXE +init=${INIT_FILE}:RGR92 +to +init=${INIT_FILE}:REUN47 -E $RES >>${OUT} <" + echo + exit 1 +} + +if test -z "${EXE}"; then + EXE=../../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=td_out +#EXE=../src/cs2cs +# +echo "doing tests into file ${OUT}, please wait" +rm -f ${OUT} +# +echo "##############################################################" >> ${OUT} +echo 1st through ntv1, 2nd through conus >> ${OUT} +# +$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv1_can.dat,conus \ + +to +proj=latlong +datum=NAD83 \ + -E >>${OUT} <> ${OUT} +echo As above, but without ntv1 everything goes through conus file. >> ${OUT} +# +$EXE +proj=latlong +ellps=clrk66 +nadgrids=conus \ + +to +proj=latlong +datum=NAD83 \ + -E >>${OUT} <> ${OUT} +echo Test MD used where available >> ${OUT} +# +$EXE +proj=latlong +ellps=clrk66 +nadgrids=MD,conus \ + +to +proj=latlong +datum=NAD83 \ + -E >>${OUT} <>${OUT} <> ${OUT} +echo "Test that we use grid shift files even if we are right on the" >> ${OUT} +echo "edge or even a wee bit outside (#141)." >> ${OUT} +# +# Our test points are (1) right on mesh corner, (2) outside but within +# epsilon (3) inside a bit (4) outside by more than epsilon +# +$EXE +proj=latlong +ellps=WGS84 +nadgrids=ntf_r93.gsb,null \ + +to +proj=latlong +datum=WGS84 \ + -E -f "%.12f" >>${OUT} <>${OUT} <" + echo + exit 1 +} + +if test -z "${EXE}"; then + EXE=../../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=tf_out +#EXE=../src/cs2cs +# +echo "doing tests into file ${OUT}, please wait" +rm -f ${OUT} +# +echo "Test healpix inverse projection on sphere" >> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 \ + +to +proj=healpix +a=1 +lon_0=0 -f '%.'5'f' -I\ + -E >>${OUT} <>${OUT} <" + echo + exit 1 +} + +if test -z "${EXE}"; then + EXE=../../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=ntv2_out +#EXE=../src/cs2cs +# +echo "doing tests into file ${OUT}, please wait" +rm -f ${OUT} +# +echo "##############################################################" >> ${OUT} +echo Point in the ONwinsor subgrid. >> ${OUT} +# +$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb \ + +to +proj=latlong +datum=NAD83 -E -w4 >>${OUT} <> ${OUT} +echo Try with NTv2 and NTv1 together ... falls back to NTv1 >> ${OUT} +# +$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb,ntv1_can.dat,conus \ + +to +proj=latlong +datum=NAD83 -E -w4 >>${OUT} <" + echo + exit 1 +} + +if test -z "${EXE}"; then + EXE=../../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +if test -z "${PROJ_LIB}"; then + export PROJ_LIB=$DATA_DIR +fi + +# Would be great to have a universale way of selecting a locale with +# a decimal separator that is not '.' +if command locale >/dev/null 2>/dev/null; then + if test `locale -a | grep fr_FR.utf8`; then + echo "Using locale with comma as decimal separator" + export LC_ALL=fr_FR.UTF-8 + export PROJ_USE_ENV_LOCALE=1 + fi +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=tv_out + +# +echo "doing tests into file ${OUT}, please wait" +rm -f ${OUT} +# +echo "##############################################################" >> ${OUT} +echo Test raw ellipse to raw ellipse >> ${OUT} +# +$EXE +proj=latlong +ellps=clrk66 \ + +to +proj=latlong +ellps=bessel \ + -E >>${OUT} <> ${OUT} +echo Test NAD27 to raw ellipse >> ${OUT} +# +$EXE +proj=latlong +datum=NAD27 \ + +to +proj=latlong +ellps=bessel \ + -E >>${OUT} <> ${OUT} +echo Between two 3parameter approximations on same ellipsoid >> ${OUT} +# +$EXE +proj=latlong +ellps=bessel +towgs84=5,0,0 \ + +to +proj=latlong +ellps=bessel +towgs84=1,0,0 \ + -E >>${OUT} <> ${OUT} +echo 3param to raw ellipsoid on same ellipsoid >> ${OUT} +# +$EXE +proj=latlong +ellps=bessel +towgs84=5,0,0 \ + +to +proj=latlong +ellps=bessel \ + -E >>${OUT} <> ${OUT} +echo Test simple prime meridian handling. >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 +pm=greenwich \ + +to +proj=latlong +datum=WGS84 +pm=1 \ + -E >>${OUT} <> ${OUT} +echo Test support for the lon_wrap switch. >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=latlong +datum=WGS84 +lon_wrap=180 \ + -E >>${OUT} <> ${OUT} +echo Test simple prime meridian handling within a projection. >> ${OUT} +# +$EXE +proj=utm +zone=11 +datum=WGS84 +pm=3 \ + +to +proj=latlong +datum=WGS84 +pm=1w \ + -E >>${OUT} <> ${OUT} +echo Test geocentric x/y/z generation. >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=geocent +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo Test geocentric x/y/z consumption. >> ${OUT} +# +$EXE +proj=geocent +datum=WGS84 \ + +to +proj=latlong +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo Test conversion from geocentric latlong to geodetic latlong >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 +geoc \ + +to +proj=latlong +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo Test conversion from geodetic latlong to geocentric latlong >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=latlong +datum=WGS84 +geoc \ + -E >>${OUT} <> ${OUT} +echo "Test stere projection (re: win32 ticket 12)" >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=stere +lat_0=90 +lon_0=0 +lat_ts=70 +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo "Test stere without lat_ts (#147)" >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=stere +lat_0=40 +lon_0=10 +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo "Test sts projection (re: ticket 12)" >> ${OUT} +# +$EXE +proj=latlong +ellps=WGS84 \ + +to +proj=kav5 +ellps=WGS84 +units=m \ + -E >>${OUT} <>${OUT} <> ${OUT} +echo "Test RSO Borneo projection (re: ticket 62)" >> ${OUT} +# +$EXE +proj=latlong +a=6377298.556 +rf=300.8017 \ + +to +proj=omerc +a=6377298.556 +rf=300.8017 +lat_0=4 +lonc=115 \ + +alpha=53d18\'56.9537 +gamma=53d7\'48.3685 +k_0=0.99984 \ + +x_0=590476.87 +y_0=442857.65 \ + -E >>${OUT} <> ${OUT} +echo "Test extended transverse mercator (#97)" >> ${OUT} +# +$EXE +proj=etmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ + +to +proj=latlong +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo "Test extended transverse mercator inverse (#97)" >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=etmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ + -E >>${OUT} <> ${OUT} +echo "Test transverse mercator (#97)" >> ${OUT} +# +$EXE +proj=tmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ + +to +proj=latlong +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo "Test transverse mercator inverse (#97)" >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=tmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ + -E >>${OUT} <> ${OUT} +echo "Test robinson projection (#113)" >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=robin +datum=WGS84 \ + -E >>${OUT} <>${OUT} <> ${OUT} +echo "Test hammer projection (pull request #329)" >> ${OUT} +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=hammer +datum=WGS84 \ + -E >>${OUT} <>${OUT} <> ${OUT} +echo "Test healpix forward projection on sphere" >> ${OUT} +$EXE +proj=latlong +R=1 +lon_0=0 \ + +to +proj=healpix +R=1 +lon_0=0 -f '%.'5'f' \ + -E >>${OUT} <>${OUT} <> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 \ + +to +proj=healpix +a=1 +lon_0=0 +ellps=WGS84 -f '%.'5'f' \ + -E >>${OUT} <>${OUT} <> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 \ + +to +proj=healpix +a=1 +lon_0=0 +ellps=WGS84 -f '%.'5'f' -I\ + -E >>${OUT} <>${OUT} <> ${OUT} +echo "Test rHEALPix forward projection on sphere north=0 south=0" >> ${OUT} +$EXE +proj=latlong +R=5 \ + +to +proj=rhealpix +R=5 +north_square=0 +south_square=0 -f '%.'5'f' \ + -E >>${OUT} <> ${OUT} +echo "Test rHEALPix forward projection on sphere north=1 south=1" >> ${OUT} +$EXE +proj=latlong +R=5 \ + +to +proj=rhealpix +R=5 +north_square=1 +south_square=1 -f '%.'5'f' \ + -E >>${OUT} <> ${OUT} +echo "Test rHEALPix inverse projection on sphere north=0 south=0" >> ${OUT} +$EXE +proj=latlong +R=5 \ + +to +proj=rhealpix +R=5 +north_square=0 +south_square=0 -f '%.'5'f' -I\ + -E >>${OUT} <> ${OUT} +echo "Test rHEALPix inverse projection on sphere north=1 south=1" >> ${OUT} +$EXE +proj=latlong +R=5 \ + +to +proj=rhealpix +R=5 +north_square=1 +south_square=1 -f '%.'5'f' -I\ + -E >>${OUT} <> ${OUT} +echo "Test rHEALPix forward projection on ellipsoid north=0 south=0" >> ${OUT} +$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ + +to +proj=rhealpix +a=5 +e=0.8 +r_a=4.3220011711888882 +north_square=0 +south_square=0 -f '%.'5'f' \ + -E >>${OUT} <> ${OUT} +echo "Test rHEALPix forward projection on ellipsoid north=1 south=1" >> ${OUT} +$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ + +to +proj=rhealpix +a=5 +e=0.8 +r_a=4.3220011711888882 +north_square=1 +south_square=1 -f '%.'5'f' \ + -E >>${OUT} <> ${OUT} +echo "Test rHEALPix inverse projection on ellipsoid north=0 south=0" >> ${OUT} +$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ + +to +proj=rhealpix +a=5 -I +e=0.8 +r_a=4.3220011711888882 +north_square=0 +south_square=0 -f '%.'5'f'\ + -E >>${OUT} <> ${OUT} +echo "Test rHEALPix inverse projection on ellipsoid north=1 south=1" >> ${OUT} +$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ + +to +proj=rhealpix +a=5 -I +e=0.8 +r_a=4.3220011711888882 +north_square=1 +south_square=1 -f '%.'5'f'\ + -E >>${OUT} <> ${OUT} +echo "Test geos projection" >> ${OUT} +echo "Test geos on a sphere" >> ${OUT} +$EXE +proj=latlong +ellps=sphere \ + +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +ellps=sphere \ + +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +ellps=sphere \ + +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere -I -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +ellps=sphere \ + +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 -I -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +ellps=sphere \ + +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere +sweep=x -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +ellps=sphere \ + +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 +sweep=x -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +ellps=sphere \ + +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere +sweep=x -I -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +ellps=sphere \ + +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 +sweep=x -I -E >>${OUT} <> ${OUT} +echo "Test the Natural Earth Projection" >> ${OUT} +$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ + +to +proj=natearth +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ + -E >>${OUT} <> ${OUT} +echo "Test the Natural Earth II Projection" >> ${OUT} +$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ + +to +proj=natearth2 +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ + -E >>${OUT} <> ${OUT} +echo "Test the Compact Miller projection" >> ${OUT} +$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ + +to +proj=comill +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ + -E >>${OUT} <> ${OUT} +echo "Test pconic (#148)" >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=pconic +units=m +lat_1=20n +lat_2=60n +lon_0=60W +datum=WGS84 \ + -E >>${OUT} <>${OUT} <> ${OUT} +echo "Test laea" >> ${OUT} +# +$EXE -f '%.12f' \ + +proj=laea +lat_0=45 +lon_0=-100 +units=m +datum=WGS84 +no_defs \ + +to +proj=latlong +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo "Test forward calcofi projection" >> ${OUT} +$EXE +proj=latlong +ellps=clrk66 \ + +to +proj=calcofi +ellps=clrk66 \ + -E >>${OUT} <> ${OUT} +$EXE +proj=calcofi +ellps=clrk66 \ + +to +proj=longlat +ellps=clrk66 \ + -E >>${OUT} <> ${OUT} +echo "Check inverse error handling with ob_tran (#225)" >> ${OUT} +$EXE +proj=ob_tran \ + +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 \ + -E >>${OUT} <> ${OUT} +$EXE -I +proj=ob_tran \ + +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 \ + -E >>${OUT} <> ${OUT} +echo "Test MGI datum gives expected results (#207)" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=latlong +datum=WGS84 \ + +to +init=epsg:31284 \ + -E >>${OUT} <> ${OUT} +echo "Test omerc sensitivity with locations 90d from origin(#114)" >> ${OUT} +# +$EXE -f '%.8f' \ + +proj=latlong +ellps=WGS84 \ + +to +proj=omerc +ellps=WGS84 +lon_1=62.581150 +lat_1=74.856102 \ + +lon_2=53.942810 +lat_2=74.905884 +units=km +no_rot +no_defs \ + -E >>${OUT} <> ${OUT} +echo "Test omerc differences between poles (#190)" >> ${OUT} +# First, north pole. +$EXE -f '%.3f' \ + +proj=latlong +ellps=WGS84 \ + +to +proj=omerc +ellps=WGS84 +datum=WGS84 +no_rot \ + +lon_1=-27 +lat_1=70 +lon_2=-38 +lat_2=80 +lat_0=70 \ + -E >>${OUT} <>${OUT} <> ${OUT} +echo "Test qsc" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=latlong +datum=WGS84 \ + +to +proj=qsc +datum=WGS84 +no_defs \ + -E >>${OUT} <>${OUT} <> ${OUT} +echo "Test bug 229" >> ${OUT} +# +$EXE -f '%.13f' \ + +init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0 \ + +to +proj=latlong +datum=WGS84 +no_defs \ + -E >>${OUT} <> ${OUT} +echo "Test bug 229 (2)" >> ${OUT} +# +$EXE -f '%.13f' \ + +init=epsg:4326 +to +init=epsg:4326 \ + -E >>${OUT} <> ${OUT} +echo "Test bug 244 " >> ${OUT} +# +$EXE -f '%.8f' \ + +init=epsg:4326 \ + +to +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m +no_defs \ + -E >>${OUT} <> ${OUT} +echo "Test bug 244 (2)" >> ${OUT} +# +$EXE -f '%.11f' \ + +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m +no_defs \ + +to +init=epsg:4326 \ + -E >>${OUT} <> ${OUT} +echo "Test bug 245 (use +datum=carthage)" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=longlat +datum=WGS84 +no_defs +to +proj=utm +zone=32 +datum=carthage +no_defs \ + -E >>${OUT} <> ${OUT} +echo "Test bug 245 (use expansion of +datum=carthage)" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=longlat +datum=WGS84 +no_defs +to +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-263.0,6.0,431.0 +no_defs \ + -E >>${OUT} <> ${OUT} +echo "Test SCH forward projection" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=latlong +datum=WGS84 +to +proj=sch +datum=WGS84 +plat_0=30.0 +plon_0=45.0 \ + +phdg_0=-12.0 +nodefs \ + -E >> ${OUT} <> ${OUT} +echo "Test SCH inverse projection" >> ${OUT} +# +$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} <> ${OUT} +echo "Test issue #316 (switch utm to use etmerc)" >> ${OUT} +# +$EXE -f '%.6f' \ + +proj=latlong +datum=WGS84 +no_defs +to +proj=utm +zone=35 +datum=WGS84 +no_defs \ + -E >>${OUT} <> ${OUT} +echo "Test issue #316 (switch utm to use etmerc)" >> ${OUT} +# +$EXE -f '%.6f' \ + +proj=latlong +datum=WGS84 +no_defs +to +proj=etmerc +datum=WGS84 +no_defs +k=0.9996 +lon_0=27 +x_0=500000 -f %.6f \ + -E >>${OUT} <> ${OUT} +echo "Test nzmg forward projection" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=latlong +datum=WGS84 +to \ + +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=WGS84 +units=m +no_defs \ + -E >> ${OUT} <> ${OUT} +echo "Test nzmg inverse projection" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=WGS84 +units=m +no_defs +to \ + +proj=latlong +datum=WGS84 \ + -E >> ${OUT} <> ${OUT} +echo "Test misrsom forward projection" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=latlong +datum=WGS84 +no_defs +to \ + +proj=misrsom +path=41 +ellps=WGS84 +units=m \ + -E >> ${OUT} <> ${OUT} +echo "Test misrsom inverse projection" >> ${OUT} +# +$EXE -f '%.7f' \ + +proj=misrsom +path=41 +ellps=WGS84 +units=m +no_defs +to \ + +proj=latlong +datum=WGS84 -f '%0.7f' \ + -E >> ${OUT} <> ${OUT} +echo "Test patterson forward projection" >> ${OUT} +# +$EXE -f '%0.8f' \ + +proj=latlong +datum=WGS84 \ + +to +proj=patterson +a=6371008.7714 +b=6371008.7714 +units=m \ + -E >> ${OUT} <> ${OUT} +echo "Test patterson inverse projection" >> ${OUT} +# +$EXE -f '%0.3f' \ + +proj=patterson +a=6371008.7714 +b=6371008.7714 +units=m \ + +to +proj=latlong +datum=WGS84 \ + -E >> ${OUT} <> ${OUT} +echo "Test Web Mercator to avoid issue #834 in the future" >> ${OUT} +# +$EXE -f '%0.3f' \ + +proj=utm +zone=15 +datum=NAD83 \ + +to +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 \ + +k=1.0 +units=m +nadgrids=@null \ + -E >> ${OUT} <> ${OUT} +echo "Test vto_meter" >> ${OUT} +# +$EXE -f '%0.3f' \ + +proj=longlat +a=1 +b=1 +vto_meter=1000 \ + +to +proj=longlat +a=1 +b=1 \ + -E >> ${OUT} <> ${OUT} <> ${OUT} <> ${OUT} <> ${OUT} +echo "Test EPSG:4326 to EPSG:32631" >> ${OUT} +# Input is latitude, longitude order +$EXE EPSG:4326 +to EPSG:32631 -E >> ${OUT} <> ${OUT} +echo "Test EPSG:32631 to EPSG:4326" >> ${OUT} +# Input is latitude, longitude order +$EXE EPSG:32631 EPSG:4326 -E >> ${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=proj_out27 -INIT_FILE=${DATA_DIR}/nad27 -# -echo "doing tests into file ${OUT}, please wait" -# -$EXE +units=us-ft +init=${INIT_FILE}:5001 -E -f '%.3f' >${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=proj_out83 -INIT_FILE=${DATA_DIR}/nad83 -# -echo "doing tests into file ${OUT}, please wait" -# -$EXE +units=us-ft +init=${INIT_FILE}:5001 -E -f '%.3f' >${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -if test -z "${PROJ_LIB}"; then - export PROJ_LIB=${DATA_DIR} -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=proj_outIGNF - -INIT_FILE=IGNF -RES="-f %.3f" -# -echo "doing tests into file ${OUT}, please wait" -# -rm -f ${OUT} -echo "+init=${INIT_FILE}:NTFG +to +init=${INIT_FILE}:RGF93G" >>${OUT} -$EXE +init=${INIT_FILE}:NTFG +to +init=${INIT_FILE}:RGF93G -E >>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:LAMBE +to +init=${INIT_FILE}:LAMB93 -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:LAMBE +to +init=${INIT_FILE}:GEOPORTALFXX -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:RGF93G +to +init=${INIT_FILE}:GEOPORTALFXX -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:RGF93G +to +init=${INIT_FILE}:MILLER -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:RGR92 +to +init=${INIT_FILE}:REUN47 -E $RES >>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=td_out -#EXE=../src/cs2cs -# -echo "doing tests into file ${OUT}, please wait" -rm -f ${OUT} -# -echo "##############################################################" >> ${OUT} -echo 1st through ntv1, 2nd through conus >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv1_can.dat,conus \ - +to +proj=latlong +datum=NAD83 \ - -E >>${OUT} <> ${OUT} -echo As above, but without ntv1 everything goes through conus file. >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=conus \ - +to +proj=latlong +datum=NAD83 \ - -E >>${OUT} <> ${OUT} -echo Test MD used where available >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=MD,conus \ - +to +proj=latlong +datum=NAD83 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test that we use grid shift files even if we are right on the" >> ${OUT} -echo "edge or even a wee bit outside (#141)." >> ${OUT} -# -# Our test points are (1) right on mesh corner, (2) outside but within -# epsilon (3) inside a bit (4) outside by more than epsilon -# -$EXE +proj=latlong +ellps=WGS84 +nadgrids=ntf_r93.gsb,null \ - +to +proj=latlong +datum=WGS84 \ - -E -f "%.12f" >>${OUT} <>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=tf_out -#EXE=../src/cs2cs -# -echo "doing tests into file ${OUT}, please wait" -rm -f ${OUT} -# -echo "Test healpix inverse projection on sphere" >> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 \ - +to +proj=healpix +a=1 +lon_0=0 -f '%.'5'f' -I\ - -E >>${OUT} <>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=ntv2_out -#EXE=../src/cs2cs -# -echo "doing tests into file ${OUT}, please wait" -rm -f ${OUT} -# -echo "##############################################################" >> ${OUT} -echo Point in the ONwinsor subgrid. >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb \ - +to +proj=latlong +datum=NAD83 -E -w4 >>${OUT} <> ${OUT} -echo Try with NTv2 and NTv1 together ... falls back to NTv1 >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb,ntv1_can.dat,conus \ - +to +proj=latlong +datum=NAD83 -E -w4 >>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -if test -z "${PROJ_LIB}"; then - export PROJ_LIB=$DATA_DIR -fi - -# Would be great to have a universale way of selecting a locale with -# a decimal separator that is not '.' -if command locale >/dev/null 2>/dev/null; then - if test `locale -a | grep fr_FR.utf8`; then - echo "Using locale with comma as decimal separator" - export LC_ALL=fr_FR.UTF-8 - export PROJ_USE_ENV_LOCALE=1 - fi -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=tv_out - -# -echo "doing tests into file ${OUT}, please wait" -rm -f ${OUT} -# -echo "##############################################################" >> ${OUT} -echo Test raw ellipse to raw ellipse >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 \ - +to +proj=latlong +ellps=bessel \ - -E >>${OUT} <> ${OUT} -echo Test NAD27 to raw ellipse >> ${OUT} -# -$EXE +proj=latlong +datum=NAD27 \ - +to +proj=latlong +ellps=bessel \ - -E >>${OUT} <> ${OUT} -echo Between two 3parameter approximations on same ellipsoid >> ${OUT} -# -$EXE +proj=latlong +ellps=bessel +towgs84=5,0,0 \ - +to +proj=latlong +ellps=bessel +towgs84=1,0,0 \ - -E >>${OUT} <> ${OUT} -echo 3param to raw ellipsoid on same ellipsoid >> ${OUT} -# -$EXE +proj=latlong +ellps=bessel +towgs84=5,0,0 \ - +to +proj=latlong +ellps=bessel \ - -E >>${OUT} <> ${OUT} -echo Test simple prime meridian handling. >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 +pm=greenwich \ - +to +proj=latlong +datum=WGS84 +pm=1 \ - -E >>${OUT} <> ${OUT} -echo Test support for the lon_wrap switch. >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=latlong +datum=WGS84 +lon_wrap=180 \ - -E >>${OUT} <> ${OUT} -echo Test simple prime meridian handling within a projection. >> ${OUT} -# -$EXE +proj=utm +zone=11 +datum=WGS84 +pm=3 \ - +to +proj=latlong +datum=WGS84 +pm=1w \ - -E >>${OUT} <> ${OUT} -echo Test geocentric x/y/z generation. >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=geocent +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo Test geocentric x/y/z consumption. >> ${OUT} -# -$EXE +proj=geocent +datum=WGS84 \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo Test conversion from geocentric latlong to geodetic latlong >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 +geoc \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo Test conversion from geodetic latlong to geocentric latlong >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=latlong +datum=WGS84 +geoc \ - -E >>${OUT} <> ${OUT} -echo "Test stere projection (re: win32 ticket 12)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=stere +lat_0=90 +lon_0=0 +lat_ts=70 +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test stere without lat_ts (#147)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=stere +lat_0=40 +lon_0=10 +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test sts projection (re: ticket 12)" >> ${OUT} -# -$EXE +proj=latlong +ellps=WGS84 \ - +to +proj=kav5 +ellps=WGS84 +units=m \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test RSO Borneo projection (re: ticket 62)" >> ${OUT} -# -$EXE +proj=latlong +a=6377298.556 +rf=300.8017 \ - +to +proj=omerc +a=6377298.556 +rf=300.8017 +lat_0=4 +lonc=115 \ - +alpha=53d18\'56.9537 +gamma=53d7\'48.3685 +k_0=0.99984 \ - +x_0=590476.87 +y_0=442857.65 \ - -E >>${OUT} <> ${OUT} -echo "Test extended transverse mercator (#97)" >> ${OUT} -# -$EXE +proj=etmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test extended transverse mercator inverse (#97)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=etmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ - -E >>${OUT} <> ${OUT} -echo "Test transverse mercator (#97)" >> ${OUT} -# -$EXE +proj=tmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test transverse mercator inverse (#97)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=tmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ - -E >>${OUT} <> ${OUT} -echo "Test robinson projection (#113)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=robin +datum=WGS84 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test hammer projection (pull request #329)" >> ${OUT} -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=hammer +datum=WGS84 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test healpix forward projection on sphere" >> ${OUT} -$EXE +proj=latlong +R=1 +lon_0=0 \ - +to +proj=healpix +R=1 +lon_0=0 -f '%.'5'f' \ - -E >>${OUT} <>${OUT} <> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 \ - +to +proj=healpix +a=1 +lon_0=0 +ellps=WGS84 -f '%.'5'f' \ - -E >>${OUT} <>${OUT} <> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 \ - +to +proj=healpix +a=1 +lon_0=0 +ellps=WGS84 -f '%.'5'f' -I\ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test rHEALPix forward projection on sphere north=0 south=0" >> ${OUT} -$EXE +proj=latlong +R=5 \ - +to +proj=rhealpix +R=5 +north_square=0 +south_square=0 -f '%.'5'f' \ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix forward projection on sphere north=1 south=1" >> ${OUT} -$EXE +proj=latlong +R=5 \ - +to +proj=rhealpix +R=5 +north_square=1 +south_square=1 -f '%.'5'f' \ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix inverse projection on sphere north=0 south=0" >> ${OUT} -$EXE +proj=latlong +R=5 \ - +to +proj=rhealpix +R=5 +north_square=0 +south_square=0 -f '%.'5'f' -I\ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix inverse projection on sphere north=1 south=1" >> ${OUT} -$EXE +proj=latlong +R=5 \ - +to +proj=rhealpix +R=5 +north_square=1 +south_square=1 -f '%.'5'f' -I\ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix forward projection on ellipsoid north=0 south=0" >> ${OUT} -$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ - +to +proj=rhealpix +a=5 +e=0.8 +r_a=4.3220011711888882 +north_square=0 +south_square=0 -f '%.'5'f' \ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix forward projection on ellipsoid north=1 south=1" >> ${OUT} -$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ - +to +proj=rhealpix +a=5 +e=0.8 +r_a=4.3220011711888882 +north_square=1 +south_square=1 -f '%.'5'f' \ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix inverse projection on ellipsoid north=0 south=0" >> ${OUT} -$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ - +to +proj=rhealpix +a=5 -I +e=0.8 +r_a=4.3220011711888882 +north_square=0 +south_square=0 -f '%.'5'f'\ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix inverse projection on ellipsoid north=1 south=1" >> ${OUT} -$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ - +to +proj=rhealpix +a=5 -I +e=0.8 +r_a=4.3220011711888882 +north_square=1 +south_square=1 -f '%.'5'f'\ - -E >>${OUT} <> ${OUT} -echo "Test geos projection" >> ${OUT} -echo "Test geos on a sphere" >> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere -I -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 -I -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere +sweep=x -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 +sweep=x -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere +sweep=x -I -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 +sweep=x -I -E >>${OUT} <> ${OUT} -echo "Test the Natural Earth Projection" >> ${OUT} -$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ - +to +proj=natearth +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ - -E >>${OUT} <> ${OUT} -echo "Test the Natural Earth II Projection" >> ${OUT} -$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ - +to +proj=natearth2 +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ - -E >>${OUT} <> ${OUT} -echo "Test the Compact Miller projection" >> ${OUT} -$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ - +to +proj=comill +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ - -E >>${OUT} <> ${OUT} -echo "Test pconic (#148)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=pconic +units=m +lat_1=20n +lat_2=60n +lon_0=60W +datum=WGS84 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test laea" >> ${OUT} -# -$EXE -f '%.12f' \ - +proj=laea +lat_0=45 +lon_0=-100 +units=m +datum=WGS84 +no_defs \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test forward calcofi projection" >> ${OUT} -$EXE +proj=latlong +ellps=clrk66 \ - +to +proj=calcofi +ellps=clrk66 \ - -E >>${OUT} <> ${OUT} -$EXE +proj=calcofi +ellps=clrk66 \ - +to +proj=longlat +ellps=clrk66 \ - -E >>${OUT} <> ${OUT} -echo "Check inverse error handling with ob_tran (#225)" >> ${OUT} -$EXE +proj=ob_tran \ - +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 \ - -E >>${OUT} <> ${OUT} -$EXE -I +proj=ob_tran \ - +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 \ - -E >>${OUT} <> ${OUT} -echo "Test MGI datum gives expected results (#207)" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 \ - +to +init=epsg:31284 \ - -E >>${OUT} <> ${OUT} -echo "Test omerc sensitivity with locations 90d from origin(#114)" >> ${OUT} -# -$EXE -f '%.8f' \ - +proj=latlong +ellps=WGS84 \ - +to +proj=omerc +ellps=WGS84 +lon_1=62.581150 +lat_1=74.856102 \ - +lon_2=53.942810 +lat_2=74.905884 +units=km +no_rot +no_defs \ - -E >>${OUT} <> ${OUT} -echo "Test omerc differences between poles (#190)" >> ${OUT} -# First, north pole. -$EXE -f '%.3f' \ - +proj=latlong +ellps=WGS84 \ - +to +proj=omerc +ellps=WGS84 +datum=WGS84 +no_rot \ - +lon_1=-27 +lat_1=70 +lon_2=-38 +lat_2=80 +lat_0=70 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test qsc" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 \ - +to +proj=qsc +datum=WGS84 +no_defs \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test bug 229" >> ${OUT} -# -$EXE -f '%.13f' \ - +init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0 \ - +to +proj=latlong +datum=WGS84 +no_defs \ - -E >>${OUT} <> ${OUT} -echo "Test bug 229 (2)" >> ${OUT} -# -$EXE -f '%.13f' \ - +init=epsg:4326 +to +init=epsg:4326 \ - -E >>${OUT} <> ${OUT} -echo "Test bug 244 " >> ${OUT} -# -$EXE -f '%.8f' \ - +init=epsg:4326 \ - +to +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m +no_defs \ - -E >>${OUT} <> ${OUT} -echo "Test bug 244 (2)" >> ${OUT} -# -$EXE -f '%.11f' \ - +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m +no_defs \ - +to +init=epsg:4326 \ - -E >>${OUT} <> ${OUT} -echo "Test bug 245 (use +datum=carthage)" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=longlat +datum=WGS84 +no_defs +to +proj=utm +zone=32 +datum=carthage +no_defs \ - -E >>${OUT} <> ${OUT} -echo "Test bug 245 (use expansion of +datum=carthage)" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=longlat +datum=WGS84 +no_defs +to +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-263.0,6.0,431.0 +no_defs \ - -E >>${OUT} <> ${OUT} -echo "Test SCH forward projection" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 +to +proj=sch +datum=WGS84 +plat_0=30.0 +plon_0=45.0 \ - +phdg_0=-12.0 +nodefs \ - -E >> ${OUT} <> ${OUT} -echo "Test SCH inverse projection" >> ${OUT} -# -$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} <> ${OUT} -echo "Test issue #316 (switch utm to use etmerc)" >> ${OUT} -# -$EXE -f '%.6f' \ - +proj=latlong +datum=WGS84 +no_defs +to +proj=utm +zone=35 +datum=WGS84 +no_defs \ - -E >>${OUT} <> ${OUT} -echo "Test issue #316 (switch utm to use etmerc)" >> ${OUT} -# -$EXE -f '%.6f' \ - +proj=latlong +datum=WGS84 +no_defs +to +proj=etmerc +datum=WGS84 +no_defs +k=0.9996 +lon_0=27 +x_0=500000 -f %.6f \ - -E >>${OUT} <> ${OUT} -echo "Test nzmg forward projection" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 +to \ - +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=WGS84 +units=m +no_defs \ - -E >> ${OUT} <> ${OUT} -echo "Test nzmg inverse projection" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=WGS84 +units=m +no_defs +to \ - +proj=latlong +datum=WGS84 \ - -E >> ${OUT} <> ${OUT} -echo "Test misrsom forward projection" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 +no_defs +to \ - +proj=misrsom +path=41 +ellps=WGS84 +units=m \ - -E >> ${OUT} <> ${OUT} -echo "Test misrsom inverse projection" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=misrsom +path=41 +ellps=WGS84 +units=m +no_defs +to \ - +proj=latlong +datum=WGS84 -f '%0.7f' \ - -E >> ${OUT} <> ${OUT} -echo "Test patterson forward projection" >> ${OUT} -# -$EXE -f '%0.8f' \ - +proj=latlong +datum=WGS84 \ - +to +proj=patterson +a=6371008.7714 +b=6371008.7714 +units=m \ - -E >> ${OUT} <> ${OUT} -echo "Test patterson inverse projection" >> ${OUT} -# -$EXE -f '%0.3f' \ - +proj=patterson +a=6371008.7714 +b=6371008.7714 +units=m \ - +to +proj=latlong +datum=WGS84 \ - -E >> ${OUT} <> ${OUT} -echo "Test Web Mercator to avoid issue #834 in the future" >> ${OUT} -# -$EXE -f '%0.3f' \ - +proj=utm +zone=15 +datum=NAD83 \ - +to +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 \ - +k=1.0 +units=m +nadgrids=@null \ - -E >> ${OUT} <> ${OUT} -echo "Test vto_meter" >> ${OUT} -# -$EXE -f '%0.3f' \ - +proj=longlat +a=1 +b=1 +vto_meter=1000 \ - +to +proj=longlat +a=1 +b=1 \ - -E >> ${OUT} <> ${OUT} <> ${OUT} <> ${OUT} <> ${OUT} -echo "Test EPSG:4326 to EPSG:32631" >> ${OUT} -# Input is latitude, longitude order -$EXE EPSG:4326 +to EPSG:32631 -E >> ${OUT} <> ${OUT} -echo "Test EPSG:32631 to EPSG:4326" >> ${OUT} -# Input is latitude, longitude order -$EXE EPSG:32631 EPSG:4326 -E >> ${OUT} < Date: Sat, 1 Dec 2018 20:21:20 +0100 Subject: Fix PROJ_GRID_AVAILABILITY_IGNORED --- src/coordinateoperation.cpp | 15 +++++++++++---- test/unit/test_c_api.cpp | 8 ++++---- test/unit/test_operation.cpp | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/coordinateoperation.cpp b/src/coordinateoperation.cpp index 6ecd3838..bbe84698 100644 --- a/src/coordinateoperation.cpp +++ b/src/coordinateoperation.cpp @@ -9328,6 +9328,7 @@ struct FilterAndSort { // Precompute a number of parameters for each operation that will be // useful for the sorting. std::map map; + const auto gridAvailabilityUse = context->getGridAvailabilityUse(); for (const auto &op : res) { bool dummy = false; auto extentOp = getExtent(op, true, dummy); @@ -9360,14 +9361,20 @@ struct FilterAndSort { bool gridsAvailable = true; bool gridsKnown = true; if (context->getAuthorityFactory() && - context->getGridAvailabilityUse() == - CoordinateOperationContext::GridAvailabilityUse:: - USE_FOR_SORTING) { + (gridAvailabilityUse == + CoordinateOperationContext::GridAvailabilityUse:: + USE_FOR_SORTING || + gridAvailabilityUse == + CoordinateOperationContext::GridAvailabilityUse:: + IGNORE_GRID_AVAILABILITY)) { const auto gridsNeeded = op->gridsNeeded( context->getAuthorityFactory()->databaseContext()); for (const auto &gridDesc : gridsNeeded) { hasGrids = true; - if (!gridDesc.available) { + if (gridAvailabilityUse == + CoordinateOperationContext::GridAvailabilityUse:: + USE_FOR_SORTING && + !gridDesc.available) { gridsAvailable = false; } if (gridDesc.packageName.empty()) { diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 855ebf36..7db38601 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -1145,7 +1145,7 @@ TEST_F(CApi, proj_obj_create_operations) { ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); - EXPECT_EQ(proj_obj_list_get_count(res), 7); + EXPECT_EQ(proj_obj_list_get_count(res), 8); EXPECT_EQ(proj_obj_list_get(m_ctxt, res, -1), nullptr); EXPECT_EQ(proj_obj_list_get(m_ctxt, res, proj_obj_list_get_count(res)), @@ -1233,8 +1233,8 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) { proj_obj_create_operations(m_ctxt, source_crs, target_crs, ctxt); ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); - EXPECT_EQ(proj_obj_list_get_count(res), 6); - auto op = proj_obj_list_get(m_ctxt, res, 0); + EXPECT_EQ(proj_obj_list_get_count(res), 7); + auto op = proj_obj_list_get(m_ctxt, res, 1); ASSERT_NE(op, nullptr); ObjectKeeper keeper_op(op); @@ -1263,7 +1263,7 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) { ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); // includes 2 results from ESRI - EXPECT_EQ(proj_obj_list_get_count(res), 4); + EXPECT_EQ(proj_obj_list_get_count(res), 5); auto op = proj_obj_list_get(m_ctxt, res, 0); ASSERT_NE(op, nullptr); ObjectKeeper keeper_op(op); diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index bb8221fd..057f1717 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -4306,7 +4306,7 @@ TEST(operation, geogCRS_to_geogCRS_context_ntv1_ntv2_ctable2) { authFactory->createCoordinateReferenceSystem("4267"), // NAD27 authFactory->createCoordinateReferenceSystem("4269"), // NAD83 ctxt); - ASSERT_EQ(list.size(), 6); + ASSERT_EQ(list.size(), 7); EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " -- cgit v1.2.3 From c81ad96aa079aac30a4361df11a3ba51a7ac843a Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 1 Dec 2018 18:15:27 +0100 Subject: Add testing of projinfo utility --- src/projinfo.cpp | 17 +- test/cli/Makefile.am | 11 +- test/cli/testprojinfo | 67 ++++++ test/cli/testprojinfo_out.dist | 480 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 565 insertions(+), 10 deletions(-) create mode 100755 test/cli/testprojinfo create mode 100644 test/cli/testprojinfo_out.dist diff --git a/src/projinfo.cpp b/src/projinfo.cpp index 8ed8e14a..7acb13af 100644 --- a/src/projinfo.cpp +++ b/src/projinfo.cpp @@ -206,7 +206,7 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, if (outputOpt.PROJ5) { try { if (!outputOpt.quiet) { - std::cout << "PROJ string: " << std::endl; + std::cout << "PROJ string:" << std::endl; } std::cout << projStringExportable->exportToPROJString( PROJStringFormatter::create( @@ -227,7 +227,7 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, std::cout << std::endl; } if (!outputOpt.quiet) { - std::cout << "PROJ.4 string: " << std::endl; + std::cout << "PROJ.4 string:" << std::endl; } auto crs = nn_dynamic_pointer_cast(obj); @@ -263,7 +263,7 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, std::cout << std::endl; } if (!outputOpt.quiet) { - std::cout << "WKT2_2015 string: " << std::endl; + std::cout << "WKT2_2015 string:" << std::endl; } auto formatter = WKTFormatter::create(WKTFormatter::Convention::WKT2_2015); @@ -288,7 +288,7 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, std::cout << std::endl; } if (!outputOpt.quiet) { - std::cout << "WKT2_2015_SIMPLIFIED string: " << std::endl; + std::cout << "WKT2_2015_SIMPLIFIED string:" << std::endl; } auto formatter = WKTFormatter::create( WKTFormatter::Convention::WKT2_2015_SIMPLIFIED); @@ -313,7 +313,7 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, std::cout << std::endl; } if (!outputOpt.quiet) { - std::cout << "WKT2_2018 string: " << std::endl; + std::cout << "WKT2_2018 string:" << std::endl; } auto formatter = WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); @@ -338,7 +338,7 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, std::cout << std::endl; } if (!outputOpt.quiet) { - std::cout << "WKT2_2018_SIMPLIFIED string: " << std::endl; + std::cout << "WKT2_2018_SIMPLIFIED string:" << std::endl; } auto formatter = WKTFormatter::create( WKTFormatter::Convention::WKT2_2018_SIMPLIFIED); @@ -363,7 +363,7 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, std::cout << std::endl; } if (!outputOpt.quiet) { - std::cout << "WKT1_GDAL: " << std::endl; + std::cout << "WKT1_GDAL:" << std::endl; } auto crs = nn_dynamic_pointer_cast(obj); @@ -400,7 +400,7 @@ static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, std::cout << std::endl; } if (!outputOpt.quiet) { - std::cout << "WKT1_ESRI: " << std::endl; + std::cout << "WKT1_ESRI:" << std::endl; } auto wkt = wktExportable->exportToWKT( @@ -586,6 +586,7 @@ int main(int argc, char **argv) { outputOpt.WKT2_2018 = true; outputOpt.WKT2_2015 = true; outputOpt.WKT1_GDAL = true; + outputOpt.WKT1_ESRI = true; } else if (ci_equal(format, "default")) { outputOpt.PROJ5 = true; outputOpt.PROJ4 = false; diff --git a/test/cli/Makefile.am b/test/cli/Makefile.am index f1bd4543..3650a9a8 100644 --- a/test/cli/Makefile.am +++ b/test/cli/Makefile.am @@ -4,6 +4,7 @@ THIS_DIR = $(top_srcdir)/test/cli EXEPATH = ../../src PROJEXE = $(EXEPATH)/proj CS2CSEXE = $(EXEPATH)/cs2cs +PROJINFOEXE = $(EXEPATH)/projinfo # PROJ.4 test scripts TEST27 = $(THIS_DIR)/test27 @@ -13,18 +14,23 @@ TESTVARIOUS = $(THIS_DIR)/testvarious TESTFLAKY = $(THIS_DIR)/testflaky TESTDATUMFILE = $(THIS_DIR)/testdatumfile TESTIGN = $(THIS_DIR)/testIGNF +TESTPROJINFO = $(THIS_DIR)/testprojinfo EXTRA_DIST = pj_out27.dist pj_out83.dist td_out.dist \ test27 test83 tv_out.dist tf_out.dist \ testflaky testvarious testdatumfile testntv2 ntv2_out.dist \ testIGNF proj_outIGNF.dist \ + testprojinfo testprojinfo_out.dist \ CMakeLists.txt -check-local: +testprojinfo-check: + PROJ_LIB=$(DATAPATH) $(TESTPROJINFO) $(PROJINFOEXE) + +check-local: testprojinfo-check $(TEST27) $(PROJEXE) $(TEST83) $(PROJEXE) PROJ_LIB=$(DATAPATH) $(TESTVARIOUS) $(CS2CSEXE) - @if [ -f $(DATAPATH)/conus ] ; then \ + @if [ -f $(DATAPATH)/conus -a -f $(DATAPATH)/ntv1_can.dat -a -f $(DATAPATH)/MD -a -f $(DATAPATH)/ntf_r93.dat ]; then \ PROJ_LIB=$(DATAPATH) $(TESTDATUMFILE) $(CS2CSEXE) ; \ fi @if [ -f $(DATAPATH)/ntf_r93.gsb ] ; then \ @@ -33,3 +39,4 @@ check-local: @if [ -f $(DATAPATH)/ntv2_0.gsb ] ; then \ PROJ_LIB=$(DATAPATH) $(TESTNTV2) $(CS2CSEXE) ; \ fi + diff --git a/test/cli/testprojinfo b/test/cli/testprojinfo new file mode 100755 index 00000000..ad62d1da --- /dev/null +++ b/test/cli/testprojinfo @@ -0,0 +1,67 @@ +: +# Test projinfo + +TEST_CLI_DIR=`dirname $0` +DATA_DIR=`dirname $0`/../../data +EXE=$1 + +usage() +{ + echo "Usage: ${0} " + echo + exit 1 +} + +if test -z "${EXE}"; then + EXE=../../src/projinfo +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=testprojinfo_out + +rm -f ${OUT} + +echo "Testing projinfo EPSG:4326" >> ${OUT} +$EXE EPSG:4326 >>${OUT} +echo "" >>${OUT} + +echo "Testing projinfo -o ALL EPSG:4326" >> ${OUT} +$EXE -o ALL EPSG:4326 >>${OUT} +echo "" >>${OUT} + +echo "Testing projinfo -s EPSG:4326 -t EPSG:32631" >> ${OUT} +$EXE -s EPSG:4326 -t EPSG:32631 >>${OUT} +echo "" >>${OUT} + +echo "Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary" >> ${OUT} +$EXE -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary >>${OUT} +echo "" >>${OUT} + +echo "Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects" >> ${OUT} +$EXE -s NAD27 -t NAD83 --grid-check none --spatial-test intersects >>${OUT} +echo "" >>${OUT} + +# do 'diff' with distribution results +echo "diff ${OUT} with testprojinfo_out.dist" +diff -u ${OUT} ${TEST_CLI_DIR}/testprojinfo_out.dist +if [ $? -ne 0 ] ; then + echo "" + echo "PROBLEMS HAVE OCCURRED" + echo "test file ${OUT} saved" + echo + exit 100 +else + echo "TEST OK" + echo "test file ${OUT} removed" + echo + /bin/rm -f ${OUT} + exit 0 +fi diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist new file mode 100644 index 00000000..fea5a299 --- /dev/null +++ b/test/cli/testprojinfo_out.dist @@ -0,0 +1,480 @@ +Testing projinfo EPSG:4326 +PROJ string: ++proj=pipeline +step +proj=longlat +ellps=WGS84 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +WKT2_2015 string: +GEODCRS["WGS 84", + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + AREA["World"], + BBOX[-90,-180,90,180], + ID["EPSG",4326]] + +Testing projinfo -o ALL EPSG:4326 +PROJ string: ++proj=pipeline +step +proj=longlat +ellps=WGS84 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +PROJ.4 string: ++proj=longlat +datum=WGS84 +no_defs + +WKT2_2015 string: +GEODCRS["WGS 84", + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + AREA["World"], + BBOX[-90,-180,90,180], + ID["EPSG",4326]] + +WKT2_2018 string: +GEOGCRS["WGS 84", + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + USAGE[ + SCOPE["unknown"], + AREA["World"], + BBOX[-90,-180,90,180]], + ID["EPSG",4326]] + +WKT1_GDAL: +GEOGCS["WGS 84", + DATUM["WGS_1984", + SPHEROID["WGS 84",6378137,298.257223563, + AUTHORITY["EPSG","7030"]], + AUTHORITY["EPSG","6326"]], + PRIMEM["Greenwich",0, + AUTHORITY["EPSG","8901"]], + UNIT["degree",0.0174532925199433, + AUTHORITY["EPSG","9122"]], + AUTHORITY["EPSG","4326"]] + + +WKT1_ESRI: +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] + + +Testing projinfo -s EPSG:4326 -t EPSG:32631 +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=utm +zone=31 +ellps=WGS84 + +WKT2_2015 string: +CONVERSION["UTM zone 31N", + METHOD["Transverse Mercator", + ID["EPSG",9807]], + PARAMETER["Latitude of natural origin",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8801]], + PARAMETER["Longitude of natural origin",3, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8802]], + PARAMETER["Scale factor at natural origin",0.9996, + SCALEUNIT["unity",1], + ID["EPSG",8805]], + PARAMETER["False easting",500000, + LENGTHUNIT["metre",1], + ID["EPSG",8806]], + PARAMETER["False northing",0, + LENGTHUNIT["metre",1], + ID["EPSG",8807]], + ID["EPSG",16031]] + +Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary +Candidate operations found: 8 +DERIVED_FROM(EPSG):1312, NAD27 to NAD83 (3), 1.0 m, Canada +DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - NAD27 +DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, USA - CONUS including EEZ +DERIVED_FROM(EPSG):1243, NAD27 to NAD83 (2), 0.5 m, USA - Alaska including EEZ +ESRI:108003, NAD_1927_To_NAD_1983_PR_VI, 0.05 m, Caribbean - Puerto Rico and Virgin Islands - onshore +unknown id, Null geographic offset from NAD27 to NAD83, unknown accuracy, World +EPSG:1462, NAD27 to NAD83 (5), 1.0 m, Canada - Quebec +EPSG:1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec + +Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects +------------------------------------- +Operation n°1: + +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ntv1_can.dat +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +WKT2_2015 string: +COORDINATEOPERATION["NAD27 to NAD83 (3)", + SOURCECRS[ + GEODCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + TARGETCRS[ + GEODCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + METHOD["NTv1", + ID["EPSG",9614]], + PARAMETERFILE["Latitude and longitude difference file","ntv1_can.dat"], + OPERATIONACCURACY[1.0], + AREA["Canada"], + BBOX[40.04,-141.01,86.46,-47.74], + ID["DERIVED_FROM(EPSG)",1312]] + +------------------------------------- +Operation n°2: + +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ntv2_0.gsb +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +WKT2_2015 string: +COORDINATEOPERATION["NAD27 to NAD83 (4)", + SOURCECRS[ + GEODCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + TARGETCRS[ + GEODCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + METHOD["NTv2", + ID["EPSG",9615]], + PARAMETERFILE["Latitude and longitude difference file","ntv2_0.gsb"], + OPERATIONACCURACY[1.5], + AREA["Canada - NAD27"], + BBOX[40.04,-141.01,83.17,-47.74], + ID["DERIVED_FROM(EPSG)",1313]] + +------------------------------------- +Operation n°3: + +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=conus +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +WKT2_2015 string: +COORDINATEOPERATION["NAD27 to NAD83 (1)", + SOURCECRS[ + GEODCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + TARGETCRS[ + GEODCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + METHOD["CTABLE2"], + PARAMETERFILE["Latitude and longitude difference file","conus"], + OPERATIONACCURACY[0.15], + AREA["USA - CONUS including EEZ"], + BBOX[23.81,-129.17,49.38,-65.69], + ID["DERIVED_FROM(EPSG)",1241]] + +------------------------------------- +Operation n°4: + +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=alaska +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +WKT2_2015 string: +COORDINATEOPERATION["NAD27 to NAD83 (2)", + SOURCECRS[ + GEODCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + TARGETCRS[ + GEODCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + METHOD["CTABLE2"], + PARAMETERFILE["Latitude and longitude difference file","alaska"], + OPERATIONACCURACY[0.5], + AREA["USA - Alaska including EEZ"], + BBOX[47.88,167.65,74.71,-129.99], + ID["DERIVED_FROM(EPSG)",1243]] + +------------------------------------- +Operation n°5: + +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=prvi +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +WKT2_2015 string: +COORDINATEOPERATION["NAD_1927_To_NAD_1983_PR_VI", + SOURCECRS[ + GEODCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + TARGETCRS[ + GEODCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + METHOD["NTv2", + ID["EPSG",9615]], + PARAMETERFILE["Latitude and longitude difference file","prvi"], + OPERATIONACCURACY[0.05], + AREA["Caribbean - Puerto Rico and Virgin Islands - onshore"], + BBOX[17.62,-67.97,18.78,-64.25], + ID["ESRI",108003]] + +------------------------------------- +Operation n°6: + +PROJ string: + + +WKT2_2015 string: +COORDINATEOPERATION["Null geographic offset from NAD27 to NAD83", + SOURCECRS[ + GEODCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + AREA["North America - NAD27"], + BBOX[7.15,167.65,83.17,-47.74], + ID["EPSG",4267]]], + TARGETCRS[ + GEODCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + AREA["North America - NAD83"], + BBOX[14.92,167.65,86.46,-47.74], + ID["EPSG",4269]]], + METHOD["Geographic2D offsets", + ID["EPSG",9619]], + PARAMETER["Latitude offset",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8601]], + PARAMETER["Longitude offset",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8602]], + AREA["World"], + BBOX[-90,-180,90,180]] + +------------------------------------- +Operation n°7: + +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=GS2783v1.QUE +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +WKT2_2015 string: +COORDINATEOPERATION["NAD27 to NAD83 (5)", + SOURCECRS[ + GEODCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + TARGETCRS[ + GEODCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + METHOD["NTv1", + ID["EPSG",9614]], + PARAMETERFILE["Latitude and longitude difference file","GS2783v1.QUE"], + OPERATIONACCURACY[1.0], + AREA["Canada - Quebec"], + BBOX[44.99,-79.85,62.62,-57.1], + ID["EPSG",1462]] + +------------------------------------- +Operation n°8: + +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=QUE27-83.gsb +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 + +WKT2_2015 string: +COORDINATEOPERATION["NAD27 to NAD83 (6)", + SOURCECRS[ + GEODCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + TARGETCRS[ + GEODCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]]], + METHOD["NTv2", + ID["EPSG",9615]], + PARAMETERFILE["Latitude and longitude difference file","QUE27-83.gsb"], + OPERATIONACCURACY[1.5], + AREA["Canada - Quebec"], + BBOX[44.99,-79.85,62.62,-57.1], + ID["EPSG",1573]] + -- cgit v1.2.3 From ccae82ec36d9c5177e3fd24d8d04a1d4c5f7e1ab Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 1 Dec 2018 23:20:33 +0100 Subject: C API: rename parameter to reflect its output status --- src/c_api.cpp | 17 +++++++++-------- src/proj.h | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/c_api.cpp b/src/c_api.cpp index 30365297..7a991765 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -1596,8 +1596,8 @@ PJ_OBJ *proj_obj_get_target_crs(PJ_CONTEXT *ctx, const PJ_OBJ *obj) { * @param obj Object of type CRS. Must not be NULL * @param auth_name Authority name, or NULL for all authorities * @param options Placeholder for future options. Should be set to NULL. - * @param confidence Output parameter. Pointer to an array of integers that will - * be allocated by the function and filled with the confidence values + * @param out_confidence Output parameter. Pointer to an array of integers that + * will be allocated by the function and filled with the confidence values * (0-100). There are as many elements in this array as * proj_obj_list_get_count() * returns on the return value of this function. *confidence should be @@ -1606,12 +1606,13 @@ PJ_OBJ *proj_obj_get_target_crs(PJ_CONTEXT *ctx, const PJ_OBJ *obj) { */ PJ_OBJ_LIST *proj_obj_identify(PJ_CONTEXT *ctx, const PJ_OBJ *obj, const char *auth_name, - const char *const *options, int **confidence) { + const char *const *options, + int **out_confidence) { SANITIZE_CTX(ctx); assert(obj); (void)options; - if (confidence) { - *confidence = nullptr; + if (out_confidence) { + *out_confidence = nullptr; } auto ptr = obj->obj.get(); auto crs = dynamic_cast(ptr); @@ -1624,7 +1625,7 @@ PJ_OBJ_LIST *proj_obj_identify(PJ_CONTEXT *ctx, const PJ_OBJ *obj, auth_name ? auth_name : ""); auto res = crs->identify(factory); std::vector objects; - confidenceTemp = confidence ? new int[res.size()] : nullptr; + confidenceTemp = out_confidence ? new int[res.size()] : nullptr; size_t i = 0; for (const auto &pair : res) { objects.push_back(pair.first); @@ -1634,8 +1635,8 @@ PJ_OBJ_LIST *proj_obj_identify(PJ_CONTEXT *ctx, const PJ_OBJ *obj, } } auto ret = internal::make_unique(std::move(objects)); - if (confidence) { - *confidence = confidenceTemp; + if (out_confidence) { + *out_confidence = confidenceTemp; confidenceTemp = nullptr; } return ret.release(); diff --git a/src/proj.h b/src/proj.h index 18731328..c41a2770 100644 --- a/src/proj.h +++ b/src/proj.h @@ -658,7 +658,7 @@ PJ_OBJ_LIST PROJ_DLL *proj_obj_identify(PJ_CONTEXT *ctx, const PJ_OBJ* obj, const char *auth_name, const char* const *options, - int **confidence); + int **out_confidence); void PROJ_DLL proj_free_int_list(int* list); -- cgit v1.2.3 From 0ab18674d2b1ea8060ce6eb59c676f9ce98d50fb Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 2 Dec 2018 19:12:28 +0100 Subject: improve identify() for projected and bound CRS --- src/crs.cpp | 98 ++++++++++++++++++++++++++++++++--------- src/io.cpp | 10 +++++ test/unit/test_crs.cpp | 116 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 204 insertions(+), 20 deletions(-) diff --git a/src/crs.cpp b/src/crs.cpp index 1cc5d31a..21df43b4 100644 --- a/src/crs.cpp +++ b/src/crs.cpp @@ -45,6 +45,7 @@ #include "proj/internal/internal.hpp" #include "proj/internal/io_internal.hpp" +#include #include #include #include @@ -88,6 +89,20 @@ namespace crs { struct CRS::Private { BoundCRSPtr canonicalBoundCRS_{}; std::string extensionProj4_{}; + bool implicitCS_ = false; + + void setImplicitCS(const util::PropertyMap &properties) { + auto oIter = properties.find("IMPLICIT_CS"); + if (oIter != properties.end()) { + if (auto genVal = util::nn_dynamic_pointer_cast( + oIter->second)) { + if (genVal->type() == util::BoxedValue::Type::BOOLEAN && + genVal->booleanValue()) { + implicitCS_ = true; + } + } + } + } }; //! @endcond @@ -860,6 +875,7 @@ GeodeticCRS::create(const util::PropertyMap &properties, crs->setProperties(properties); properties.getStringValue("EXTENSION_PROJ4", crs->CRS::getPrivate()->extensionProj4_); + return crs; } @@ -1183,6 +1199,12 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { std::list res; const auto &thisName(nameStr()); + const bool l_implicitCS = CRS::getPrivate()->implicitCS_; + const auto crsCriterion = + l_implicitCS + ? util::IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS + : util::IComparable::Criterion::EQUIVALENT; + const GeographicCRSNNPtr candidatesCRS[] = {GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4267, GeographicCRS::EPSG_4269}; @@ -1190,8 +1212,7 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { const bool nameEquivalent = metadata::Identifier::isEquivalentName( thisName.c_str(), crs->nameStr().c_str()); const bool nameEqual = thisName == crs->nameStr(); - const bool isEq = _isEquivalentTo( - crs.get(), util::IComparable::Criterion::EQUIVALENT); + const bool isEq = _isEquivalentTo(crs.get(), crsCriterion); if (nameEquivalent && isEq && (!authorityFactory || nameEqual)) { res.emplace_back(util::nn_static_pointer_cast(crs), nameEqual ? 100 : 90); @@ -1226,15 +1247,13 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { const auto &thisDatum(datum()); auto searchByDatum = [this, &authorityFactory, &res, &thisDatum, - &geodetic_crs_type]() { + &geodetic_crs_type, crsCriterion]() { for (const auto &id : thisDatum->identifiers()) { try { auto tempRes = authorityFactory->createGeodeticCRSFromDatum( *id->codeSpace(), id->code(), geodetic_crs_type); for (const auto &crs : tempRes) { - if (_isEquivalentTo( - crs.get(), - util::IComparable::Criterion::EQUIVALENT)) { + if (_isEquivalentTo(crs.get(), crsCriterion)) { res.emplace_back(crs, 70); } } @@ -1245,7 +1264,8 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { const auto &thisEllipsoid(ellipsoid()); auto searchByEllipsoid = [this, &authorityFactory, &res, &thisDatum, - &thisEllipsoid, &geodetic_crs_type]() { + &thisEllipsoid, &geodetic_crs_type, + l_implicitCS]() { const auto ellipsoids = thisEllipsoid->identifiers().empty() ? authorityFactory->createEllipsoidFromExisting( @@ -1267,11 +1287,11 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { crsDatum->primeMeridian()->_isEquivalentTo( thisDatum->primeMeridian().get(), util::IComparable::Criterion::EQUIVALENT) && - coordinateSystem()->_isEquivalentTo( - crs->coordinateSystem().get(), - util::IComparable::Criterion::EQUIVALENT) - - ) { + (!l_implicitCS || + coordinateSystem()->_isEquivalentTo( + crs->coordinateSystem().get(), + util::IComparable::Criterion:: + EQUIVALENT))) { res.emplace_back(crs, 60); } } @@ -1302,8 +1322,7 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { authorityFactory->databaseContext(), *id->codeSpace()) ->createGeodeticCRS(id->code()); - bool match = _isEquivalentTo( - crs.get(), util::IComparable::Criterion::EQUIVALENT); + bool match = _isEquivalentTo(crs.get(), crsCriterion); res.emplace_back(crs, match ? 100 : 25); return res; } catch (const std::exception &) { @@ -1319,9 +1338,7 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { auto crs = util::nn_dynamic_pointer_cast(obj); assert(crs); auto crsNN = NN_NO_CHECK(crs); - if (_isEquivalentTo( - crs.get(), - util::IComparable::Criterion::EQUIVALENT)) { + if (_isEquivalentTo(crs.get(), crsCriterion)) { if (crs->nameStr() == thisName) { res.clear(); res.emplace_back(crsNN, 100); @@ -1567,6 +1584,7 @@ GeographicCRS::create(const util::PropertyMap &properties, crs->setProperties(properties); properties.getStringValue("EXTENSION_PROJ4", crs->CRS::getPrivate()->extensionProj4_); + crs->CRS::getPrivate()->setImplicitCS(properties); return crs; } @@ -2582,6 +2600,7 @@ ProjectedCRS::create(const util::PropertyMap &properties, crs->setDerivingConversionCRS(); properties.getStringValue("EXTENSION_PROJ4", crs->CRS::getPrivate()->extensionProj4_); + crs->CRS::getPrivate()->setImplicitCS(properties); return crs; } @@ -2836,7 +2855,8 @@ ProjectedCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { *id->codeSpace()) ->createProjectedCRS(id->code()); bool match = _isEquivalentTo( - crs.get(), util::IComparable::Criterion::EQUIVALENT); + crs.get(), util::IComparable::Criterion:: + EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS); res.emplace_back(crs, match ? 100 : 25); return res; } catch (const std::exception &) { @@ -2857,13 +2877,27 @@ ProjectedCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { foundEquivalentName |= eqName; if (_isEquivalentTo( crs.get(), - util::IComparable::Criterion::EQUIVALENT)) { + util::IComparable::Criterion:: + EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)) { if (crs->nameStr() == thisName) { res.clear(); res.emplace_back(crsNN, 100); return res; } res.emplace_back(crsNN, eqName ? 90 : 70); + } else if (crs->nameStr() == thisName && + CRS::getPrivate()->implicitCS_ && + l_baseCRS->_isEquivalentTo( + crs->baseCRS().get(), + util::IComparable::Criterion:: + EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS) && + derivingConversionRef()->_isEquivalentTo( + crs->derivingConversionRef().get(), + util::IComparable::Criterion::EQUIVALENT) && + objects.size() == 1) { + res.clear(); + res.emplace_back(crsNN, 100); + return res; } else { res.emplace_back(crsNN, 25); } @@ -2925,7 +2959,8 @@ ProjectedCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { } if (_isEquivalentTo(crs.get(), - util::IComparable::Criterion::EQUIVALENT)) { + util::IComparable::Criterion:: + EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)) { res.emplace_back(crs, unsignificantName ? 90 : 70); } else if (ellipsoid->_isEquivalentTo( crs->baseCRS()->ellipsoid().get(), @@ -3663,9 +3698,26 @@ BoundCRS::_identify(const io::AuthorityFactoryPtr &authorityFactory) const { } } catch (const std::exception &) { } + bool foundOp = false; for (const auto &op : ops) { std::string opTransfPROJString; bool opTransfPROJStringValid = false; + if (op->nameStr().find("Null geographic") == 0) { + if (isTOWGS84Compatible()) { + auto params = + transformation()->getTOWGS84Parameters(); + if (params == + std::vector{0, 0, 0, 0, 0, 0, 0}) { + res.emplace_back(create(candidateBaseCRS, + d->hubCRS_, + transformation()), + pair.second); + foundOp = true; + break; + } + } + continue; + } try { opTransfPROJString = op->exportToPROJString( io::PROJStringFormatter::create().get()); @@ -3682,9 +3734,15 @@ BoundCRS::_identify(const io::AuthorityFactoryPtr &authorityFactory) const { NN_NO_CHECK(util::nn_dynamic_pointer_cast< operation::Transformation>(op))), pair.second); + foundOp = true; break; } } + if (!foundOp) { + res.emplace_back( + create(candidateBaseCRS, d->hubCRS_, transformation()), + std::min(70, pair.second)); + } } } } diff --git a/src/io.cpp b/src/io.cpp index 691d96e3..f95a8079 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -2517,6 +2517,11 @@ WKTParser::Private::buildGeodeticCRS(const WKTNodeNNPtr &node) { auto props = buildProperties(node); addExtensionProj4ToProp(nodeP, props); + // No explicit AXIS node ? (WKT1) + if (isNull(nodeP->lookForChild(WKTConstants::AXIS))) { + props.set("IMPLICIT_CS", true); + } + auto datum = !isNull(datumNode) ? buildGeodeticReferenceFrame(datumNode, primeMeridian, dynamicNode) @@ -3361,6 +3366,11 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { auto cs = buildCS(csNode, node, UnitOfMeasure::NONE); auto cartesianCS = nn_dynamic_pointer_cast(cs); + // No explicit AXIS node ? (WKT1) + if (isNull(nodeP->lookForChild(WKTConstants::AXIS))) { + props.set("IMPLICIT_CS", true); + } + if (isNull(csNode) && node->countChildrenOfName(WKTConstants::AXIS) == 0) { const auto methodCode = conversion->method()->getEPSGCode(); // Krovak south oriented ? diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp index bbbf2154..91ed145c 100644 --- a/test/unit/test_crs.cpp +++ b/test/unit/test_crs.cpp @@ -1216,6 +1216,23 @@ TEST(crs, geodeticcrs_identify_no_db) { EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); EXPECT_EQ(res.front().second, 25); } + + { + // WKT1 identification + auto obj = + WKTParser() + .attachDatabaseContext(DatabaseContext::create()) + .createFromWKT( + "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\"," + "6378137,298.257223563]],PRIMEM[\"Greenwich\",0]," + "UNIT[\"Degree\",0.0174532925199433]]"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); + EXPECT_EQ(res.front().second, 100); + } } // --------------------------------------------------------------------------- @@ -1892,6 +1909,71 @@ TEST(crs, projectedCRS_identify_db) { EXPECT_EQ(res.front().first->getEPSGCode(), 3375); EXPECT_EQ(res.front().second, 70); } + { + // Identify from a WKT1 string wit explicit correct axis order + auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT( + "PROJCS[\"ETRS89 / UTM zone 32N (N-E)\",GEOGCS[\"ETRS89\"," + "DATUM[\"European_Terrestrial_Reference_System_1989\"," + "SPHEROID[\"GRS 1980\",6378137,298.257222101]]," + "PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]," + "PROJECTION[\"Transverse_Mercator\"]," + "PARAMETER[\"latitude_of_origin\",0]," + "PARAMETER[\"central_meridian\",9]," + "PARAMETER[\"scale_factor\",0.9996]," + "PARAMETER[\"false_easting\",500000]," + "PARAMETER[\"false_northing\",0]," + "UNIT[\"metre\",1]," + "AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAST]]"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 3044); + EXPECT_EQ(res.front().second, 100); + } + { + // Identify from a WKT1 string wit wrong axis order + auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT( + "PROJCS[\"ETRS89 / UTM zone 32N (N-E)\",GEOGCS[\"ETRS89\"," + "DATUM[\"European_Terrestrial_Reference_System_1989\"," + "SPHEROID[\"GRS 1980\",6378137,298.257222101]]," + "PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]," + "PROJECTION[\"Transverse_Mercator\"]," + "PARAMETER[\"latitude_of_origin\",0]," + "PARAMETER[\"central_meridian\",9]," + "PARAMETER[\"scale_factor\",0.9996]," + "PARAMETER[\"false_easting\",500000]," + "PARAMETER[\"false_northing\",0]," + "UNIT[\"metre\",1]," + "AXIS[\"Easting\",EAST], AXIS[\"Northing\",NORTH]]"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 3044); + EXPECT_EQ(res.front().second, 25); + } + { + // Identify from a WKT1 string, without explicit axis + auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT( + "PROJCS[\"ETRS89 / UTM zone 32N (N-E)\",GEOGCS[\"ETRS89\"," + "DATUM[\"European_Terrestrial_Reference_System_1989\"," + "SPHEROID[\"GRS 1980\",6378137,298.257222101]]," + "PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]," + "PROJECTION[\"Transverse_Mercator\"]," + "PARAMETER[\"latitude_of_origin\",0]," + "PARAMETER[\"central_meridian\",9]," + "PARAMETER[\"scale_factor\",0.9996]," + "PARAMETER[\"false_easting\",500000]," + "PARAMETER[\"false_northing\",0]," + "UNIT[\"metre\",1]]"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 3044); + EXPECT_EQ(res.front().second, 100); + } { // No equivalent CRS to input one in result set auto obj = @@ -3410,6 +3492,40 @@ TEST(crs, boundCRS_identify_db) { "NZGD2000 to WGS 84 (1)"); EXPECT_EQ(res.front().second, 50); } + + { + // WKT has EPSG code but the definition doesn't match with the official + // one (namely linear units are different) + // https://github.com/OSGeo/gdal/issues/990 + // Also test that we can handle the synthetic Null geographic offset + // between NAD83 and WGS84 + auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT( + "PROJCS[\"NAD83 / Ohio North\",GEOGCS[\"NAD83\"," + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\"," + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]," + "TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]]," + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]]," + "UNIT[\"degree\",0.0174532925199433, AUTHORITY[\"EPSG\",\"9122\"]]," + "AUTHORITY[\"EPSG\",\"4269\"]]," + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"]," + "PARAMETER[\"standard_parallel_1\",41.7]," + "PARAMETER[\"standard_parallel_2\",40.43333333333333]," + "PARAMETER[\"latitude_of_origin\",39.66666666666666]," + "PARAMETER[\"central_meridian\",-82.5]," + "PARAMETER[\"false_easting\",1968503.937007874]," + "PARAMETER[\"false_northing\",0]," + "UNIT[\"International Foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]]," + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32122\"]" + "]"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().second, 25); + auto wkt = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()); + EXPECT_TRUE(wkt.find("32122") != std::string::npos) << wkt; + } } // --------------------------------------------------------------------------- -- cgit v1.2.3 From 9577f8e018a7fd3fe57fc934259f441cbf22cb1d Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 2 Dec 2018 22:27:51 +0100 Subject: identify: improve GeographicCRS identification when the CRS name has no match --- src/crs.cpp | 4 +++- test/unit/test_crs.cpp | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/crs.cpp b/src/crs.cpp index 21df43b4..699af09a 100644 --- a/src/crs.cpp +++ b/src/crs.cpp @@ -1329,6 +1329,7 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { } } } else { + bool gotAbove25Pct = false; for (int ipass = 0; ipass < 2; ipass++) { const bool approximateMatch = ipass == 1; auto objects = authorityFactory->createObjectsFromName( @@ -1348,6 +1349,7 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { metadata::Identifier::isEquivalentName( thisName.c_str(), crs->nameStr().c_str()); res.emplace_back(crsNN, eqName ? 90 : 70); + gotAbove25Pct = true; } else { res.emplace_back(crsNN, 25); } @@ -1356,7 +1358,7 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { break; } } - if (res.empty() && thisDatum) { + if (!gotAbove25Pct && thisDatum) { if (!thisDatum->identifiers().empty()) { searchByDatum(); } else { diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp index 91ed145c..74f85d50 100644 --- a/test/unit/test_crs.cpp +++ b/test/unit/test_crs.cpp @@ -1974,6 +1974,28 @@ TEST(crs, projectedCRS_identify_db) { EXPECT_EQ(res.front().first->getEPSGCode(), 3044); EXPECT_EQ(res.front().second, 100); } + { + // Identify from a WKT ESRI with bad PROJCS and GEOGCS names. + auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT( + "PROJCS[\"Lambert Conformal Conic\",GEOGCS[\"grs80\"," + "DATUM[\"D_North_American_1983\"," + "SPHEROID[\"Geodetic_Reference_System_1980\"," + "6378137,298.257222101]],PRIMEM[\"Greenwich\",0]," + "UNIT[\"Degree\",0.017453292519943295]]," + "PROJECTION[\"Lambert_Conformal_Conic\"]," + "PARAMETER[\"standard_parallel_1\",34.33333333333334]," + "PARAMETER[\"standard_parallel_2\",36.16666666666666]," + "PARAMETER[\"latitude_of_origin\",33.75]," + "PARAMETER[\"central_meridian\",-79]," + "PARAMETER[\"false_easting\",609601.22]," + "PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 32119); + EXPECT_EQ(res.front().second, 70); + } { // No equivalent CRS to input one in result set auto obj = -- cgit v1.2.3 From 98ebc4687a1bc601589ff9b1769008c5c4a891d2 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 2 Dec 2018 23:05:02 +0100 Subject: importFromWKT: add another alias of WebMercator --- src/io.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/io.cpp b/src/io.cpp index f95a8079..bfba9ed6 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -3333,10 +3333,14 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { } const std::string projectedCRSName = stripQuotes(nodeP->children()[0]); - // Particular case for corrupted ESRI WKT generated by older GDAL versions + // WGS_84_Pseudo_Mercator: Particular case for corrupted ESRI WKT generated + // by older GDAL versions // https://trac.osgeo.org/gdal/changeset/30732 + // WGS_1984_Web_Mercator: deprecated ESRI:102113 if (metadata::Identifier::isEquivalentName(projectedCRSName.c_str(), - "WGS_84_Pseudo_Mercator")) { + "WGS_84_Pseudo_Mercator") || + metadata::Identifier::isEquivalentName(projectedCRSName.c_str(), + "WGS_1984_Web_Mercator")) { return createPseudoMercator(props); } -- cgit v1.2.3 From 2d8f295354ce20f2d375a985ff48fd5e7f8b90ca Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 3 Dec 2018 13:51:41 +0100 Subject: WKTParser: fix to avoid creation of empty nodes --- src/io.cpp | 4 ++++ test/unit/test_io.cpp | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/io.cpp b/src/io.cpp index bfba9ed6..e8dbd147 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -1038,6 +1038,10 @@ WKTNodeNNPtr WKTNode::createFrom(const std::string &wkt, size_t indexStart, assert(indexEndChild > i); i = indexEndChild; i = skipSpace(wkt, i); + if (i < wkt.size() && wkt[i] == ',') { + ++i; + i = skipSpace(wkt, i); + } } if (i == wkt.size() || (wkt[i] != ']' && wkt[i] != ')')) { throw ParsingException("missing ]"); diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 6a2de028..606d57a3 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -119,6 +119,11 @@ TEST(io, wkt_parsing) { str = "A[" + str + "]"; } EXPECT_THROW(WKTNode::createFrom(str), ParsingException); + + { + auto wkt = "A[\"a\",B[\"b\",C[\"c\"]],D[\"d\"]]"; + EXPECT_EQ(WKTNode::createFrom(wkt)->toString(), wkt); + } } // --------------------------------------------------------------------------- -- cgit v1.2.3 From ba111ac8323ff194039a06db87d1fb17ed8175b3 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 3 Dec 2018 16:44:21 +0100 Subject: Export to ESRI WKT: make it use verbatim WKT definition from the database when possible --- include/proj/io.hpp | 19 +++++--- src/crs.cpp | 77 ++++++++++++++++++++++++------ src/factory.cpp | 28 +++++++++++ src/io.cpp | 115 +++++++++++++++++++++++++-------------------- test/unit/test_crs.cpp | 54 +++++++++++++++++++++ test/unit/test_factory.cpp | 7 +++ 6 files changed, 229 insertions(+), 71 deletions(-) diff --git a/include/proj/io.hpp b/include/proj/io.hpp index 5fb12a76..ba7e9f53 100644 --- a/include/proj/io.hpp +++ b/include/proj/io.hpp @@ -134,6 +134,14 @@ using DatabaseContextNNPtr = util::nn; // --------------------------------------------------------------------------- +class WKTNode; +/** Unique pointer of WKTNode. */ +using WKTNodePtr = std::unique_ptr; +/** Non-null unique pointer of WKTNode. */ +using WKTNodeNNPtr = util::nn; + +// --------------------------------------------------------------------------- + class WKTFormatter; /** WKTFormatter unique pointer. */ using WKTFormatterPtr = std::unique_ptr; @@ -308,6 +316,8 @@ class PROJ_GCC_DLL WKTFormatter { PROJ_INTERNAL const DatabaseContextPtr &databaseContext() const; + PROJ_INTERNAL void ingestWKTNode(const WKTNodeNNPtr &node); + //! @endcond protected: @@ -555,12 +565,6 @@ class PROJ_GCC_DLL IPROJStringExportable { // --------------------------------------------------------------------------- -class WKTNode; -/** Unique pointer of WKTNode. */ -using WKTNodePtr = std::unique_ptr; -/** Non-null unique pointer of WKTNode. */ -using WKTNodeNNPtr = util::nn; - /** \brief Node in the tree-splitted WKT representation. */ class PROJ_GCC_DLL WKTNode { @@ -724,6 +728,9 @@ class PROJ_GCC_DLL DatabaseContext { PROJ_INTERNAL bool isKnownName(const std::string &name, const std::string &tableName) const; + PROJ_INTERNAL std::string getTextDefinition(const std::string &tableName, + const std::string &authName, + const std::string &code) const; //! @endcond protected: diff --git a/src/crs.cpp b/src/crs.cpp index 699af09a..31682644 100644 --- a/src/crs.cpp +++ b/src/crs.cpp @@ -2415,6 +2415,63 @@ const cs::CartesianCSNNPtr &ProjectedCRS::coordinateSystem() PROJ_CONST_DEFN { void ProjectedCRS::_exportToWKT(io::WKTFormatter *formatter) const { const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + const auto &l_identifiers = identifiers(); + // Try to perfectly round-trip ESRI projectedCRS if the current object + // perfectly matches the database definition + const auto &dbContext = formatter->databaseContext(); + + auto l_name = nameStr(); + std::string l_alias; + if (formatter->useESRIDialect() && dbContext) { + l_alias = dbContext->getAliasFromOfficialName(l_name, "projected_crs", + "ESRI"); + } + + if (!isWKT2 && formatter->useESRIDialect() && !l_identifiers.empty() && + *(l_identifiers[0]->codeSpace()) == "ESRI" && dbContext) { + try { + const auto definition = dbContext->getTextDefinition( + "projected_crs", "ESRI", l_identifiers[0]->code()); + if (starts_with(definition, "PROJCS")) { + auto crsFromFromDef = io::WKTParser() + .attachDatabaseContext(dbContext) + .createFromWKT(definition); + if (_isEquivalentTo( + dynamic_cast(crsFromFromDef.get()), + util::IComparable::Criterion::EQUIVALENT)) { + formatter->ingestWKTNode( + io::WKTNode::createFrom(definition)); + return; + } + } + } catch (const std::exception &) { + } + } else if (!isWKT2 && formatter->useESRIDialect() && !l_alias.empty()) { + try { + auto res = + io::AuthorityFactory::create(NN_NO_CHECK(dbContext), "ESRI") + ->createObjectsFromName( + l_alias, + {io::AuthorityFactory::ObjectType::PROJECTED_CRS}, + false); + if (res.size() == 1) { + const auto definition = dbContext->getTextDefinition( + "projected_crs", "ESRI", + res.front()->identifiers()[0]->code()); + if (starts_with(definition, "PROJCS")) { + if (_isEquivalentTo( + dynamic_cast(res.front().get()), + util::IComparable::Criterion::EQUIVALENT)) { + formatter->ingestWKTNode( + io::WKTNode::createFrom(definition)); + return; + } + } + } + } catch (const std::exception &) { + } + } + const auto &l_coordinateSystem = d->coordinateSystem(); const auto &axisList = l_coordinateSystem->axisList(); @@ -2433,7 +2490,7 @@ void ProjectedCRS::_exportToWKT(io::WKTFormatter *formatter) const { if (!isWKT2 && !formatter->useESRIDialect() && starts_with(nameStr(), "Popular Visualisation CRS / Mercator")) { - formatter->startNode(io::WKTConstants::PROJCS, !identifiers().empty()); + formatter->startNode(io::WKTConstants::PROJCS, !l_identifiers.empty()); formatter->addQuotedString(nameStr()); formatter->setTOWGS84Parameters({0, 0, 0, 0, 0, 0, 0}); baseCRS()->_exportToWKT(formatter); @@ -2473,21 +2530,13 @@ void ProjectedCRS::_exportToWKT(io::WKTFormatter *formatter) const { formatter->startNode(isWKT2 ? io::WKTConstants::PROJCRS : io::WKTConstants::PROJCS, - !identifiers().empty()); - auto l_name = nameStr(); + !l_identifiers.empty()); + if (formatter->useESRIDialect()) { - bool aliasFound = false; - const auto &dbContext = formatter->databaseContext(); - if (dbContext) { - auto l_alias = dbContext->getAliasFromOfficialName( - l_name, "projected_crs", "ESRI"); - if (!l_alias.empty()) { - l_name = l_alias; - aliasFound = true; - } - } - if (!aliasFound) { + if (l_alias.empty()) { l_name = io::WKTFormatter::morphNameToESRI(l_name); + } else { + l_name = l_alias; } } if (!isWKT2 && !formatter->useESRIDialect() && isDeprecated()) { diff --git a/src/factory.cpp b/src/factory.cpp index f58b66a0..91d0c478 100644 --- a/src/factory.cpp +++ b/src/factory.cpp @@ -852,6 +852,29 @@ DatabaseContext::getAliasFromOfficialName(const std::string &officialName, return res[0][0]; } +// --------------------------------------------------------------------------- + +/** \brief Return the 'text_definition' column of a table for an object + * + * @param tableName Table name/category. + * @param authName Authority name of the object. + * @param code Code of the object + * @return Text definition (or empty) + * @throw FactoryException + */ +std::string DatabaseContext::getTextDefinition(const std::string &tableName, + const std::string &authName, + const std::string &code) const { + std::string sql("SELECT text_definition FROM \""); + sql += replaceAll(tableName, "\"", "\"\""); + sql += "\" WHERE auth_name = ? AND code = ?"; + auto res = d->run(sql, {authName, code}); + if (res.empty()) { + return std::string(); + } + return res[0][0]; +} + //! @endcond // --------------------------------------------------------------------------- @@ -3807,6 +3830,11 @@ AuthorityFactory::createObjectsFromName( break; } } + if (res.empty() && !deprecated) { + return createObjectsFromName(searchedName + " (deprecated)", + allowedObjectTypes, approximateMatch, + limitResultCount); + } auto sortLambda = [](const common::IdentifiedObjectNNPtr &a, const common::IdentifiedObjectNNPtr &b) { diff --git a/src/io.cpp b/src/io.cpp index e8dbd147..11e4748e 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -373,7 +373,7 @@ void WKTFormatter::startNode(const std::string &keyword, bool hasId) { if (!d->stackHasChild_.empty()) { d->startNewChild(); } else if (!d->result_.empty()) { - d->result_ += ","; + d->result_ += ','; if (d->params_.multiLine_ && !keyword.empty()) { d->addNewLine(); } @@ -390,7 +390,7 @@ void WKTFormatter::startNode(const std::string &keyword, bool hasId) { if (!keyword.empty()) { d->result_ += keyword; - d->result_ += "["; + d->result_ += '['; } d->indentLevel_++; d->stackHasChild_.push_back(false); @@ -428,7 +428,7 @@ void WKTFormatter::endNode() { d->stackEmptyKeyword_.pop_back(); d->stackHasChild_.pop_back(); if (!emptyKeyword) - d->result_ += "]"; + d->result_ += ']'; } // --------------------------------------------------------------------------- @@ -443,7 +443,7 @@ WKTFormatter &WKTFormatter::simulCurNodeHasId() { void WKTFormatter::Private::startNewChild() { assert(!stackHasChild_.empty()); if (stackHasChild_.back()) { - result_ += ","; + result_ += ','; } stackHasChild_.back() = true; } @@ -456,9 +456,9 @@ void WKTFormatter::addQuotedString(const char *str) { void WKTFormatter::addQuotedString(const std::string &str) { d->startNewChild(); - d->result_ += "\""; + d->result_ += '"'; d->result_ += replaceAll(str, "\"", "\"\""); - d->result_ += "\""; + d->result_ += '"'; } // --------------------------------------------------------------------------- @@ -719,6 +719,20 @@ std::string WKTFormatter::morphNameToESRI(const std::string &name) { return ret; } +// --------------------------------------------------------------------------- + +void WKTFormatter::ingestWKTNode(const WKTNodeNNPtr &node) { + startNode(node->value(), true); + for (const auto &child : node->children()) { + if (!child->children().empty()) { + ingestWKTNode(child); + } else { + add(child->value()); + } + } + endNode(); +} + #ifdef unused // --------------------------------------------------------------------------- @@ -991,7 +1005,7 @@ WKTNodeNNPtr WKTNode::createFrom(const std::string &wkt, size_t indexStart, if (!inString) { inString = true; closingStringMarker = endPrintedQuote; - value += "\""; + value += '"'; i += 2; continue; } @@ -1000,7 +1014,7 @@ WKTNodeNNPtr WKTNode::createFrom(const std::string &wkt, size_t indexStart, wkt.substr(i, 3) == endPrintedQuote) { inString = false; closingStringMarker.clear(); - value += "\""; + value += '"'; i += 2; continue; } @@ -1069,7 +1083,7 @@ static std::string escapeIfQuotedString(const std::string &str) { if (str.size() > 2 && str[0] == '"' && str.back() == '"') { std::string res("\""); res += replaceAll(str.substr(1, str.size() - 2), "\"", "\"\""); - res += "\""; + res += '"'; return res; } else { return str; @@ -1088,7 +1102,7 @@ std::string WKTNode::toString() const { bool first = true; for (auto &child : d->children_) { if (!first) { - str += ","; + str += ','; } first = false; str += child->toString(); @@ -3308,11 +3322,10 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard( // --------------------------------------------------------------------------- -static ProjectedCRSNNPtr createPseudoMercator(PropertyMap &props) { +static ProjectedCRSNNPtr createPseudoMercator(const PropertyMap &props) { auto conversion = Conversion::createPopularVisualisationPseudoMercator( PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0), Angle(0), Length(0), Length(0)); - props.set(IdentifiedObject::NAME_KEY, "WGS 84 / Pseudo-Mercator"); return ProjectedCRS::create( props, GeographicCRS::EPSG_4326, conversion, CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); @@ -3330,33 +3343,59 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { ThrowMissing(WKTConstants::CONVERSION); } + auto &baseGeodCRSNode = + nodeP->lookForChild(WKTConstants::BASEGEODCRS, + WKTConstants::BASEGEOGCRS, WKTConstants::GEOGCS); + if (isNull(baseGeodCRSNode)) { + throw ParsingException( + "Missing BASEGEODCRS / BASEGEOGCRS / GEOGCS node"); + } + auto baseGeodCRS = buildGeodeticCRS(baseGeodCRSNode); + auto props = buildProperties(node); + const std::string projCRSName = stripQuotes(nodeP->children()[0]); + if (esriStyle_ && dbContext_) { + // It is likely that the ESRI definition of EPSG:32661 (UPS North) & + // EPSG:32761 (UPS South) uses the easting-northing order, instead + // of the EPSG northing-easting order + // so don't substitue names to avoid confusion. + if (projCRSName == "UPS_North") { + props.set(IdentifiedObject::NAME_KEY, "WGS 84 / UPS North (E,N)"); + } else if (projCRSName == "UPS_South") { + props.set(IdentifiedObject::NAME_KEY, "WGS 84 / UPS South (E,N)"); + } else { + std::string outTableName; + std::string authNameFromAlias; + std::string codeFromAlias; + auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_), + std::string()); + auto officialName = authFactory->getOfficialNameFromAlias( + projCRSName, "projected_crs", "ESRI", outTableName, + authNameFromAlias, codeFromAlias); + if (!officialName.empty()) { + props.set(IdentifiedObject::NAME_KEY, officialName); + } + } + } + if (isNull(conversionNode) && hasWebMercPROJ4String(node, projectionNode)) { + toWGS84Parameters_.clear(); return createPseudoMercator(props); } - const std::string projectedCRSName = stripQuotes(nodeP->children()[0]); // WGS_84_Pseudo_Mercator: Particular case for corrupted ESRI WKT generated // by older GDAL versions // https://trac.osgeo.org/gdal/changeset/30732 // WGS_1984_Web_Mercator: deprecated ESRI:102113 - if (metadata::Identifier::isEquivalentName(projectedCRSName.c_str(), + if (metadata::Identifier::isEquivalentName(projCRSName.c_str(), "WGS_84_Pseudo_Mercator") || - metadata::Identifier::isEquivalentName(projectedCRSName.c_str(), + metadata::Identifier::isEquivalentName(projCRSName.c_str(), "WGS_1984_Web_Mercator")) { + toWGS84Parameters_.clear(); return createPseudoMercator(props); } - auto &baseGeodCRSNode = - nodeP->lookForChild(WKTConstants::BASEGEODCRS, - WKTConstants::BASEGEOGCRS, WKTConstants::GEOGCS); - if (isNull(baseGeodCRSNode)) { - throw ParsingException( - "Missing BASEGEODCRS / BASEGEOGCRS / GEOGCS node"); - } - auto baseGeodCRS = buildGeodeticCRS(baseGeodCRSNode); - auto linearUnit = buildUnitInSubNode(node, UnitOfMeasure::Type::LINEAR); auto angularUnit = baseGeodCRS->coordinateSystem()->axisList()[0]->unit(); @@ -3445,32 +3484,6 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { ThrowNotExpectedCSType("Cartesian"); } - if (esriStyle_ && dbContext_) { - auto projCRSName = stripQuotes(nodeP->children()[0]); - - // It is likely that the ESRI definition of EPSG:32661 (UPS North) & - // EPSG:32761 (UPS South) uses the easting-northing order, instead - // of the EPSG northing-easting order - // so don't substitue names to avoid confusion. - if (projCRSName == "UPS_North") { - props.set(IdentifiedObject::NAME_KEY, "WGS 84 / UPS North (E,N)"); - } else if (projCRSName == "UPS_South") { - props.set(IdentifiedObject::NAME_KEY, "WGS 84 / UPS South (E,N)"); - } else { - std::string outTableName; - std::string authNameFromAlias; - std::string codeFromAlias; - auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_), - std::string()); - auto officialName = authFactory->getOfficialNameFromAlias( - projCRSName, "projected_crs", "ESRI", outTableName, - authNameFromAlias, codeFromAlias); - if (!officialName.empty()) { - props.set(IdentifiedObject::NAME_KEY, officialName); - } - } - } - addExtensionProj4ToProp(nodeP, props); return ProjectedCRS::create(props, baseGeodCRS, conversion, @@ -5274,7 +5287,7 @@ void PROJStringFormatter::addParam(const char *paramName, std::string paramValue; for (size_t i = 0; i < vals.size(); ++i) { if (i > 0) { - paramValue += ","; + paramValue += ','; } paramValue += formatToString(vals[i]); } diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp index 74f85d50..3f044de0 100644 --- a/test/unit/test_crs.cpp +++ b/test/unit/test_crs.cpp @@ -1685,6 +1685,60 @@ TEST(crs, projectedCRS_as_WKT1_ESRI) { // --------------------------------------------------------------------------- +TEST(crs, projectedCRS_with_ESRI_code_as_WKT1_ESRI) { + auto dbContext = DatabaseContext::create(); + auto crs = AuthorityFactory::create(dbContext, "ESRI") + ->createProjectedCRS("102113"); + + // Comes literally from the text_definition column of + // projected_crs table + auto esri_wkt = + "PROJCS[\"WGS_1984_Web_Mercator\"," + "GEOGCS[\"GCS_WGS_1984_Major_Auxiliary_Sphere\"," + "DATUM[\"D_WGS_1984_Major_Auxiliary_Sphere\"," + "SPHEROID[\"WGS_1984_Major_Auxiliary_Sphere\",6378137.0,0.0]]," + "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Mercator\"],PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Standard_Parallel_1\",0.0],UNIT[\"Meter\",1.0]]"; + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, dbContext) + .get()), + esri_wkt); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_from_WKT1_ESRI_as_WKT1_ESRI) { + auto dbContext = DatabaseContext::create(); + // Comes literally from the text_definition column of + // projected_crs table + auto esri_wkt = + "PROJCS[\"WGS_1984_Web_Mercator\"," + "GEOGCS[\"GCS_WGS_1984_Major_Auxiliary_Sphere\"," + "DATUM[\"D_WGS_1984_Major_Auxiliary_Sphere\"," + "SPHEROID[\"WGS_1984_Major_Auxiliary_Sphere\",6378137.0,0.0]]," + "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Mercator\"],PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Standard_Parallel_1\",0.0],UNIT[\"Meter\",1.0]]"; + + auto obj = + WKTParser().attachDatabaseContext(dbContext).createFromWKT(esri_wkt); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, dbContext) + .get()), + esri_wkt); +} + +// --------------------------------------------------------------------------- + TEST(crs, projectedCRS_as_PROJ_string) { auto crs = createProjected(); EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index 20869d91..7cdb0b40 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -2703,6 +2703,13 @@ TEST(factory, createObjectsFromName) { .size(), 1); + // Deprecated object (but without explicit deprecated) + EXPECT_EQ( + factoryEPSG + ->createObjectsFromName("NAD27(CGQ77) / SCoPQ zone 2", {}, false, 2) + .size(), + 1); + const auto types = std::vector{ AuthorityFactory::ObjectType::PRIME_MERIDIAN, AuthorityFactory::ObjectType::ELLIPSOID, -- cgit v1.2.3