diff --git a/Changelog b/Changelog index 568d2f9ac..43c49ee73 100644 --- a/Changelog +++ b/Changelog @@ -1,4 +1,6 @@ version 1.0.3 (not yet released) + * update pyproj source from pyproj.googlecode.com. Includes + new more accurate code for geodesic computations. * bug fixes for celestial projections, and non-standard sphere radii (https://github.com/matplotlib/basemap/pull/6). * fix bug in drawparallels that results in 'KeyError' when drawing diff --git a/MANIFEST.in b/MANIFEST.in index 57560b6e9..1e07ffc15 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -11,6 +11,7 @@ include Changelog include setup.py include nad2bin.c include src/* +include geodesic/* include examples/allskymap.py include examples/allskymap_cr_example.py include examples/plothighsandlows.py diff --git a/geodesic/COPYING b/geodesic/COPYING new file mode 100644 index 000000000..83055c184 --- /dev/null +++ b/geodesic/COPYING @@ -0,0 +1,20 @@ +The following is best known as the MIT copying permission. + +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. diff --git a/src/_geod.c b/geodesic/_geod.c similarity index 57% rename from src/_geod.c rename to geodesic/_geod.c index d9533caa0..7ff0342f4 100644 --- a/src/_geod.c +++ b/geodesic/_geod.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.15.1 on Thu Oct 20 15:46:18 2011 */ +/* Generated by Cython 0.15.1 on Tue Dec 20 10:52:25 2011 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -232,10 +232,7 @@ #include #define __PYX_HAVE___geod #define __PYX_HAVE_API___geod -#include "stdlib.h" -#include "math.h" -#include "geodesic.h" -#include "proj_api.h" +#include "project.h" #ifdef _OPENMP #include #endif /* _OPENMP */ @@ -319,38 +316,24 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "_geod.pyx", - "_pyproj.pxi", }; /*--- Type declarations ---*/ struct __pyx_obj_5_geod_Geod; -struct __pyx_opt_args_5_geod__strencode; -/* "_geod.pyx":170 - * return lons, lats - * - * cdef _strencode(pystr,encoding='ascii'): # <<<<<<<<<<<<<< - * # encode a string into bytes. If already bytes, do nothing. - * try: - */ -struct __pyx_opt_args_5_geod__strencode { - int __pyx_n; - PyObject *encoding; -}; - -/* "_geod.pyx":5 - * include "_pyproj.pxi" +/* "_geod.pyx":41 + * void proj_in_inv(PROJ_LINE * A) * * cdef class Geod: # <<<<<<<<<<<<<< - * cdef GEODESIC_T geodesic_t - * cdef public object geodstring + * cdef PROJ_LINE arc + * cdef PROJ_ELLIPS ellps */ struct __pyx_obj_5_geod_Geod { PyObject_HEAD - GEODESIC_T geodesic_t; - PyObject *geodstring; - PyObject *proj_version; - char *geodinitstring; + PROJ_LINE arc; + PROJ_ELLIPS ellps; + PROJ_PT_LPH pt1; + PROJ_PT_LPH pt2; }; @@ -396,24 +379,19 @@ struct __pyx_obj_5_geod_Geod { static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/ + static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name); /*proto*/ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name); /*proto*/ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/ - static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/ -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ - -static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ -static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/ static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); @@ -457,18 +435,21 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ /* Module declarations from '_geod' */ static PyTypeObject *__pyx_ptype_5_geod_Geod = 0; -static PyObject *__pyx_f_5_geod__strencode(PyObject *, struct __pyx_opt_args_5_geod__strencode *__pyx_optional_args); /*proto*/ +static double __pyx_v_5_geod__dg2rad; +static double __pyx_v_5_geod__rad2dg; #define __Pyx_MODULE_NAME "_geod" int __pyx_module_is_main__geod = 0; /* Implementation of '_geod' */ static PyObject *__pyx_builtin_RuntimeError; -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_AttributeError; -static char __pyx_k_2[] = "Buffer lengths not the same"; -static char __pyx_k_4[] = "undefined inverse geodesic (may be an antipodal point)"; -static char __pyx_k_10[] = "1.8.9"; +static char __pyx_k_1[] = "+a=%s +f=%s +es=%s"; +static char __pyx_k_3[] = "Buffer lengths not the same"; +static char __pyx_k_7[] = "undefined inverse geodesic (may be an antipodal point)"; +static char __pyx_k__a[] = "a"; +static char __pyx_k__f[] = "f"; +static char __pyx_k__v[] = "v"; static char __pyx_k__az[] = "az"; +static char __pyx_k__es[] = "es"; static char __pyx_k__dist[] = "dist"; static char __pyx_k__lat1[] = "lat1"; static char __pyx_k__lat2[] = "lat2"; @@ -478,44 +459,32 @@ static char __pyx_k__lon2[] = "lon2"; static char __pyx_k__lons[] = "lons"; static char __pyx_k__math[] = "math"; static char __pyx_k__npts[] = "npts"; -static char __pyx_k__ascii[] = "ascii"; static char __pyx_k__lats1[] = "lats1"; static char __pyx_k__lats2[] = "lats2"; static char __pyx_k__lons1[] = "lons1"; static char __pyx_k__lons2[] = "lons2"; -static char __pyx_k__encode[] = "encode"; -static char __pyx_k___dg2rad[] = "_dg2rad"; -static char __pyx_k___rad2dg[] = "_rad2dg"; +static char __pyx_k__sphere[] = "sphere"; static char __pyx_k__degrees[] = "degrees"; static char __pyx_k__radians[] = "radians"; static char __pyx_k____main__[] = "__main__"; static char __pyx_k____test__[] = "__test__"; static char __pyx_k____class__[] = "__class__"; -static char __pyx_k__ValueError[] = "ValueError"; -static char __pyx_k__geodstring[] = "geodstring"; -static char __pyx_k____version__[] = "__version__"; static char __pyx_k___doublesize[] = "_doublesize"; static char __pyx_k__RuntimeError[] = "RuntimeError"; -static char __pyx_k__AttributeError[] = "AttributeError"; -static PyObject *__pyx_kp_s_10; -static PyObject *__pyx_kp_s_2; -static PyObject *__pyx_kp_s_4; -static PyObject *__pyx_n_s__AttributeError; +static PyObject *__pyx_kp_s_1; +static PyObject *__pyx_kp_s_3; +static PyObject *__pyx_kp_s_7; static PyObject *__pyx_n_s__RuntimeError; -static PyObject *__pyx_n_s__ValueError; static PyObject *__pyx_n_s____class__; static PyObject *__pyx_n_s____main__; static PyObject *__pyx_n_s____test__; -static PyObject *__pyx_n_s____version__; -static PyObject *__pyx_n_s___dg2rad; static PyObject *__pyx_n_s___doublesize; -static PyObject *__pyx_n_s___rad2dg; -static PyObject *__pyx_n_s__ascii; +static PyObject *__pyx_n_s__a; static PyObject *__pyx_n_s__az; static PyObject *__pyx_n_s__degrees; static PyObject *__pyx_n_s__dist; -static PyObject *__pyx_n_s__encode; -static PyObject *__pyx_n_s__geodstring; +static PyObject *__pyx_n_s__es; +static PyObject *__pyx_n_s__f; static PyObject *__pyx_n_s__lat1; static PyObject *__pyx_n_s__lat2; static PyObject *__pyx_n_s__lats; @@ -529,43 +498,46 @@ static PyObject *__pyx_n_s__lons2; static PyObject *__pyx_n_s__math; static PyObject *__pyx_n_s__npts; static PyObject *__pyx_n_s__radians; -static PyObject *__pyx_k_1; -static PyObject *__pyx_k_6; -static PyObject *__pyx_k_9; -static PyObject *__pyx_k_tuple_3; -static PyObject *__pyx_k_tuple_5; -static PyObject *__pyx_k_tuple_7; -static PyObject *__pyx_k_tuple_8; - -/* "_geod.pyx":11 - * cdef char *geodinitstring +static PyObject *__pyx_n_s__sphere; +static PyObject *__pyx_n_s__v; +static PyObject *__pyx_k_2; +static PyObject *__pyx_k_5; +static PyObject *__pyx_k_8; +static PyObject *__pyx_k_tuple_4; +static PyObject *__pyx_k_tuple_6; + +/* "_geod.pyx":46 + * cdef PROJ_PT_LPH pt1, pt2 * - * def __cinit__(self, geodstring): # <<<<<<<<<<<<<< - * cdef GEODESIC_T GEOD_T - * # setup geod initialization string. + * def __cinit__(self, object a, object f, object es, object sphere): # <<<<<<<<<<<<<< + * self.sphere = sphere + * self.ellps.a = a */ static int __pyx_pf_5_geod_4Geod___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pf_5_geod_4Geod___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_geodstring = 0; - GEODESIC_T __pyx_v_GEOD_T; - PyObject *__pyx_v_bytestr = NULL; + PyObject *__pyx_v_a = 0; + PyObject *__pyx_v_f = 0; + PyObject *__pyx_v_es = 0; + PyObject *__pyx_v_sphere = 0; int __pyx_r; __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - char *__pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; + double __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__geodstring,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__a,&__pyx_n_s__f,&__pyx_n_s__es,&__pyx_n_s__sphere,0}; __Pyx_RefNannySetupContext("__cinit__"); { - PyObject* values[1] = {0}; + PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; switch (PyTuple_GET_SIZE(__pyx_args)) { + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; @@ -573,181 +545,207 @@ static int __pyx_pf_5_geod_4Geod___cinit__(PyObject *__pyx_v_self, PyObject *__p kw_args = PyDict_Size(__pyx_kwds); switch (PyTuple_GET_SIZE(__pyx_args)) { case 0: - values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__geodstring); + values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__a); if (likely(values[0])) kw_args--; else goto __pyx_L5_argtuple_error; + case 1: + values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f); + if (likely(values[1])) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + } + case 2: + values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__es); + if (likely(values[2])) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + } + case 3: + values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sphere); + if (likely(values[3])) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { + } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } - __pyx_v_geodstring = values[0]; + __pyx_v_a = values[0]; + __pyx_v_f = values[1]; + __pyx_v_es = values[2]; + __pyx_v_sphere = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_geod.Geod.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - /* "_geod.pyx":14 - * cdef GEODESIC_T GEOD_T - * # setup geod initialization string. - * self.geodstring = geodstring # <<<<<<<<<<<<<< - * bytestr = _strencode(geodstring) - * self.geodinitstring = bytestr - */ - __Pyx_INCREF(__pyx_v_geodstring); - __Pyx_GIVEREF(__pyx_v_geodstring); - __Pyx_GOTREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - __Pyx_DECREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring = __pyx_v_geodstring; - - /* "_geod.pyx":15 - * # setup geod initialization string. - * self.geodstring = geodstring - * bytestr = _strencode(geodstring) # <<<<<<<<<<<<<< - * self.geodinitstring = bytestr - * # initialize projection - */ - __pyx_t_1 = __pyx_f_5_geod__strencode(__pyx_v_geodstring, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_bytestr = __pyx_t_1; - __pyx_t_1 = 0; + /* "_geod.pyx":47 + * + * def __cinit__(self, object a, object f, object es, object sphere): + * self.sphere = sphere # <<<<<<<<<<<<<< + * self.ellps.a = a + * self.ellps.f = f + */ + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__sphere, __pyx_v_sphere) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "_geod.pyx":16 - * self.geodstring = geodstring - * bytestr = _strencode(geodstring) - * self.geodinitstring = bytestr # <<<<<<<<<<<<<< - * # initialize projection - * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] - */ - __pyx_t_2 = PyBytes_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodinitstring = __pyx_t_2; - - /* "_geod.pyx":18 - * self.geodinitstring = bytestr - * # initialize projection - * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] # <<<<<<<<<<<<<< - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) - */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t = (GEOD_init_plus(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodinitstring, (&__pyx_v_GEOD_T))[0]); - - /* "_geod.pyx":19 - * # initialize projection - * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] - * if pj_errno != 0: # <<<<<<<<<<<<<< - * raise RuntimeError(pj_strerrno(pj_errno)) - * self.proj_version = PJ_VERSION/100. - */ - __pyx_t_3 = (pj_errno != 0); - if (__pyx_t_3) { - - /* "_geod.pyx":20 - * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< - * self.proj_version = PJ_VERSION/100. + /* "_geod.pyx":48 + * def __cinit__(self, object a, object f, object es, object sphere): + * self.sphere = sphere + * self.ellps.a = a # <<<<<<<<<<<<<< + * self.ellps.f = f + * self.ellps.es = es + */ + __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->ellps.a = __pyx_t_1; + + /* "_geod.pyx":49 + * self.sphere = sphere + * self.ellps.a = a + * self.ellps.f = f # <<<<<<<<<<<<<< + * self.ellps.es = es + * self.ellps.one_es = 1.-es + */ + __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_f); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->ellps.f = __pyx_t_1; + + /* "_geod.pyx":50 + * self.ellps.a = a + * self.ellps.f = f + * self.ellps.es = es # <<<<<<<<<<<<<< + * self.ellps.one_es = 1.-es + * self.arc.E = &self.ellps + */ + __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_es); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->ellps.es = __pyx_t_1; + + /* "_geod.pyx":51 + * self.ellps.f = f + * self.ellps.es = es + * self.ellps.one_es = 1.-es # <<<<<<<<<<<<<< + * self.arc.E = &self.ellps * */ - __pyx_t_1 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_1)); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_1)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); - __pyx_t_1 = 0; - __pyx_t_1 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L6; - } - __pyx_L6:; + __pyx_t_2 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_v_es); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->ellps.one_es = __pyx_t_1; - /* "_geod.pyx":21 - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) - * self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<< + /* "_geod.pyx":52 + * self.ellps.es = es + * self.ellps.one_es = 1.-es + * self.arc.E = &self.ellps # <<<<<<<<<<<<<< * * def __reduce__(self): */ - __pyx_t_1 = PyFloat_FromDouble((PJ_VERSION / 100.)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version); - __Pyx_DECREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version); - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version = __pyx_t_1; - __pyx_t_1 = 0; + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.E = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->ellps); __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_geod.Geod.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; - __Pyx_XDECREF(__pyx_v_bytestr); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "_geod.pyx":23 - * self.proj_version = PJ_VERSION/100. +/* "_geod.pyx":54 + * self.arc.E = &self.ellps * * def __reduce__(self): # <<<<<<<<<<<<<< * """special method that allows pyproj.Geod instance to be pickled""" - * return (self.__class__,(self.geodstring,)) + * initstring = '+a=%s +f=%s +es=%s' % (self.a, self.f, self.es) */ static PyObject *__pyx_pf_5_geod_4Geod_1__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static char __pyx_doc_5_geod_4Geod_1__reduce__[] = "special method that allows pyproj.Geod instance to be pickled"; static PyObject *__pyx_pf_5_geod_4Geod_1__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_v_initstring = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce__"); - /* "_geod.pyx":25 + /* "_geod.pyx":56 * def __reduce__(self): * """special method that allows pyproj.Geod instance to be pickled""" - * return (self.__class__,(self.geodstring,)) # <<<<<<<<<<<<<< + * initstring = '+a=%s +f=%s +es=%s' % (self.a, self.f, self.es) # <<<<<<<<<<<<<< + * return (self.__class__,(initstring,)) * - * def _fwd(self, object lons, object lats, object az, object dist, radians=False): */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____class__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__a); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_INCREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - __Pyx_GIVEREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__f); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__es); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_t_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_r = ((PyObject *)__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_1), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; + __pyx_v_initstring = ((PyObject *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "_geod.pyx":57 + * """special method that allows pyproj.Geod instance to be pickled""" + * initstring = '+a=%s +f=%s +es=%s' % (self.a, self.f, self.es) + * return (self.__class__,(initstring,)) # <<<<<<<<<<<<<< + * + * def _fwd(self, lons, lats, az, dist, radians=False): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____class__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __Pyx_INCREF(__pyx_v_initstring); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_initstring); + __Pyx_GIVEREF(__pyx_v_initstring); + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_r = ((PyObject *)__pyx_t_2); + __pyx_t_2 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); @@ -756,24 +754,25 @@ static PyObject *__pyx_pf_5_geod_4Geod_1__reduce__(PyObject *__pyx_v_self, CYTHO __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_geod.Geod.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; + __Pyx_XDECREF(__pyx_v_initstring); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "_geod.pyx":27 - * return (self.__class__,(self.geodstring,)) +/* "_geod.pyx":59 + * return (self.__class__,(initstring,)) * - * def _fwd(self, object lons, object lats, object az, object dist, radians=False): # <<<<<<<<<<<<<< - * """ - * forward transformation - determine longitude, latitude and back azimuth + * def _fwd(self, lons, lats, az, dist, radians=False): # <<<<<<<<<<<<<< + * cdef Py_ssize_t buflenlons, buflenlats, buflenaz, buflend, ndim, i + * cdef double *lonsdata, *latsdata, *azdata, *distdata */ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5_geod_4Geod_2_fwd[] = "\n forward transformation - determine longitude, latitude and back azimuth \n of a terminus point given an initial point longitude and latitude, plus\n forward azimuth and distance.\n if radians=True, lons/lats are radians instead of degrees.\n "; static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_lons = 0; PyObject *__pyx_v_lats = 0; @@ -802,7 +801,6 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; Py_ssize_t __pyx_t_6; - double __pyx_t_7; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -810,7 +808,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ __Pyx_RefNannySetupContext("_fwd"); { PyObject* values[5] = {0,0,0,0,0}; - values[4] = __pyx_k_1; + values[4] = __pyx_k_2; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -832,19 +830,19 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lats); if (likely(values[1])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_fwd", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_fwd", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__az); if (likely(values[2])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_fwd", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_fwd", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dist); if (likely(values[3])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_fwd", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_fwd", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (kw_args > 0) { @@ -853,7 +851,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_fwd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_fwd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -874,15 +872,15 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_fwd", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_fwd", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_geod.Geod._fwd", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - /* "_geod.pyx":38 - * cdef void *londata, *latdata, *azdat, *distdat + /* "_geod.pyx":65 + * cdef int err * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0: # <<<<<<<<<<<<<< * raise RuntimeError @@ -891,7 +889,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lons, (&__pyx_v_londata), (&__pyx_v_buflenlons)) != 0); if (__pyx_t_1) { - /* "_geod.pyx":39 + /* "_geod.pyx":66 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -899,12 +897,12 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } __pyx_L6:; - /* "_geod.pyx":40 + /* "_geod.pyx":67 * if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: # <<<<<<<<<<<<<< @@ -914,7 +912,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lats, (&__pyx_v_latdata), (&__pyx_v_buflenlats)) != 0); if (__pyx_t_1) { - /* "_geod.pyx":41 + /* "_geod.pyx":68 * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -922,12 +920,12 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L7; } __pyx_L7:; - /* "_geod.pyx":42 + /* "_geod.pyx":69 * if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: # <<<<<<<<<<<<<< @@ -937,7 +935,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_az, (&__pyx_v_azdat), (&__pyx_v_buflenaz)) != 0); if (__pyx_t_1) { - /* "_geod.pyx":43 + /* "_geod.pyx":70 * raise RuntimeError * if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -945,12 +943,12 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L8; } __pyx_L8:; - /* "_geod.pyx":44 + /* "_geod.pyx":71 * if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0: # <<<<<<<<<<<<<< @@ -960,7 +958,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_dist, (&__pyx_v_distdat), (&__pyx_v_buflend)) != 0); if (__pyx_t_1) { - /* "_geod.pyx":45 + /* "_geod.pyx":72 * raise RuntimeError * if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -968,12 +966,12 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ * if not buflenlons == buflenlats == buflenaz == buflend: */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L9; } __pyx_L9:; - /* "_geod.pyx":47 + /* "_geod.pyx":74 * raise RuntimeError * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<< @@ -990,42 +988,42 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { - /* "_geod.pyx":48 + /* "_geod.pyx":75 * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenlons//_doublesize * lonsdata = londata */ - __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L10; } __pyx_L10:; - /* "_geod.pyx":49 + /* "_geod.pyx":76 * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenlons//_doublesize # <<<<<<<<<<<<<< * lonsdata = londata * latsdata = latdata */ - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_buflenlons); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_buflenlons); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_FloorDivide(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyNumber_FloorDivide(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_ndim = __pyx_t_6; - /* "_geod.pyx":50 + /* "_geod.pyx":77 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenlons//_doublesize * lonsdata = londata # <<<<<<<<<<<<<< @@ -1034,7 +1032,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_lonsdata = ((double *)__pyx_v_londata); - /* "_geod.pyx":51 + /* "_geod.pyx":78 * ndim = buflenlons//_doublesize * lonsdata = londata * latsdata = latdata # <<<<<<<<<<<<<< @@ -1043,7 +1041,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_latsdata = ((double *)__pyx_v_latdata); - /* "_geod.pyx":52 + /* "_geod.pyx":79 * lonsdata = londata * latsdata = latdata * azdata = azdat # <<<<<<<<<<<<<< @@ -1052,7 +1050,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_azdata = ((double *)__pyx_v_azdat); - /* "_geod.pyx":53 + /* "_geod.pyx":80 * latsdata = latdata * azdata = azdat * distdata = distdat # <<<<<<<<<<<<<< @@ -1061,343 +1059,279 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_distdata = ((double *)__pyx_v_distdat); - /* "_geod.pyx":54 + /* "_geod.pyx":81 * azdata = azdat * distdata = distdat * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< * if radians: - * self.geodesic_t.p1.v = lonsdata[i] + * self.pt1.lam = lonsdata[i] */ __pyx_t_6 = __pyx_v_ndim; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) { - /* "_geod.pyx":55 + /* "_geod.pyx":82 * distdata = distdat * for i from 0 <= i < ndim: * if radians: # <<<<<<<<<<<<<< - * self.geodesic_t.p1.v = lonsdata[i] - * self.geodesic_t.p1.u = latsdata[i] + * self.pt1.lam = lonsdata[i] + * self.pt1.phi = latsdata[i] */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_2) { - /* "_geod.pyx":56 + /* "_geod.pyx":83 * for i from 0 <= i < ndim: * if radians: - * self.geodesic_t.p1.v = lonsdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.p1.u = latsdata[i] - * self.geodesic_t.ALPHA12 = azdata[i] + * self.pt1.lam = lonsdata[i] # <<<<<<<<<<<<<< + * self.pt1.phi = latsdata[i] + * self.pt1.h = 0. */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = (__pyx_v_lonsdata[__pyx_v_i]); + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.lam = (__pyx_v_lonsdata[__pyx_v_i]); - /* "_geod.pyx":57 + /* "_geod.pyx":84 * if radians: - * self.geodesic_t.p1.v = lonsdata[i] - * self.geodesic_t.p1.u = latsdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.ALPHA12 = azdata[i] - * self.geodesic_t.DIST = distdata[i] - */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = (__pyx_v_latsdata[__pyx_v_i]); - - /* "_geod.pyx":58 - * self.geodesic_t.p1.v = lonsdata[i] - * self.geodesic_t.p1.u = latsdata[i] - * self.geodesic_t.ALPHA12 = azdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.DIST = distdata[i] + * self.pt1.lam = lonsdata[i] + * self.pt1.phi = latsdata[i] # <<<<<<<<<<<<<< + * self.pt1.h = 0. + * self.arc.pt1 = &self.pt1 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.phi = (__pyx_v_latsdata[__pyx_v_i]); + + /* "_geod.pyx":85 + * self.pt1.lam = lonsdata[i] + * self.pt1.phi = latsdata[i] + * self.pt1.h = 0. # <<<<<<<<<<<<<< + * self.arc.pt1 = &self.pt1 + * self.arc.az12 = azdata[i] + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.h = 0.; + + /* "_geod.pyx":86 + * self.pt1.phi = latsdata[i] + * self.pt1.h = 0. + * self.arc.pt1 = &self.pt1 # <<<<<<<<<<<<<< + * self.arc.az12 = azdata[i] + * self.arc.S = distdata[i] + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt1 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1); + + /* "_geod.pyx":87 + * self.pt1.h = 0. + * self.arc.pt1 = &self.pt1 + * self.arc.az12 = azdata[i] # <<<<<<<<<<<<<< + * self.arc.S = distdata[i] * else: */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12 = (__pyx_v_azdata[__pyx_v_i]); + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.az12 = (__pyx_v_azdata[__pyx_v_i]); - /* "_geod.pyx":59 - * self.geodesic_t.p1.u = latsdata[i] - * self.geodesic_t.ALPHA12 = azdata[i] - * self.geodesic_t.DIST = distdata[i] # <<<<<<<<<<<<<< + /* "_geod.pyx":88 + * self.arc.pt1 = &self.pt1 + * self.arc.az12 = azdata[i] + * self.arc.S = distdata[i] # <<<<<<<<<<<<<< * else: - * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] + * self.pt1.lam = _dg2rad*lonsdata[i] */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST = (__pyx_v_distdata[__pyx_v_i]); + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.S = (__pyx_v_distdata[__pyx_v_i]); goto __pyx_L13; } /*else*/ { - /* "_geod.pyx":61 - * self.geodesic_t.DIST = distdata[i] + /* "_geod.pyx":90 + * self.arc.S = distdata[i] * else: - * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.p1.u = _dg2rad*latsdata[i] - * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] + * self.pt1.lam = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< + * self.pt1.phi = _dg2rad*latsdata[i] + * self.pt1.h = 0. */ - __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_t_7; - - /* "_geod.pyx":62 + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.lam = (__pyx_v_5_geod__dg2rad * (__pyx_v_lonsdata[__pyx_v_i])); + + /* "_geod.pyx":91 * else: - * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] - * self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] - * self.geodesic_t.DIST = distdata[i] - */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_t_7; - - /* "_geod.pyx":63 - * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] - * self.geodesic_t.p1.u = _dg2rad*latsdata[i] - * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.DIST = distdata[i] - * geod_pre(&self.geodesic_t) - */ - __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_azdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12 = __pyx_t_7; - - /* "_geod.pyx":64 - * self.geodesic_t.p1.u = _dg2rad*latsdata[i] - * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] - * self.geodesic_t.DIST = distdata[i] # <<<<<<<<<<<<<< - * geod_pre(&self.geodesic_t) - * if pj_errno != 0: - */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST = (__pyx_v_distdata[__pyx_v_i]); + * self.pt1.lam = _dg2rad*lonsdata[i] + * self.pt1.phi = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< + * self.pt1.h = 0. + * self.arc.pt1 = &self.pt1 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.phi = (__pyx_v_5_geod__dg2rad * (__pyx_v_latsdata[__pyx_v_i])); + + /* "_geod.pyx":92 + * self.pt1.lam = _dg2rad*lonsdata[i] + * self.pt1.phi = _dg2rad*latsdata[i] + * self.pt1.h = 0. # <<<<<<<<<<<<<< + * self.arc.pt1 = &self.pt1 + * self.arc.az12 = _dg2rad*azdata[i] + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.h = 0.; + + /* "_geod.pyx":93 + * self.pt1.phi = _dg2rad*latsdata[i] + * self.pt1.h = 0. + * self.arc.pt1 = &self.pt1 # <<<<<<<<<<<<<< + * self.arc.az12 = _dg2rad*azdata[i] + * self.arc.S = distdata[i] + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt1 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1); + + /* "_geod.pyx":94 + * self.pt1.h = 0. + * self.arc.pt1 = &self.pt1 + * self.arc.az12 = _dg2rad*azdata[i] # <<<<<<<<<<<<<< + * self.arc.S = distdata[i] + * # Computes the location of the second point in the structure + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.az12 = (__pyx_v_5_geod__dg2rad * (__pyx_v_azdata[__pyx_v_i])); + + /* "_geod.pyx":95 + * self.arc.pt1 = &self.pt1 + * self.arc.az12 = _dg2rad*azdata[i] + * self.arc.S = distdata[i] # <<<<<<<<<<<<<< + * # Computes the location of the second point in the structure + * # based on the first point's location and the distance and + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.S = (__pyx_v_distdata[__pyx_v_i]); } __pyx_L13:; - /* "_geod.pyx":65 - * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] - * self.geodesic_t.DIST = distdata[i] - * geod_pre(&self.geodesic_t) # <<<<<<<<<<<<<< - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) - */ - geod_pre((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - - /* "_geod.pyx":66 - * self.geodesic_t.DIST = distdata[i] - * geod_pre(&self.geodesic_t) - * if pj_errno != 0: # <<<<<<<<<<<<<< - * raise RuntimeError(pj_strerrno(pj_errno)) - * geod_for(&self.geodesic_t) + /* "_geod.pyx":99 + * # based on the first point's location and the distance and + * # forward azumuth + * if self.sphere: # <<<<<<<<<<<<<< + * proj_sp_fwd(&self.arc) + * else: */ - __pyx_t_2 = (pj_errno != 0); + __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__sphere); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_2) { - /* "_geod.pyx":67 - * geod_pre(&self.geodesic_t) - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< - * geod_for(&self.geodesic_t) - * if pj_errno != 0: + /* "_geod.pyx":100 + * # forward azumuth + * if self.sphere: + * proj_sp_fwd(&self.arc) # <<<<<<<<<<<<<< + * else: + * proj_in_fwd(&self.arc) */ - __pyx_t_3 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); - __pyx_t_3 = 0; - __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + proj_sp_fwd((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc)); goto __pyx_L14; } - __pyx_L14:; - - /* "_geod.pyx":68 - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) - * geod_for(&self.geodesic_t) # <<<<<<<<<<<<<< - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) - */ - geod_for((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - - /* "_geod.pyx":69 - * raise RuntimeError(pj_strerrno(pj_errno)) - * geod_for(&self.geodesic_t) - * if pj_errno != 0: # <<<<<<<<<<<<<< - * raise RuntimeError(pj_strerrno(pj_errno)) - * # check for NaN. - */ - __pyx_t_2 = (pj_errno != 0); - if (__pyx_t_2) { - - /* "_geod.pyx":70 - * geod_for(&self.geodesic_t) - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< - * # check for NaN. - * if self.geodesic_t.ALPHA21 != self.geodesic_t.ALPHA21: - */ - __pyx_t_3 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); - __pyx_t_3 = 0; - __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L15; - } - __pyx_L15:; + /*else*/ { - /* "_geod.pyx":72 - * raise RuntimeError(pj_strerrno(pj_errno)) - * # check for NaN. - * if self.geodesic_t.ALPHA21 != self.geodesic_t.ALPHA21: # <<<<<<<<<<<<<< - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') + /* "_geod.pyx":102 + * proj_sp_fwd(&self.arc) + * else: + * proj_in_fwd(&self.arc) # <<<<<<<<<<<<<< * if radians: + * self.pt2.lam = self.arc.pt2.lam */ - __pyx_t_2 = (((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21 != ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21); - if (__pyx_t_2) { - - /* "_geod.pyx":73 - * # check for NaN. - * if self.geodesic_t.ALPHA21 != self.geodesic_t.ALPHA21: - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') # <<<<<<<<<<<<<< - * if radians: - * lonsdata[i] = self.geodesic_t.p2.v - */ - __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L16; + proj_in_fwd((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc)); } - __pyx_L16:; + __pyx_L14:; - /* "_geod.pyx":74 - * if self.geodesic_t.ALPHA21 != self.geodesic_t.ALPHA21: - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') + /* "_geod.pyx":103 + * else: + * proj_in_fwd(&self.arc) * if radians: # <<<<<<<<<<<<<< - * lonsdata[i] = self.geodesic_t.p2.v - * latsdata[i] = self.geodesic_t.p2.u + * self.pt2.lam = self.arc.pt2.lam + * self.pt2.phi = self.arc.pt2.phi */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_2) { - /* "_geod.pyx":75 - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') + /* "_geod.pyx":104 + * proj_in_fwd(&self.arc) * if radians: - * lonsdata[i] = self.geodesic_t.p2.v # <<<<<<<<<<<<<< - * latsdata[i] = self.geodesic_t.p2.u - * azdata[i] = self.geodesic_t.ALPHA21 + * self.pt2.lam = self.arc.pt2.lam # <<<<<<<<<<<<<< + * self.pt2.phi = self.arc.pt2.phi + * lonsdata[i] = self.pt2.lam */ - (__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v; + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt2->lam; - /* "_geod.pyx":76 + /* "_geod.pyx":105 * if radians: - * lonsdata[i] = self.geodesic_t.p2.v - * latsdata[i] = self.geodesic_t.p2.u # <<<<<<<<<<<<<< - * azdata[i] = self.geodesic_t.ALPHA21 + * self.pt2.lam = self.arc.pt2.lam + * self.pt2.phi = self.arc.pt2.phi # <<<<<<<<<<<<<< + * lonsdata[i] = self.pt2.lam + * latsdata[i] = self.pt2.phi + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt2->phi; + + /* "_geod.pyx":106 + * self.pt2.lam = self.arc.pt2.lam + * self.pt2.phi = self.arc.pt2.phi + * lonsdata[i] = self.pt2.lam # <<<<<<<<<<<<<< + * latsdata[i] = self.pt2.phi + * azdata[i] = self.arc.az21 + */ + (__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam; + + /* "_geod.pyx":107 + * self.pt2.phi = self.arc.pt2.phi + * lonsdata[i] = self.pt2.lam + * latsdata[i] = self.pt2.phi # <<<<<<<<<<<<<< + * azdata[i] = self.arc.az21 * else: */ - (__pyx_v_latsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u; + (__pyx_v_latsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi; - /* "_geod.pyx":77 - * lonsdata[i] = self.geodesic_t.p2.v - * latsdata[i] = self.geodesic_t.p2.u - * azdata[i] = self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<< + /* "_geod.pyx":108 + * lonsdata[i] = self.pt2.lam + * latsdata[i] = self.pt2.phi + * azdata[i] = self.arc.az21 # <<<<<<<<<<<<<< * else: - * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v + * self.pt2.lam = _rad2dg*self.arc.pt2.lam */ - (__pyx_v_azdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21; - goto __pyx_L17; + (__pyx_v_azdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.az21; + goto __pyx_L15; } /*else*/ { - /* "_geod.pyx":79 - * azdata[i] = self.geodesic_t.ALPHA21 + /* "_geod.pyx":110 + * azdata[i] = self.arc.az21 * else: - * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v # <<<<<<<<<<<<<< - * latsdata[i] = _rad2dg*self.geodesic_t.p2.u - * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21 + * self.pt2.lam = _rad2dg*self.arc.pt2.lam # <<<<<<<<<<<<<< + * self.pt2.phi = _rad2dg*self.arc.pt2.phi + * lonsdata[i] = self.pt2.lam */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - (__pyx_v_lonsdata[__pyx_v_i]) = __pyx_t_7; - - /* "_geod.pyx":80 + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam = (__pyx_v_5_geod__rad2dg * ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt2->lam); + + /* "_geod.pyx":111 * else: - * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v - * latsdata[i] = _rad2dg*self.geodesic_t.p2.u # <<<<<<<<<<<<<< - * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21 + * self.pt2.lam = _rad2dg*self.arc.pt2.lam + * self.pt2.phi = _rad2dg*self.arc.pt2.phi # <<<<<<<<<<<<<< + * lonsdata[i] = self.pt2.lam + * latsdata[i] = self.pt2.phi + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi = (__pyx_v_5_geod__rad2dg * ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt2->phi); + + /* "_geod.pyx":112 + * self.pt2.lam = _rad2dg*self.arc.pt2.lam + * self.pt2.phi = _rad2dg*self.arc.pt2.phi + * lonsdata[i] = self.pt2.lam # <<<<<<<<<<<<<< + * latsdata[i] = self.pt2.phi + * azdata[i] = _rad2dg*self.arc.az21 + */ + (__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam; + + /* "_geod.pyx":113 + * self.pt2.phi = _rad2dg*self.arc.pt2.phi + * lonsdata[i] = self.pt2.lam + * latsdata[i] = self.pt2.phi # <<<<<<<<<<<<<< + * azdata[i] = _rad2dg*self.arc.az21 * */ - __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - (__pyx_v_latsdata[__pyx_v_i]) = __pyx_t_7; - - /* "_geod.pyx":81 - * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v - * latsdata[i] = _rad2dg*self.geodesic_t.p2.u - * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<< + (__pyx_v_latsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi; + + /* "_geod.pyx":114 + * lonsdata[i] = self.pt2.lam + * latsdata[i] = self.pt2.phi + * azdata[i] = _rad2dg*self.arc.az21 # <<<<<<<<<<<<<< * * def _inv(self, object lons1, object lats1, object lons2, object lats2, radians=False): */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - (__pyx_v_azdata[__pyx_v_i]) = __pyx_t_7; + (__pyx_v_azdata[__pyx_v_i]) = (__pyx_v_5_geod__rad2dg * ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.az21); } - __pyx_L17:; + __pyx_L15:; } __pyx_r = Py_None; __Pyx_INCREF(Py_None); @@ -1414,8 +1348,8 @@ static PyObject *__pyx_pf_5_geod_4Geod_2_fwd(PyObject *__pyx_v_self, PyObject *_ return __pyx_r; } -/* "_geod.pyx":83 - * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21 +/* "_geod.pyx":116 + * azdata[i] = _rad2dg*self.arc.az21 * * def _inv(self, object lons1, object lats1, object lons2, object lats2, radians=False): # <<<<<<<<<<<<<< * """ @@ -1453,7 +1387,6 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; Py_ssize_t __pyx_t_6; - double __pyx_t_7; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -1461,7 +1394,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ __Pyx_RefNannySetupContext("_inv"); { PyObject* values[5] = {0,0,0,0,0}; - values[4] = __pyx_k_6; + values[4] = __pyx_k_5; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -1483,19 +1416,19 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lats1); if (likely(values[1])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_inv", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_inv", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lons2); if (likely(values[2])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_inv", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_inv", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lats2); if (likely(values[3])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_inv", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_inv", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (kw_args > 0) { @@ -1504,7 +1437,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_inv") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_inv") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -1525,15 +1458,15 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_inv", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_inv", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_geod.Geod._inv", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - /* "_geod.pyx":93 - * cdef void *londata, *latdata, *azdat, *distdat + /* "_geod.pyx":127 + * cdef int err * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0: # <<<<<<<<<<<<<< * raise RuntimeError @@ -1542,7 +1475,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lons1, (&__pyx_v_londata), (&__pyx_v_buflenlons)) != 0); if (__pyx_t_1) { - /* "_geod.pyx":94 + /* "_geod.pyx":128 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1550,12 +1483,12 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } __pyx_L6:; - /* "_geod.pyx":95 + /* "_geod.pyx":129 * if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: # <<<<<<<<<<<<<< @@ -1565,7 +1498,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lats1, (&__pyx_v_latdata), (&__pyx_v_buflenlats)) != 0); if (__pyx_t_1) { - /* "_geod.pyx":96 + /* "_geod.pyx":130 * raise RuntimeError * if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1573,12 +1506,12 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L7; } __pyx_L7:; - /* "_geod.pyx":97 + /* "_geod.pyx":131 * if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: # <<<<<<<<<<<<<< @@ -1588,7 +1521,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lons2, (&__pyx_v_azdat), (&__pyx_v_buflenaz)) != 0); if (__pyx_t_1) { - /* "_geod.pyx":98 + /* "_geod.pyx":132 * raise RuntimeError * if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1596,12 +1529,12 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L8; } __pyx_L8:; - /* "_geod.pyx":99 + /* "_geod.pyx":133 * if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats2, &distdat, &buflend) <> 0: # <<<<<<<<<<<<<< @@ -1611,7 +1544,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lats2, (&__pyx_v_distdat), (&__pyx_v_buflend)) != 0); if (__pyx_t_1) { - /* "_geod.pyx":100 + /* "_geod.pyx":134 * raise RuntimeError * if PyObject_AsWriteBuffer(lats2, &distdat, &buflend) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1619,12 +1552,12 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ * if not buflenlons == buflenlats == buflenaz == buflend: */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L9; } __pyx_L9:; - /* "_geod.pyx":102 + /* "_geod.pyx":136 * raise RuntimeError * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<< @@ -1641,42 +1574,42 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { - /* "_geod.pyx":103 + /* "_geod.pyx":137 * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenlons//_doublesize * lonsdata = londata */ - __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L10; } __pyx_L10:; - /* "_geod.pyx":104 + /* "_geod.pyx":138 * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenlons//_doublesize # <<<<<<<<<<<<<< * lonsdata = londata * latsdata = latdata */ - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_buflenlons); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_buflenlons); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_FloorDivide(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyNumber_FloorDivide(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_ndim = __pyx_t_6; - /* "_geod.pyx":105 + /* "_geod.pyx":139 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenlons//_doublesize * lonsdata = londata # <<<<<<<<<<<<<< @@ -1685,7 +1618,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_lonsdata = ((double *)__pyx_v_londata); - /* "_geod.pyx":106 + /* "_geod.pyx":140 * ndim = buflenlons//_doublesize * lonsdata = londata * latsdata = latdata # <<<<<<<<<<<<<< @@ -1694,7 +1627,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_latsdata = ((double *)__pyx_v_latdata); - /* "_geod.pyx":107 + /* "_geod.pyx":141 * lonsdata = londata * latsdata = latdata * azdata = azdat # <<<<<<<<<<<<<< @@ -1703,7 +1636,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_azdata = ((double *)__pyx_v_azdat); - /* "_geod.pyx":108 + /* "_geod.pyx":142 * latsdata = latdata * azdata = azdat * distdata = distdat # <<<<<<<<<<<<<< @@ -1712,301 +1645,262 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_distdata = ((double *)__pyx_v_distdat); - /* "_geod.pyx":109 + /* "_geod.pyx":143 * azdata = azdat * distdata = distdat * errmsg = 'undefined inverse geodesic (may be an antipodal point)' # <<<<<<<<<<<<<< * for i from 0 <= i < ndim: * if radians: */ - __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); - __pyx_v_errmsg = ((PyObject *)__pyx_kp_s_4); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_7)); + __pyx_v_errmsg = ((PyObject *)__pyx_kp_s_7); - /* "_geod.pyx":110 + /* "_geod.pyx":144 * distdata = distdat * errmsg = 'undefined inverse geodesic (may be an antipodal point)' * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< * if radians: - * self.geodesic_t.p1.v = lonsdata[i] + * self.pt1.lam = lonsdata[i] */ __pyx_t_6 = __pyx_v_ndim; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) { - /* "_geod.pyx":111 + /* "_geod.pyx":145 * errmsg = 'undefined inverse geodesic (may be an antipodal point)' * for i from 0 <= i < ndim: * if radians: # <<<<<<<<<<<<<< - * self.geodesic_t.p1.v = lonsdata[i] - * self.geodesic_t.p1.u = latsdata[i] + * self.pt1.lam = lonsdata[i] + * self.pt1.phi = latsdata[i] */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_2) { - /* "_geod.pyx":112 + /* "_geod.pyx":146 * for i from 0 <= i < ndim: * if radians: - * self.geodesic_t.p1.v = lonsdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.p1.u = latsdata[i] - * self.geodesic_t.p2.v = azdata[i] + * self.pt1.lam = lonsdata[i] # <<<<<<<<<<<<<< + * self.pt1.phi = latsdata[i] + * self.pt1.h = 0. */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = (__pyx_v_lonsdata[__pyx_v_i]); + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.lam = (__pyx_v_lonsdata[__pyx_v_i]); - /* "_geod.pyx":113 + /* "_geod.pyx":147 * if radians: - * self.geodesic_t.p1.v = lonsdata[i] - * self.geodesic_t.p1.u = latsdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.p2.v = azdata[i] - * self.geodesic_t.p2.u = distdata[i] - */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = (__pyx_v_latsdata[__pyx_v_i]); - - /* "_geod.pyx":114 - * self.geodesic_t.p1.v = lonsdata[i] - * self.geodesic_t.p1.u = latsdata[i] - * self.geodesic_t.p2.v = azdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.p2.u = distdata[i] + * self.pt1.lam = lonsdata[i] + * self.pt1.phi = latsdata[i] # <<<<<<<<<<<<<< + * self.pt1.h = 0. + * self.pt2.lam = azdata[i] + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.phi = (__pyx_v_latsdata[__pyx_v_i]); + + /* "_geod.pyx":148 + * self.pt1.lam = lonsdata[i] + * self.pt1.phi = latsdata[i] + * self.pt1.h = 0. # <<<<<<<<<<<<<< + * self.pt2.lam = azdata[i] + * self.pt2.phi = distdata[i] + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.h = 0.; + + /* "_geod.pyx":149 + * self.pt1.phi = latsdata[i] + * self.pt1.h = 0. + * self.pt2.lam = azdata[i] # <<<<<<<<<<<<<< + * self.pt2.phi = distdata[i] + * self.arc.pt1 = &self.pt1 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam = (__pyx_v_azdata[__pyx_v_i]); + + /* "_geod.pyx":150 + * self.pt1.h = 0. + * self.pt2.lam = azdata[i] + * self.pt2.phi = distdata[i] # <<<<<<<<<<<<<< + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi = (__pyx_v_distdata[__pyx_v_i]); + + /* "_geod.pyx":151 + * self.pt2.lam = azdata[i] + * self.pt2.phi = distdata[i] + * self.arc.pt1 = &self.pt1 # <<<<<<<<<<<<<< + * self.arc.pt2 = &self.pt2 * else: */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = (__pyx_v_azdata[__pyx_v_i]); + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt1 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1); - /* "_geod.pyx":115 - * self.geodesic_t.p1.u = latsdata[i] - * self.geodesic_t.p2.v = azdata[i] - * self.geodesic_t.p2.u = distdata[i] # <<<<<<<<<<<<<< + /* "_geod.pyx":152 + * self.pt2.phi = distdata[i] + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 # <<<<<<<<<<<<<< * else: - * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] + * self.pt1.lam = _dg2rad*lonsdata[i] */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u = (__pyx_v_distdata[__pyx_v_i]); + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt2 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2); goto __pyx_L13; } /*else*/ { - /* "_geod.pyx":117 - * self.geodesic_t.p2.u = distdata[i] + /* "_geod.pyx":154 + * self.arc.pt2 = &self.pt2 * else: - * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.p1.u = _dg2rad*latsdata[i] - * self.geodesic_t.p2.v = _dg2rad*azdata[i] + * self.pt1.lam = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< + * self.pt1.phi = _dg2rad*latsdata[i] + * self.pt1.h = 0. */ - __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_t_7; - - /* "_geod.pyx":118 + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.lam = (__pyx_v_5_geod__dg2rad * (__pyx_v_lonsdata[__pyx_v_i])); + + /* "_geod.pyx":155 * else: - * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] - * self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.p2.v = _dg2rad*azdata[i] - * self.geodesic_t.p2.u = _dg2rad*distdata[i] - */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_t_7; - - /* "_geod.pyx":119 - * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] - * self.geodesic_t.p1.u = _dg2rad*latsdata[i] - * self.geodesic_t.p2.v = _dg2rad*azdata[i] # <<<<<<<<<<<<<< - * self.geodesic_t.p2.u = _dg2rad*distdata[i] - * geod_inv(&self.geodesic_t) - */ - __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_azdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = __pyx_t_7; - - /* "_geod.pyx":120 - * self.geodesic_t.p1.u = _dg2rad*latsdata[i] - * self.geodesic_t.p2.v = _dg2rad*azdata[i] - * self.geodesic_t.p2.u = _dg2rad*distdata[i] # <<<<<<<<<<<<<< - * geod_inv(&self.geodesic_t) - * if self.geodesic_t.DIST != self.geodesic_t.DIST: # check for NaN - */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_distdata[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u = __pyx_t_7; + * self.pt1.lam = _dg2rad*lonsdata[i] + * self.pt1.phi = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< + * self.pt1.h = 0. + * self.pt2.lam = _dg2rad*azdata[i] + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.phi = (__pyx_v_5_geod__dg2rad * (__pyx_v_latsdata[__pyx_v_i])); + + /* "_geod.pyx":156 + * self.pt1.lam = _dg2rad*lonsdata[i] + * self.pt1.phi = _dg2rad*latsdata[i] + * self.pt1.h = 0. # <<<<<<<<<<<<<< + * self.pt2.lam = _dg2rad*azdata[i] + * self.pt2.phi = _dg2rad*distdata[i] + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.h = 0.; + + /* "_geod.pyx":157 + * self.pt1.phi = _dg2rad*latsdata[i] + * self.pt1.h = 0. + * self.pt2.lam = _dg2rad*azdata[i] # <<<<<<<<<<<<<< + * self.pt2.phi = _dg2rad*distdata[i] + * self.arc.pt1 = &self.pt1 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam = (__pyx_v_5_geod__dg2rad * (__pyx_v_azdata[__pyx_v_i])); + + /* "_geod.pyx":158 + * self.pt1.h = 0. + * self.pt2.lam = _dg2rad*azdata[i] + * self.pt2.phi = _dg2rad*distdata[i] # <<<<<<<<<<<<<< + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi = (__pyx_v_5_geod__dg2rad * (__pyx_v_distdata[__pyx_v_i])); + + /* "_geod.pyx":159 + * self.pt2.lam = _dg2rad*azdata[i] + * self.pt2.phi = _dg2rad*distdata[i] + * self.arc.pt1 = &self.pt1 # <<<<<<<<<<<<<< + * self.arc.pt2 = &self.pt2 + * # Computes distance, forward and back azimuths in structure + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt1 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1); + + /* "_geod.pyx":160 + * self.pt2.phi = _dg2rad*distdata[i] + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 # <<<<<<<<<<<<<< + * # Computes distance, forward and back azimuths in structure + * # for the two end points of the geodesic line + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt2 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2); } __pyx_L13:; - /* "_geod.pyx":121 - * self.geodesic_t.p2.v = _dg2rad*azdata[i] - * self.geodesic_t.p2.u = _dg2rad*distdata[i] - * geod_inv(&self.geodesic_t) # <<<<<<<<<<<<<< - * if self.geodesic_t.DIST != self.geodesic_t.DIST: # check for NaN - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') - */ - geod_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - - /* "_geod.pyx":122 - * self.geodesic_t.p2.u = _dg2rad*distdata[i] - * geod_inv(&self.geodesic_t) - * if self.geodesic_t.DIST != self.geodesic_t.DIST: # check for NaN # <<<<<<<<<<<<<< - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') - * if pj_errno != 0: + /* "_geod.pyx":163 + * # Computes distance, forward and back azimuths in structure + * # for the two end points of the geodesic line + * if self.sphere: # <<<<<<<<<<<<<< + * proj_sp_inv(&self.arc) + * else: */ - __pyx_t_2 = (((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST != ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST); + __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__sphere); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_2) { - /* "_geod.pyx":123 - * geod_inv(&self.geodesic_t) - * if self.geodesic_t.DIST != self.geodesic_t.DIST: # check for NaN - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') # <<<<<<<<<<<<<< - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) - */ - __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + /* "_geod.pyx":164 + * # for the two end points of the geodesic line + * if self.sphere: + * proj_sp_inv(&self.arc) # <<<<<<<<<<<<<< + * else: + * proj_in_inv(&self.arc) + */ + proj_sp_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc)); goto __pyx_L14; } - __pyx_L14:; - - /* "_geod.pyx":124 - * if self.geodesic_t.DIST != self.geodesic_t.DIST: # check for NaN - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') - * if pj_errno != 0: # <<<<<<<<<<<<<< - * raise RuntimeError(pj_strerrno(pj_errno)) - * if radians: - */ - __pyx_t_2 = (pj_errno != 0); - if (__pyx_t_2) { + /*else*/ { - /* "_geod.pyx":125 - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< + /* "_geod.pyx":166 + * proj_sp_inv(&self.arc) + * else: + * proj_in_inv(&self.arc) # <<<<<<<<<<<<<< * if radians: - * lonsdata[i] = self.geodesic_t.ALPHA12 + * lonsdata[i] = self.arc.az12 */ - __pyx_t_5 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_5)); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); - __pyx_t_5 = 0; - __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L15; + proj_in_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc)); } - __pyx_L15:; + __pyx_L14:; - /* "_geod.pyx":126 - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) + /* "_geod.pyx":167 + * else: + * proj_in_inv(&self.arc) * if radians: # <<<<<<<<<<<<<< - * lonsdata[i] = self.geodesic_t.ALPHA12 - * latsdata[i] = self.geodesic_t.ALPHA21 + * lonsdata[i] = self.arc.az12 + * latsdata[i] = self.arc.az21 */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_2) { - /* "_geod.pyx":127 - * raise RuntimeError(pj_strerrno(pj_errno)) + /* "_geod.pyx":168 + * proj_in_inv(&self.arc) * if radians: - * lonsdata[i] = self.geodesic_t.ALPHA12 # <<<<<<<<<<<<<< - * latsdata[i] = self.geodesic_t.ALPHA21 + * lonsdata[i] = self.arc.az12 # <<<<<<<<<<<<<< + * latsdata[i] = self.arc.az21 * else: */ - (__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12; + (__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.az12; - /* "_geod.pyx":128 + /* "_geod.pyx":169 * if radians: - * lonsdata[i] = self.geodesic_t.ALPHA12 - * latsdata[i] = self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<< + * lonsdata[i] = self.arc.az12 + * latsdata[i] = self.arc.az21 # <<<<<<<<<<<<<< * else: - * lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 + * lonsdata[i] = _rad2dg*self.arc.az12 */ - (__pyx_v_latsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21; - goto __pyx_L16; + (__pyx_v_latsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.az21; + goto __pyx_L15; } /*else*/ { - /* "_geod.pyx":130 - * latsdata[i] = self.geodesic_t.ALPHA21 + /* "_geod.pyx":171 + * latsdata[i] = self.arc.az21 * else: - * lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 # <<<<<<<<<<<<<< - * latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 - * azdata[i] = self.geodesic_t.DIST + * lonsdata[i] = _rad2dg*self.arc.az12 # <<<<<<<<<<<<<< + * latsdata[i] = _rad2dg*self.arc.az21 + * azdata[i] = self.arc.S */ - __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - (__pyx_v_lonsdata[__pyx_v_i]) = __pyx_t_7; - - /* "_geod.pyx":131 + (__pyx_v_lonsdata[__pyx_v_i]) = (__pyx_v_5_geod__rad2dg * ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.az12); + + /* "_geod.pyx":172 * else: - * lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 - * latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<< - * azdata[i] = self.geodesic_t.DIST + * lonsdata[i] = _rad2dg*self.arc.az12 + * latsdata[i] = _rad2dg*self.arc.az21 # <<<<<<<<<<<<<< + * azdata[i] = self.arc.S * */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - (__pyx_v_latsdata[__pyx_v_i]) = __pyx_t_7; + (__pyx_v_latsdata[__pyx_v_i]) = (__pyx_v_5_geod__rad2dg * ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.az21); } - __pyx_L16:; + __pyx_L15:; - /* "_geod.pyx":132 - * lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 - * latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 - * azdata[i] = self.geodesic_t.DIST # <<<<<<<<<<<<<< + /* "_geod.pyx":173 + * lonsdata[i] = _rad2dg*self.arc.az12 + * latsdata[i] = _rad2dg*self.arc.az21 + * azdata[i] = self.arc.S # <<<<<<<<<<<<<< * * def _npts(self, double lon1, double lat1, double lon2, double lat2, int npts, radians=False): */ - (__pyx_v_azdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST; + (__pyx_v_azdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.S; } __pyx_r = Py_None; __Pyx_INCREF(Py_None); @@ -2024,8 +1918,8 @@ static PyObject *__pyx_pf_5_geod_4Geod_3_inv(PyObject *__pyx_v_self, PyObject *_ return __pyx_r; } -/* "_geod.pyx":134 - * azdata[i] = self.geodesic_t.DIST +/* "_geod.pyx":175 + * azdata[i] = self.arc.S * * def _npts(self, double lon1, double lat1, double lon2, double lat2, int npts, radians=False): # <<<<<<<<<<<<<< * """ @@ -2049,10 +1943,8 @@ static PyObject *__pyx_pf_5_geod_4Geod_4_npts(PyObject *__pyx_v_self, PyObject * __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; + long __pyx_t_3; PyObject *__pyx_t_4 = NULL; - double __pyx_t_5; - long __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -2060,7 +1952,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_4_npts(PyObject *__pyx_v_self, PyObject * __Pyx_RefNannySetupContext("_npts"); { PyObject* values[6] = {0,0,0,0,0,0}; - values[5] = __pyx_k_9; + values[5] = __pyx_k_8; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2083,25 +1975,25 @@ static PyObject *__pyx_pf_5_geod_4Geod_4_npts(PyObject *__pyx_v_self, PyObject * values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lat1); if (likely(values[1])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lon2); if (likely(values[2])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lat2); if (likely(values[3])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__npts); if (likely(values[4])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: if (kw_args > 0) { @@ -2110,7 +2002,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_4_npts(PyObject *__pyx_v_self, PyObject * } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_npts") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_npts") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2124,183 +2016,215 @@ static PyObject *__pyx_pf_5_geod_4Geod_4_npts(PyObject *__pyx_v_self, PyObject * default: goto __pyx_L5_argtuple_error; } } - __pyx_v_lon1 = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_lon1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_lat1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_lat1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_lon2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_lon2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_lat2 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_lat2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_npts = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_npts == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_lon1 = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_lon1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_lat1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_lat1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_lon2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_lon2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_lat2 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_lat2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_npts = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_npts == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_radians = values[5]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_npts", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_geod.Geod._npts", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - /* "_geod.pyx":139 + /* "_geod.pyx":180 * cdef int i * cdef double del_s * if radians: # <<<<<<<<<<<<<< - * self.geodesic_t.p1.v = lon1 - * self.geodesic_t.p1.u = lat1 + * self.pt1.lam = lon1 + * self.pt1.phi = lat1 */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_1) { - /* "_geod.pyx":140 + /* "_geod.pyx":181 * cdef double del_s * if radians: - * self.geodesic_t.p1.v = lon1 # <<<<<<<<<<<<<< - * self.geodesic_t.p1.u = lat1 - * self.geodesic_t.p2.v = lon2 + * self.pt1.lam = lon1 # <<<<<<<<<<<<<< + * self.pt1.phi = lat1 + * self.pt1.h = 0. */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_v_lon1; + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.lam = __pyx_v_lon1; - /* "_geod.pyx":141 + /* "_geod.pyx":182 * if radians: - * self.geodesic_t.p1.v = lon1 - * self.geodesic_t.p1.u = lat1 # <<<<<<<<<<<<<< - * self.geodesic_t.p2.v = lon2 - * self.geodesic_t.p2.u = lat2 - */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_v_lat1; - - /* "_geod.pyx":142 - * self.geodesic_t.p1.v = lon1 - * self.geodesic_t.p1.u = lat1 - * self.geodesic_t.p2.v = lon2 # <<<<<<<<<<<<<< - * self.geodesic_t.p2.u = lat2 + * self.pt1.lam = lon1 + * self.pt1.phi = lat1 # <<<<<<<<<<<<<< + * self.pt1.h = 0. + * self.pt2.lam = lon2 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.phi = __pyx_v_lat1; + + /* "_geod.pyx":183 + * self.pt1.lam = lon1 + * self.pt1.phi = lat1 + * self.pt1.h = 0. # <<<<<<<<<<<<<< + * self.pt2.lam = lon2 + * self.pt2.phi = lat2 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.h = 0.; + + /* "_geod.pyx":184 + * self.pt1.phi = lat1 + * self.pt1.h = 0. + * self.pt2.lam = lon2 # <<<<<<<<<<<<<< + * self.pt2.phi = lat2 + * self.arc.pt1 = &self.pt1 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam = __pyx_v_lon2; + + /* "_geod.pyx":185 + * self.pt1.h = 0. + * self.pt2.lam = lon2 + * self.pt2.phi = lat2 # <<<<<<<<<<<<<< + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi = __pyx_v_lat2; + + /* "_geod.pyx":186 + * self.pt2.lam = lon2 + * self.pt2.phi = lat2 + * self.arc.pt1 = &self.pt1 # <<<<<<<<<<<<<< + * self.arc.pt2 = &self.pt2 * else: */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = __pyx_v_lon2; + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt1 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1); - /* "_geod.pyx":143 - * self.geodesic_t.p1.u = lat1 - * self.geodesic_t.p2.v = lon2 - * self.geodesic_t.p2.u = lat2 # <<<<<<<<<<<<<< + /* "_geod.pyx":187 + * self.pt2.phi = lat2 + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 # <<<<<<<<<<<<<< * else: - * self.geodesic_t.p1.v = _dg2rad*lon1 + * self.pt1.lam = _dg2rad*lon1 */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u = __pyx_v_lat2; + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt2 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2); goto __pyx_L6; } /*else*/ { - /* "_geod.pyx":145 - * self.geodesic_t.p2.u = lat2 + /* "_geod.pyx":189 + * self.arc.pt2 = &self.pt2 * else: - * self.geodesic_t.p1.v = _dg2rad*lon1 # <<<<<<<<<<<<<< - * self.geodesic_t.p1.u = _dg2rad*lat1 - * self.geodesic_t.p2.v = _dg2rad*lon2 + * self.pt1.lam = _dg2rad*lon1 # <<<<<<<<<<<<<< + * self.pt1.phi = _dg2rad*lat1 + * self.pt1.h = 0. */ - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_lon1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_t_5; + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.lam = (__pyx_v_5_geod__dg2rad * __pyx_v_lon1); - /* "_geod.pyx":146 + /* "_geod.pyx":190 * else: - * self.geodesic_t.p1.v = _dg2rad*lon1 - * self.geodesic_t.p1.u = _dg2rad*lat1 # <<<<<<<<<<<<<< - * self.geodesic_t.p2.v = _dg2rad*lon2 - * self.geodesic_t.p2.u = _dg2rad*lat2 - */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_lat1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_t_5; - - /* "_geod.pyx":147 - * self.geodesic_t.p1.v = _dg2rad*lon1 - * self.geodesic_t.p1.u = _dg2rad*lat1 - * self.geodesic_t.p2.v = _dg2rad*lon2 # <<<<<<<<<<<<<< - * self.geodesic_t.p2.u = _dg2rad*lat2 - * # do inverse computation to set azimuths, distance. - */ - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_lon2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = __pyx_t_5; - - /* "_geod.pyx":148 - * self.geodesic_t.p1.u = _dg2rad*lat1 - * self.geodesic_t.p2.v = _dg2rad*lon2 - * self.geodesic_t.p2.u = _dg2rad*lat2 # <<<<<<<<<<<<<< - * # do inverse computation to set azimuths, distance. - * geod_inv(&self.geodesic_t) - */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_lat2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u = __pyx_t_5; + * self.pt1.lam = _dg2rad*lon1 + * self.pt1.phi = _dg2rad*lat1 # <<<<<<<<<<<<<< + * self.pt1.h = 0. + * self.pt2.lam = _dg2rad*lon2 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.phi = (__pyx_v_5_geod__dg2rad * __pyx_v_lat1); + + /* "_geod.pyx":191 + * self.pt1.lam = _dg2rad*lon1 + * self.pt1.phi = _dg2rad*lat1 + * self.pt1.h = 0. # <<<<<<<<<<<<<< + * self.pt2.lam = _dg2rad*lon2 + * self.pt2.phi = _dg2rad*lat2 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1.h = 0.; + + /* "_geod.pyx":192 + * self.pt1.phi = _dg2rad*lat1 + * self.pt1.h = 0. + * self.pt2.lam = _dg2rad*lon2 # <<<<<<<<<<<<<< + * self.pt2.phi = _dg2rad*lat2 + * self.arc.pt1 = &self.pt1 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam = (__pyx_v_5_geod__dg2rad * __pyx_v_lon2); + + /* "_geod.pyx":193 + * self.pt1.h = 0. + * self.pt2.lam = _dg2rad*lon2 + * self.pt2.phi = _dg2rad*lat2 # <<<<<<<<<<<<<< + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi = (__pyx_v_5_geod__dg2rad * __pyx_v_lat2); + + /* "_geod.pyx":194 + * self.pt2.lam = _dg2rad*lon2 + * self.pt2.phi = _dg2rad*lat2 + * self.arc.pt1 = &self.pt1 # <<<<<<<<<<<<<< + * self.arc.pt2 = &self.pt2 + * if self.sphere: + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt1 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt1); + + /* "_geod.pyx":195 + * self.pt2.phi = _dg2rad*lat2 + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 # <<<<<<<<<<<<<< + * if self.sphere: + * proj_sp_inv(&self.arc) + */ + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.pt2 = (&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2); } __pyx_L6:; - /* "_geod.pyx":150 - * self.geodesic_t.p2.u = _dg2rad*lat2 - * # do inverse computation to set azimuths, distance. - * geod_inv(&self.geodesic_t) # <<<<<<<<<<<<<< - * # set up some constants needed for forward computation. - * geod_pre(&self.geodesic_t) + /* "_geod.pyx":196 + * self.arc.pt1 = &self.pt1 + * self.arc.pt2 = &self.pt2 + * if self.sphere: # <<<<<<<<<<<<<< + * proj_sp_inv(&self.arc) + * else: + */ + __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__sphere); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "_geod.pyx":197 + * self.arc.pt2 = &self.pt2 + * if self.sphere: + * proj_sp_inv(&self.arc) # <<<<<<<<<<<<<< + * else: + * proj_in_inv(&self.arc) */ - geod_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); + proj_sp_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc)); + goto __pyx_L7; + } + /*else*/ { - /* "_geod.pyx":152 - * geod_inv(&self.geodesic_t) - * # set up some constants needed for forward computation. - * geod_pre(&self.geodesic_t) # <<<<<<<<<<<<<< + /* "_geod.pyx":199 + * proj_sp_inv(&self.arc) + * else: + * proj_in_inv(&self.arc) # <<<<<<<<<<<<<< * # distance increment. - * del_s = self.geodesic_t.DIST/(npts+1) + * del_s = self.arc.S/(npts+1) */ - geod_pre((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); + proj_in_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc)); + } + __pyx_L7:; - /* "_geod.pyx":154 - * geod_pre(&self.geodesic_t) + /* "_geod.pyx":201 + * proj_in_inv(&self.arc) * # distance increment. - * del_s = self.geodesic_t.DIST/(npts+1) # <<<<<<<<<<<<<< + * del_s = self.arc.S/(npts+1) # <<<<<<<<<<<<<< * # initialize output tuples. * lats = () */ - __pyx_t_6 = (__pyx_v_npts + 1); - if (unlikely(__pyx_t_6 == 0)) { + __pyx_t_3 = (__pyx_v_npts + 1); + if (unlikely(__pyx_t_3 == 0)) { PyErr_Format(PyExc_ZeroDivisionError, "float division"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_del_s = (((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST / __pyx_t_6); + __pyx_v_del_s = (((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.S / __pyx_t_3); - /* "_geod.pyx":156 - * del_s = self.geodesic_t.DIST/(npts+1) + /* "_geod.pyx":203 + * del_s = self.arc.S/(npts+1) * # initialize output tuples. * lats = () # <<<<<<<<<<<<<< * lons = () @@ -2309,7 +2233,7 @@ static PyObject *__pyx_pf_5_geod_4Geod_4_npts(PyObject *__pyx_v_self, PyObject * __Pyx_INCREF(((PyObject *)__pyx_empty_tuple)); __pyx_v_lats = __pyx_empty_tuple; - /* "_geod.pyx":157 + /* "_geod.pyx":204 * # initialize output tuples. * lats = () * lons = () # <<<<<<<<<<<<<< @@ -2319,171 +2243,185 @@ static PyObject *__pyx_pf_5_geod_4Geod_4_npts(PyObject *__pyx_v_self, PyObject * __Pyx_INCREF(((PyObject *)__pyx_empty_tuple)); __pyx_v_lons = __pyx_empty_tuple; - /* "_geod.pyx":159 + /* "_geod.pyx":206 * lons = () * # loop over intermediate points, compute lat/lons. * for i from 1 <= i < npts+1: # <<<<<<<<<<<<<< - * self.geodesic_t.DIST = i*del_s - * geod_for(&self.geodesic_t) + * self.arc.S = i*del_s + * if self.sphere: */ - __pyx_t_6 = (__pyx_v_npts + 1); - for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_6; __pyx_v_i++) { + __pyx_t_3 = (__pyx_v_npts + 1); + for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { - /* "_geod.pyx":160 + /* "_geod.pyx":207 * # loop over intermediate points, compute lat/lons. * for i from 1 <= i < npts+1: - * self.geodesic_t.DIST = i*del_s # <<<<<<<<<<<<<< - * geod_for(&self.geodesic_t) - * if radians: + * self.arc.S = i*del_s # <<<<<<<<<<<<<< + * if self.sphere: + * proj_sp_fwd(&self.arc) */ - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST = (__pyx_v_i * __pyx_v_del_s); + ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc.S = (__pyx_v_i * __pyx_v_del_s); - /* "_geod.pyx":161 + /* "_geod.pyx":208 * for i from 1 <= i < npts+1: - * self.geodesic_t.DIST = i*del_s - * geod_for(&self.geodesic_t) # <<<<<<<<<<<<<< + * self.arc.S = i*del_s + * if self.sphere: # <<<<<<<<<<<<<< + * proj_sp_fwd(&self.arc) + * else: + */ + __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__sphere); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "_geod.pyx":209 + * self.arc.S = i*del_s + * if self.sphere: + * proj_sp_fwd(&self.arc) # <<<<<<<<<<<<<< + * else: + * proj_in_fwd(&self.arc) + */ + proj_sp_fwd((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc)); + goto __pyx_L10; + } + /*else*/ { + + /* "_geod.pyx":211 + * proj_sp_fwd(&self.arc) + * else: + * proj_in_fwd(&self.arc) # <<<<<<<<<<<<<< * if radians: - * lats = lats + (self.geodesic_t.p2.u,) + * lats = lats + (self.pt2.phi,) */ - geod_for((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); + proj_in_fwd((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->arc)); + } + __pyx_L10:; - /* "_geod.pyx":162 - * self.geodesic_t.DIST = i*del_s - * geod_for(&self.geodesic_t) + /* "_geod.pyx":212 + * else: + * proj_in_fwd(&self.arc) * if radians: # <<<<<<<<<<<<<< - * lats = lats + (self.geodesic_t.p2.u,) - * lons = lons + (self.geodesic_t.p2.v,) + * lats = lats + (self.pt2.phi,) + * lons = lons + (self.pt2.lam.v,) */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_1) { - /* "_geod.pyx":163 - * geod_for(&self.geodesic_t) + /* "_geod.pyx":213 + * proj_in_fwd(&self.arc) * if radians: - * lats = lats + (self.geodesic_t.p2.u,) # <<<<<<<<<<<<<< - * lons = lons + (self.geodesic_t.p2.v,) + * lats = lats + (self.pt2.phi,) # <<<<<<<<<<<<<< + * lons = lons + (self.pt2.lam.v,) * else: */ - __pyx_t_2 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_v_lats), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_v_lats), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_v_lats)); __pyx_v_lats = __pyx_t_2; __pyx_t_2 = 0; - /* "_geod.pyx":164 + /* "_geod.pyx":214 * if radians: - * lats = lats + (self.geodesic_t.p2.u,) - * lons = lons + (self.geodesic_t.p2.v,) # <<<<<<<<<<<<<< + * lats = lats + (self.pt2.phi,) + * lons = lons + (self.pt2.lam.v,) # <<<<<<<<<<<<<< * else: - * lats = lats + (_rad2dg*self.geodesic_t.p2.u,) + * lats = lats + (_rad2dg*self.pt2.phi,) */ - __pyx_t_2 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_v_lons), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__v); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_lons), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_v_lons)); - __pyx_v_lons = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L9; + __pyx_v_lons = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L11; } /*else*/ { - /* "_geod.pyx":166 - * lons = lons + (self.geodesic_t.p2.v,) + /* "_geod.pyx":216 + * lons = lons + (self.pt2.lam.v,) * else: - * lats = lats + (_rad2dg*self.geodesic_t.p2.u,) # <<<<<<<<<<<<<< - * lons = lons + (_rad2dg*self.geodesic_t.p2.v,) + * lats = lats + (_rad2dg*self.pt2.phi,) # <<<<<<<<<<<<<< + * lons = lons + (_rad2dg*self.pt2.lam,) * return lons, lats */ - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyFloat_FromDouble((__pyx_v_5_geod__rad2dg * ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.phi)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_lats), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_lats), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_v_lats)); __pyx_v_lats = __pyx_t_4; __pyx_t_4 = 0; - /* "_geod.pyx":167 + /* "_geod.pyx":217 * else: - * lats = lats + (_rad2dg*self.geodesic_t.p2.u,) - * lons = lons + (_rad2dg*self.geodesic_t.p2.v,) # <<<<<<<<<<<<<< + * lats = lats + (_rad2dg*self.pt2.phi,) + * lons = lons + (_rad2dg*self.pt2.lam,) # <<<<<<<<<<<<<< * return lons, lats - * */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyFloat_FromDouble((__pyx_v_5_geod__rad2dg * ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->pt2.lam)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_v_lons), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_lons), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_v_lons)); - __pyx_v_lons = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_v_lons = __pyx_t_4; + __pyx_t_4 = 0; } - __pyx_L9:; + __pyx_L11:; } - /* "_geod.pyx":168 - * lats = lats + (_rad2dg*self.geodesic_t.p2.u,) - * lons = lons + (_rad2dg*self.geodesic_t.p2.v,) + /* "_geod.pyx":218 + * lats = lats + (_rad2dg*self.pt2.phi,) + * lons = lons + (_rad2dg*self.pt2.lam,) * return lons, lats # <<<<<<<<<<<<<< - * - * cdef _strencode(pystr,encoding='ascii'): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_2)); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __Pyx_INCREF(((PyObject *)__pyx_v_lons)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_lons)); + PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_lons)); __Pyx_GIVEREF(((PyObject *)__pyx_v_lons)); __Pyx_INCREF(((PyObject *)__pyx_v_lats)); - PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_lats)); + PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_lats)); __Pyx_GIVEREF(((PyObject *)__pyx_v_lats)); - __pyx_r = ((PyObject *)__pyx_t_2); - __pyx_t_2 = 0; + __pyx_r = ((PyObject *)__pyx_t_4); + __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_geod.Geod._npts", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; @@ -2495,273 +2433,9 @@ static PyObject *__pyx_pf_5_geod_4Geod_4_npts(PyObject *__pyx_v_self, PyObject * return __pyx_r; } -/* "_geod.pyx":7 - * cdef class Geod: - * cdef GEODESIC_T geodesic_t - * cdef public object geodstring # <<<<<<<<<<<<<< - * cdef public object proj_version - * cdef char *geodinitstring - */ - -static PyObject *__pyx_pf_5_geod_4Geod_10geodstring___get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pf_5_geod_4Geod_10geodstring___get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__"); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - __pyx_r = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring; - goto __pyx_L0; - - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5_geod_4Geod_10geodstring_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pf_5_geod_4Geod_10geodstring_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__"); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - __Pyx_DECREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring = __pyx_v_value; - - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5_geod_4Geod_10geodstring_2__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pf_5_geod_4Geod_10geodstring_2__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__"); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - __Pyx_DECREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring); - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodstring = Py_None; - - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "_geod.pyx":8 - * cdef GEODESIC_T geodesic_t - * cdef public object geodstring - * cdef public object proj_version # <<<<<<<<<<<<<< - * cdef char *geodinitstring - * - */ - -static PyObject *__pyx_pf_5_geod_4Geod_12proj_version___get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pf_5_geod_4Geod_12proj_version___get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__"); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version); - __pyx_r = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version; - goto __pyx_L0; - - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5_geod_4Geod_12proj_version_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pf_5_geod_4Geod_12proj_version_1__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__"); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version); - __Pyx_DECREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version); - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version = __pyx_v_value; - - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5_geod_4Geod_12proj_version_2__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pf_5_geod_4Geod_12proj_version_2__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__"); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version); - __Pyx_DECREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version); - ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version = Py_None; - - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "_geod.pyx":170 - * return lons, lats - * - * cdef _strencode(pystr,encoding='ascii'): # <<<<<<<<<<<<<< - * # encode a string into bytes. If already bytes, do nothing. - * try: - */ - -static PyObject *__pyx_f_5_geod__strencode(PyObject *__pyx_v_pystr, struct __pyx_opt_args_5_geod__strencode *__pyx_optional_args) { - PyObject *__pyx_v_encoding = ((PyObject *)__pyx_n_s__ascii); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_strencode"); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_encoding = __pyx_optional_args->encoding; - } - } - - /* "_geod.pyx":172 - * cdef _strencode(pystr,encoding='ascii'): - * # encode a string into bytes. If already bytes, do nothing. - * try: # <<<<<<<<<<<<<< - * return pystr.encode(encoding) - * except AttributeError: - */ - { - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "_geod.pyx":173 - * # encode a string into bytes. If already bytes, do nothing. - * try: - * return pystr.encode(encoding) # <<<<<<<<<<<<<< - * except AttributeError: - * return pystr # already bytes? - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = PyObject_GetAttr(__pyx_v_pystr, __pyx_n_s__encode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_5)); - __Pyx_INCREF(__pyx_v_encoding); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_encoding); - __Pyx_GIVEREF(__pyx_v_encoding); - __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; - goto __pyx_L7_try_return; - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L10_try_end; - __pyx_L7_try_return:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L0; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "_geod.pyx":174 - * try: - * return pystr.encode(encoding) - * except AttributeError: # <<<<<<<<<<<<<< - * return pystr # already bytes? - */ - __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError); - if (__pyx_t_7) { - __Pyx_AddTraceback("_geod._strencode", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_4); - - /* "_geod.pyx":175 - * return pystr.encode(encoding) - * except AttributeError: - * return pystr # already bytes? # <<<<<<<<<<<<<< - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_pystr); - __pyx_r = __pyx_v_pystr; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L6_except_return; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L4_exception_handled; - } - __pyx_L5_except_error:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L6_except_return:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L0; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L10_try_end:; - } - - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("_geod._strencode", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - static PyObject *__pyx_tp_new_5_geod_Geod(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5_geod_Geod *p; PyObject *o = (*t->tp_alloc)(t, 0); if (!o) return 0; - p = ((struct __pyx_obj_5_geod_Geod *)o); - p->geodstring = Py_None; Py_INCREF(Py_None); - p->proj_version = Py_None; Py_INCREF(Py_None); if (__pyx_pf_5_geod_4Geod___cinit__(o, a, k) < 0) { Py_DECREF(o); o = 0; } @@ -2769,76 +2443,17 @@ static PyObject *__pyx_tp_new_5_geod_Geod(PyTypeObject *t, PyObject *a, PyObject } static void __pyx_tp_dealloc_5_geod_Geod(PyObject *o) { - struct __pyx_obj_5_geod_Geod *p = (struct __pyx_obj_5_geod_Geod *)o; - Py_XDECREF(p->geodstring); - Py_XDECREF(p->proj_version); (*Py_TYPE(o)->tp_free)(o); } -static int __pyx_tp_traverse_5_geod_Geod(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5_geod_Geod *p = (struct __pyx_obj_5_geod_Geod *)o; - if (p->geodstring) { - e = (*v)(p->geodstring, a); if (e) return e; - } - if (p->proj_version) { - e = (*v)(p->proj_version, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5_geod_Geod(PyObject *o) { - struct __pyx_obj_5_geod_Geod *p = (struct __pyx_obj_5_geod_Geod *)o; - PyObject* tmp; - tmp = ((PyObject*)p->geodstring); - p->geodstring = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->proj_version); - p->proj_version = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_5_geod_4Geod_geodstring(PyObject *o, void *x) { - return __pyx_pf_5_geod_4Geod_10geodstring___get__(o); -} - -static int __pyx_setprop_5_geod_4Geod_geodstring(PyObject *o, PyObject *v, void *x) { - if (v) { - return __pyx_pf_5_geod_4Geod_10geodstring_1__set__(o, v); - } - else { - return __pyx_pf_5_geod_4Geod_10geodstring_2__del__(o); - } -} - -static PyObject *__pyx_getprop_5_geod_4Geod_proj_version(PyObject *o, void *x) { - return __pyx_pf_5_geod_4Geod_12proj_version___get__(o); -} - -static int __pyx_setprop_5_geod_4Geod_proj_version(PyObject *o, PyObject *v, void *x) { - if (v) { - return __pyx_pf_5_geod_4Geod_12proj_version_1__set__(o, v); - } - else { - return __pyx_pf_5_geod_4Geod_12proj_version_2__del__(o); - } -} - static PyMethodDef __pyx_methods_5_geod_Geod[] = { {__Pyx_NAMESTR("__reduce__"), (PyCFunction)__pyx_pf_5_geod_4Geod_1__reduce__, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_5_geod_4Geod_1__reduce__)}, - {__Pyx_NAMESTR("_fwd"), (PyCFunction)__pyx_pf_5_geod_4Geod_2_fwd, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_5_geod_4Geod_2_fwd)}, + {__Pyx_NAMESTR("_fwd"), (PyCFunction)__pyx_pf_5_geod_4Geod_2_fwd, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, {__Pyx_NAMESTR("_inv"), (PyCFunction)__pyx_pf_5_geod_4Geod_3_inv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_5_geod_4Geod_3_inv)}, {__Pyx_NAMESTR("_npts"), (PyCFunction)__pyx_pf_5_geod_4Geod_4_npts, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_5_geod_4Geod_4_npts)}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_5_geod_Geod[] = { - {(char *)"geodstring", __pyx_getprop_5_geod_4Geod_geodstring, __pyx_setprop_5_geod_4Geod_geodstring, 0, 0}, - {(char *)"proj_version", __pyx_getprop_5_geod_4Geod_proj_version, __pyx_setprop_5_geod_4Geod_proj_version, 0, 0}, - {0, 0, 0, 0, 0} -}; - static PyNumberMethods __pyx_tp_as_number_Geod = { 0, /*nb_add*/ 0, /*nb_subtract*/ @@ -2961,17 +2576,17 @@ static PyTypeObject __pyx_type_5_geod_Geod = { 0, /*tp_getattro*/ 0, /*tp_setattro*/ &__pyx_tp_as_buffer_Geod, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_5_geod_Geod, /*tp_traverse*/ - __pyx_tp_clear_5_geod_Geod, /*tp_clear*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_5_geod_Geod, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_5_geod_Geod, /*tp_getset*/ + 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -3012,25 +2627,20 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0}, - {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0}, - {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0}, - {&__pyx_n_s__AttributeError, __pyx_k__AttributeError, sizeof(__pyx_k__AttributeError), 0, 0, 1, 1}, + {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0}, + {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0}, + {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0}, {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1}, - {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1}, {&__pyx_n_s____class__, __pyx_k____class__, sizeof(__pyx_k____class__), 0, 0, 1, 1}, {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, - {&__pyx_n_s____version__, __pyx_k____version__, sizeof(__pyx_k____version__), 0, 0, 1, 1}, - {&__pyx_n_s___dg2rad, __pyx_k___dg2rad, sizeof(__pyx_k___dg2rad), 0, 0, 1, 1}, {&__pyx_n_s___doublesize, __pyx_k___doublesize, sizeof(__pyx_k___doublesize), 0, 0, 1, 1}, - {&__pyx_n_s___rad2dg, __pyx_k___rad2dg, sizeof(__pyx_k___rad2dg), 0, 0, 1, 1}, - {&__pyx_n_s__ascii, __pyx_k__ascii, sizeof(__pyx_k__ascii), 0, 0, 1, 1}, + {&__pyx_n_s__a, __pyx_k__a, sizeof(__pyx_k__a), 0, 0, 1, 1}, {&__pyx_n_s__az, __pyx_k__az, sizeof(__pyx_k__az), 0, 0, 1, 1}, {&__pyx_n_s__degrees, __pyx_k__degrees, sizeof(__pyx_k__degrees), 0, 0, 1, 1}, {&__pyx_n_s__dist, __pyx_k__dist, sizeof(__pyx_k__dist), 0, 0, 1, 1}, - {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1}, - {&__pyx_n_s__geodstring, __pyx_k__geodstring, sizeof(__pyx_k__geodstring), 0, 0, 1, 1}, + {&__pyx_n_s__es, __pyx_k__es, sizeof(__pyx_k__es), 0, 0, 1, 1}, + {&__pyx_n_s__f, __pyx_k__f, sizeof(__pyx_k__f), 0, 0, 1, 1}, {&__pyx_n_s__lat1, __pyx_k__lat1, sizeof(__pyx_k__lat1), 0, 0, 1, 1}, {&__pyx_n_s__lat2, __pyx_k__lat2, sizeof(__pyx_k__lat2), 0, 0, 1, 1}, {&__pyx_n_s__lats, __pyx_k__lats, sizeof(__pyx_k__lats), 0, 0, 1, 1}, @@ -3044,12 +2654,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s__math, __pyx_k__math, sizeof(__pyx_k__math), 0, 0, 1, 1}, {&__pyx_n_s__npts, __pyx_k__npts, sizeof(__pyx_k__npts), 0, 0, 1, 1}, {&__pyx_n_s__radians, __pyx_k__radians, sizeof(__pyx_k__radians), 0, 0, 1, 1}, + {&__pyx_n_s__sphere, __pyx_k__sphere, sizeof(__pyx_k__sphere), 0, 0, 1, 1}, + {&__pyx_n_s__v, __pyx_k__v, sizeof(__pyx_k__v), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_AttributeError = __Pyx_GetName(__pyx_b, __pyx_n_s__AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; @@ -3059,61 +2669,33 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants"); - /* "_geod.pyx":48 + /* "_geod.pyx":75 * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenlons//_doublesize * lonsdata = londata */ - __pyx_k_tuple_3 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_3)); - __Pyx_INCREF(((PyObject *)__pyx_kp_s_2)); - PyTuple_SET_ITEM(__pyx_k_tuple_3, 0, ((PyObject *)__pyx_kp_s_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3)); - - /* "_geod.pyx":73 - * # check for NaN. - * if self.geodesic_t.ALPHA21 != self.geodesic_t.ALPHA21: - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') # <<<<<<<<<<<<<< - * if radians: - * lonsdata[i] = self.geodesic_t.p2.v - */ - __pyx_k_tuple_5 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_5)); - __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); - PyTuple_SET_ITEM(__pyx_k_tuple_5, 0, ((PyObject *)__pyx_kp_s_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5)); + __pyx_k_tuple_4 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_4)); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_3)); + PyTuple_SET_ITEM(__pyx_k_tuple_4, 0, ((PyObject *)__pyx_kp_s_3)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3)); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4)); - /* "_geod.pyx":103 + /* "_geod.pyx":137 * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenlons//_doublesize * lonsdata = londata */ - __pyx_k_tuple_7 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_7)); - __Pyx_INCREF(((PyObject *)__pyx_kp_s_2)); - PyTuple_SET_ITEM(__pyx_k_tuple_7, 0, ((PyObject *)__pyx_kp_s_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7)); - - /* "_geod.pyx":123 - * geod_inv(&self.geodesic_t) - * if self.geodesic_t.DIST != self.geodesic_t.DIST: # check for NaN - * raise ValueError('undefined inverse geodesic (may be an antipodal point)') # <<<<<<<<<<<<<< - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) - */ - __pyx_k_tuple_8 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_8)); - __Pyx_INCREF(((PyObject *)__pyx_kp_s_4)); - PyTuple_SET_ITEM(__pyx_k_tuple_8, 0, ((PyObject *)__pyx_kp_s_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8)); + __pyx_k_tuple_6 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_6)); + __Pyx_INCREF(((PyObject *)__pyx_kp_s_3)); + PyTuple_SET_ITEM(__pyx_k_tuple_6, 0, ((PyObject *)__pyx_kp_s_3)); + __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3)); + __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6)); __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -3139,6 +2721,7 @@ PyMODINIT_FUNC PyInit__geod(void) PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; + double __pyx_t_4; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -3189,140 +2772,133 @@ PyMODINIT_FUNC PyInit__geod(void) /*--- Variable export code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ - if (PyType_Ready(&__pyx_type_5_geod_Geod) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_SetAttrString(__pyx_m, "Geod", (PyObject *)&__pyx_type_5_geod_Geod) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type_5_geod_Geod) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetAttrString(__pyx_m, "Geod", (PyObject *)&__pyx_type_5_geod_Geod) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_5_geod_Geod = &__pyx_type_5_geod_Geod; /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":1 + /* "_geod.pyx":1 * import math # <<<<<<<<<<<<<< * - * _dg2rad = math.radians(1.) + * cdef double _dg2rad, _rad2dg */ - __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__math), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__math), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__math, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s__math, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":3 - * import math + /* "_geod.pyx":5 + * cdef double _dg2rad, _rad2dg * * _dg2rad = math.radians(1.) # <<<<<<<<<<<<<< * _rad2dg = math.degrees(1.) * _doublesize = sizeof(double) */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__math); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__math); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__radians); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__radians); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - if (PyObject_SetAttr(__pyx_m, __pyx_n_s___dg2rad, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_5_geod__dg2rad = __pyx_t_4; - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":4 + /* "_geod.pyx":6 * * _dg2rad = math.radians(1.) * _rad2dg = math.degrees(1.) # <<<<<<<<<<<<<< * _doublesize = sizeof(double) - * __version__ = "1.8.9" + * */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__math); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__math); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__degrees); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__degrees); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - if (PyObject_SetAttr(__pyx_m, __pyx_n_s___rad2dg, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_5_geod__rad2dg = __pyx_t_4; - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":5 + /* "_geod.pyx":7 * _dg2rad = math.radians(1.) * _rad2dg = math.degrees(1.) * _doublesize = sizeof(double) # <<<<<<<<<<<<<< - * __version__ = "1.8.9" * + * cdef extern from "Python.h": */ - __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(double))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(double))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s___doublesize, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s___doublesize, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":6 - * _rad2dg = math.degrees(1.) - * _doublesize = sizeof(double) - * __version__ = "1.8.9" # <<<<<<<<<<<<<< - * - * cdef extern from "stdlib.h": - */ - if (PyObject_SetAttr(__pyx_m, __pyx_n_s____version__, ((PyObject *)__pyx_kp_s_10)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "_geod.pyx":27 - * return (self.__class__,(self.geodstring,)) + /* "_geod.pyx":59 + * return (self.__class__,(initstring,)) * - * def _fwd(self, object lons, object lats, object az, object dist, radians=False): # <<<<<<<<<<<<<< - * """ - * forward transformation - determine longitude, latitude and back azimuth + * def _fwd(self, lons, lats, az, dist, radians=False): # <<<<<<<<<<<<<< + * cdef Py_ssize_t buflenlons, buflenlats, buflenaz, buflend, ndim, i + * cdef double *lonsdata, *latsdata, *azdata, *distdata */ - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_k_1 = __pyx_t_1; + __pyx_k_2 = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - /* "_geod.pyx":83 - * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21 + /* "_geod.pyx":116 + * azdata[i] = _rad2dg*self.arc.az21 * * def _inv(self, object lons1, object lats1, object lons2, object lats2, radians=False): # <<<<<<<<<<<<<< * """ * inverse transformation - return forward and back azimuths, plus distance */ - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_k_6 = __pyx_t_1; + __pyx_k_5 = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - /* "_geod.pyx":134 - * azdata[i] = self.geodesic_t.DIST + /* "_geod.pyx":175 + * azdata[i] = self.arc.S * * def _npts(self, double lon1, double lat1, double lon2, double lat2, int npts, radians=False): # <<<<<<<<<<<<<< * """ * given initial and terminus lat/lon, find npts intermediate points.""" */ - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_k_9 = __pyx_t_1; + __pyx_k_8 = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; /* "_geod.pyx":1 - * # Make changes to this file, not the c-wrappers that Pyrex generates. # <<<<<<<<<<<<<< + * import math # <<<<<<<<<<<<<< * - * include "_pyproj.pxi" + * cdef double _dg2rad, _rad2dg */ __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); @@ -3381,6 +2957,32 @@ static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) { return result; } +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) @@ -3473,32 +3075,6 @@ static int __Pyx_ParseOptionalKeywords( return -1; } -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; PyThreadState *tstate = PyThreadState_GET(); @@ -3660,76 +3236,6 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } #endif -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *local_type, *local_value, *local_tb; - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - PyErr_NormalizeException(&local_type, &local_value, &local_tb); - if (unlikely(tstate->curexc_type)) - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - #endif - *type = local_type; - *value = local_value; - *tb = local_tb; - Py_INCREF(local_type); - Py_INCREF(local_value); - Py_INCREF(local_tb); - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - /* Make sure tstate is in a consistent state when we XDECREF - these objects (XDECREF may run arbitrary code). */ - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - - -static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) { - PyThreadState *tstate = PyThreadState_GET(); - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} - -static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) { PyObject *py_import = 0; PyObject *empty_list = 0; diff --git a/geodesic/_geod.pyx b/geodesic/_geod.pyx new file mode 100644 index 000000000..e703a2064 --- /dev/null +++ b/geodesic/_geod.pyx @@ -0,0 +1,218 @@ +import math + +cdef double _dg2rad, _rad2dg + +_dg2rad = math.radians(1.) +_rad2dg = math.degrees(1.) +_doublesize = sizeof(double) + +cdef extern from "Python.h": + int PyObject_AsWriteBuffer(object, void **rbuf, Py_ssize_t *len) + +cdef extern from "project.h": + # Earth's elliptical constants. + # Element a units, typically meters, defines the units for + # all other length elements. + ctypedef struct PROJ_ELLIPS: + double a # semi-major axis or sphere radius + double f # ellpsoid flattening, if == 0 then sphere + double es # eccentricity squared, if == 0 then sphere + double one_es # 1-es + # 3D Geographic coordinate + ctypedef struct PROJ_PT_LPH: + double lam # longitude in radians + double phi # latitude in radians + double h # height above the ellpsoid + # Geodesic line structure + # Azimuths in radians clockwise from North. Distance units the + # same as element a in structure ellps. + ctypedef struct PROJ_LINE: + PROJ_PT_LPH *pt1 # pointer to geographic coord of first location + double az12 # azimuth from pt1 to pt2 (forward) + PROJ_PT_LPH *pt2 # pointer to geographic coord of second location + double az21 # azimuth from pt2 to pt1 (back) + double S # geodetic distance between points + PROJ_ELLIPS *E # pointer to ellpsoid constants + void proj_sp_inv(PROJ_LINE * A) + void proj_sp_fwd(PROJ_LINE * A) + void proj_in_fwd(PROJ_LINE * A) + void proj_in_inv(PROJ_LINE * A) + +cdef class Geod: + cdef PROJ_LINE arc + cdef PROJ_ELLIPS ellps + cdef PROJ_PT_LPH pt1, pt2 + + def __cinit__(self, object a, object f, object es, object sphere): + self.sphere = sphere + self.ellps.a = a + self.ellps.f = f + self.ellps.es = es + self.ellps.one_es = 1.-es + self.arc.E = &self.ellps + + def __reduce__(self): + """special method that allows pyproj.Geod instance to be pickled""" + initstring = '+a=%s +f=%s +es=%s' % (self.a, self.f, self.es) + return (self.__class__,(initstring,)) + + def _fwd(self, lons, lats, az, dist, radians=False): + cdef Py_ssize_t buflenlons, buflenlats, buflenaz, buflend, ndim, i + cdef double *lonsdata, *latsdata, *azdata, *distdata + cdef void *londata, *latdata, *azdat, *distdat + cdef int err + # if buffer api is supported, get pointer to data buffers. + if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0: + raise RuntimeError + if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: + raise RuntimeError + if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: + raise RuntimeError + if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0: + raise RuntimeError + # process data in buffer + if not buflenlons == buflenlats == buflenaz == buflend: + raise RuntimeError("Buffer lengths not the same") + ndim = buflenlons//_doublesize + lonsdata = londata + latsdata = latdata + azdata = azdat + distdata = distdat + for i from 0 <= i < ndim: + if radians: + self.pt1.lam = lonsdata[i] + self.pt1.phi = latsdata[i] + self.pt1.h = 0. + self.arc.pt1 = &self.pt1 + self.arc.az12 = azdata[i] + self.arc.S = distdata[i] + else: + self.pt1.lam = _dg2rad*lonsdata[i] + self.pt1.phi = _dg2rad*latsdata[i] + self.pt1.h = 0. + self.arc.pt1 = &self.pt1 + self.arc.az12 = _dg2rad*azdata[i] + self.arc.S = distdata[i] +# Computes the location of the second point in the structure +# based on the first point's location and the distance and +# forward azumuth + if self.sphere: + proj_sp_fwd(&self.arc) + else: + proj_in_fwd(&self.arc) + if radians: + self.pt2.lam = self.arc.pt2.lam + self.pt2.phi = self.arc.pt2.phi + lonsdata[i] = self.pt2.lam + latsdata[i] = self.pt2.phi + azdata[i] = self.arc.az21 + else: + self.pt2.lam = _rad2dg*self.arc.pt2.lam + self.pt2.phi = _rad2dg*self.arc.pt2.phi + lonsdata[i] = self.pt2.lam + latsdata[i] = self.pt2.phi + azdata[i] = _rad2dg*self.arc.az21 + + def _inv(self, object lons1, object lats1, object lons2, object lats2, radians=False): + """ + inverse transformation - return forward and back azimuths, plus distance + between an initial and terminus lat/lon pair. + if radians=True, lons/lats are radians instead of degrees. + """ + cdef Py_ssize_t buflenlons, buflenlats, buflenaz, buflend, ndim, i + cdef double *lonsdata, *latsdata, *azdata, *distdata + cdef void *londata, *latdata, *azdat, *distdat + cdef int err + # if buffer api is supported, get pointer to data buffers. + if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0: + raise RuntimeError + if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: + raise RuntimeError + if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: + raise RuntimeError + if PyObject_AsWriteBuffer(lats2, &distdat, &buflend) <> 0: + raise RuntimeError + # process data in buffer + if not buflenlons == buflenlats == buflenaz == buflend: + raise RuntimeError("Buffer lengths not the same") + ndim = buflenlons//_doublesize + lonsdata = londata + latsdata = latdata + azdata = azdat + distdata = distdat + errmsg = 'undefined inverse geodesic (may be an antipodal point)' + for i from 0 <= i < ndim: + if radians: + self.pt1.lam = lonsdata[i] + self.pt1.phi = latsdata[i] + self.pt1.h = 0. + self.pt2.lam = azdata[i] + self.pt2.phi = distdata[i] + self.arc.pt1 = &self.pt1 + self.arc.pt2 = &self.pt2 + else: + self.pt1.lam = _dg2rad*lonsdata[i] + self.pt1.phi = _dg2rad*latsdata[i] + self.pt1.h = 0. + self.pt2.lam = _dg2rad*azdata[i] + self.pt2.phi = _dg2rad*distdata[i] + self.arc.pt1 = &self.pt1 + self.arc.pt2 = &self.pt2 +# Computes distance, forward and back azimuths in structure +# for the two end points of the geodesic line + if self.sphere: + proj_sp_inv(&self.arc) + else: + proj_in_inv(&self.arc) + if radians: + lonsdata[i] = self.arc.az12 + latsdata[i] = self.arc.az21 + else: + lonsdata[i] = _rad2dg*self.arc.az12 + latsdata[i] = _rad2dg*self.arc.az21 + azdata[i] = self.arc.S + + def _npts(self, double lon1, double lat1, double lon2, double lat2, int npts, radians=False): + """ + given initial and terminus lat/lon, find npts intermediate points.""" + cdef int i + cdef double del_s + if radians: + self.pt1.lam = lon1 + self.pt1.phi = lat1 + self.pt1.h = 0. + self.pt2.lam = lon2 + self.pt2.phi = lat2 + self.arc.pt1 = &self.pt1 + self.arc.pt2 = &self.pt2 + else: + self.pt1.lam = _dg2rad*lon1 + self.pt1.phi = _dg2rad*lat1 + self.pt1.h = 0. + self.pt2.lam = _dg2rad*lon2 + self.pt2.phi = _dg2rad*lat2 + self.arc.pt1 = &self.pt1 + self.arc.pt2 = &self.pt2 + if self.sphere: + proj_sp_inv(&self.arc) + else: + proj_in_inv(&self.arc) + # distance increment. + del_s = self.arc.S/(npts+1) + # initialize output tuples. + lats = () + lons = () + # loop over intermediate points, compute lat/lons. + for i from 1 <= i < npts+1: + self.arc.S = i*del_s + if self.sphere: + proj_sp_fwd(&self.arc) + else: + proj_in_fwd(&self.arc) + if radians: + lats = lats + (self.pt2.phi,) + lons = lons + (self.pt2.lam.v,) + else: + lats = lats + (_rad2dg*self.pt2.phi,) + lons = lons + (_rad2dg*self.pt2.lam,) + return lons, lats diff --git a/geodesic/proj_adjlon.c b/geodesic/proj_adjlon.c new file mode 100644 index 000000000..8001ab819 --- /dev/null +++ b/geodesic/proj_adjlon.c @@ -0,0 +1,70 @@ +/* +** libgeodesy -- library of geodesy functions +** +** Copyright (c) 2003, 2006, 2009 Gerald I. Evenden +*/ +static const char + PROG_ID[] = "$Id: proj_adjlon.c,v 5.4 2009/05/05 23:40:30 gie Exp gie $"; +/* +** 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. +*/ +/** + * @file proj_adjlon.c + * @brief Reduce argument to range +/- PI + * @author Gerald I. Evenden +*/ +#include +#define DBL_EPSILON 1e-14 +/** + * @brief reduce longitude to a range of +- 180 (+- pi) + * @param lon longitude + * @return reduced longitude value + * + * This seems like an expensive means of doing this problem where an + * iterative add/subtraction might seem the more reasonable approach: + * However, cases where a carelessly entered and quite large number + * can bring a program to its knees with the iterative method. + * May be a bit slower but it is safer. + */ +double proj_adjlon(double lon) { + double x; + + if ((fabs(x = lon * M_1_PI) - 1.) > 3.*DBL_EPSILON) { + x = 0.5 * (x + 1.0); + lon = ((x - floor(x)) - 0.5) * 2 * M_PI; + } + return (lon); +} + +/* +** $Log: proj_adjlon.c,v $ +** Revision 5.4 2009/05/05 23:40:30 gie +** restored config.h header +** +** Revision 5.3 2009/05/03 01:00:29 gie +** removed config.h reference +** +** Revision 5.2 2009/05/01 17:54:48 gie +** added conditional compile +** +** Revision 5.1 2009/04/30 20:47:47 gie +** *** empty log message *** +** +*/ diff --git a/geodesic/proj_in_fwd.c b/geodesic/proj_in_fwd.c new file mode 100644 index 000000000..0b263377c --- /dev/null +++ b/geodesic/proj_in_fwd.c @@ -0,0 +1,96 @@ +/* +** Copyright (c) 2009 Gerald I. Evenden +*/ +static const char + PROJ_ID[] = "$Id: proj_in_fwd.c,v 5.1 2009/04/30 20:47:47 gie Exp gie $"; +/* +** 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. +*/ +/** @file proj_in_fwd.c + * @brief compute the forward geodesic for an ellipsoid + */ +#include +#include +#define EPS 5e-14 +/** + * @brief forward geodesic computation + * @param A pointer to geodesic line structure + */ +void proj_in_fwd(PROJ_LINE * A) { + double c, d, e, r, x, y, cf, sa, cu, sf, cy, cz, su, tu, sy, c2a, flat; + +/* *** SOLUTION OF THE GEODETIC DIRECT PROBLEM AFTER T.VINCENTY */ +/* *** MODIFIED RAINSFORD'S METHOD WITH HELMERT'S ELLIPTICAL TERMS */ +/* *** EFFECTIVE IN ANY AZIMUTH AND AT ANY DISTANCE SHORT OF ANTIPODAL */ + +/* *** A IS THE SEMI-MAJOR AXIS OF THE REFERENCE ELLIPSOID */ +/* *** F IS THE FLATTENING OF THE REFERENCE ELLIPSOID */ +/* *** LATITUDES AND LONGITUDES IN RADIANS POSITIVE NORTH AND EAST */ +/* *** AZIMUTHS IN RADIANS CLOCKWISE FROM NORTH */ +/* *** GEODESIC DISTANCE S ASSUMED IN UNITS OF SEMI-MAJOR AXIS A */ + +/* *** PROGRAMMED FOR CDC-6600 BY LCDR L.PFEIFER NGS ROCKVILLE MD 20FEB75 */ +/* *** MODIFIED FOR SYSTEM 360 BY JOHN G GERGEN NGS ROCKVILLE MD 750608 */ + + r = 1.0 - (flat = A->E->f); + tu = r * sin(A->pt1->phi) / cos(A->pt1->phi); + sf = sin(A->az12); + cf = cos(A->az12); + A->az21 = 0.0; + if (cf != 0.0) + A->az21 = atan2(tu, cf) * 2.0; + cu = 1.0 / sqrt(tu * tu + 1.0); + su = tu * cu; + sa = cu * sf; + c2a = -sa * sa + 1.0; + x = sqrt((1.0 / r / r - 1.0) * c2a + 1.0) + 1.0; + x = (x - 2.0) / x; + c = 1.0 - x; + c = (x * x / 4.0 + 1) / c; + d = (x * .375 * x - 1.0) * x; + tu = A->S / A->E->a / r / c; + y = tu; + do { + sy = sin(y); + cy = cos(y); + cz = cos(A->az21 + y); + e = cz * cz * 2.0 - 1.0; + c = y; + x = e * cy; + y = e + e - 1.0; + y = (((sy * sy * 4.0 - 3.0) * y * cz * d / 6.0 + x) * d / 4.0 - cz) * + sy * d + tu; + } while (fabs(y - c) > EPS); + A->az21 = cu * cy * cf - su * sy; + A->pt2->phi = atan2(su * cy + cu * sy * cf, r * hypot(sa, A->az21)); + x = atan2(sy * sf, cu * cy - su * sy * cf); + c = ((c2a * -3.0 + 4.0) * flat + 4.0) * c2a * flat / 16.0; + d = ((e * cy * c + cz) * sy * c + y) * sa; + A->pt2->lam = A->pt1->lam + x - (1.0 - c) * d * flat; + A->az21 = atan2(sa, A->az21) + M_PI; + return; +} + +/* + * $Log: proj_in_fwd.c,v $ + * Revision 5.1 2009/04/30 20:47:47 gie + * *** empty log message *** + * +*/ diff --git a/geodesic/proj_in_inv.c b/geodesic/proj_in_inv.c new file mode 100644 index 000000000..6a55e8ee8 --- /dev/null +++ b/geodesic/proj_in_inv.c @@ -0,0 +1,394 @@ +/* +** Copyright (c) 2009 Gerald I. Evenden +*/ +static const char + PROJ_ID[] = "$Id: proj_in_inv.c,v 5.2 2009/05/06 18:46:51 gie Exp gie $"; +/* +** 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. +*/ +/** @file proj_in_inv.c + * @brief compute the forward geodesic for an ellipsoid + */ +#include +#include +#include +#define TOL0 5e-15 +#define TOL1 5e-14 +#define TOL2 .007 +#define TT 5e-13 +#define TTA 5e-15 +/** + * @brief Distance along meridian + * @param[in] esq ellipsoid eccentricity squared + * @param[in] phi1 first latitude + * @param[in] phi2 second latitude + * @return distance along meridian between phi1 and phi2 + */ +static double merid_arc(double esq, double phi1, double phi2) { + double a, b, c, d, e, f, e2, e4, e6, e8, s1, s2, t1, t2, + t3, t4, t5, da, db, dc, dd, de, df, ex; + int flag; +/* INPUT PARAMETERS: */ +/* ----------------- */ +/* ESQ ECCENTRICITY SQUARED FOR REFERENCE ELLIPSOID */ +/* P1 LAT STATION 1 */ +/* P2 LAT STATION 2 */ +/* return value */ +/* ------------------ */ +/* ARC GEODETIC DISTANCE or unit ellipse */ +/* CHECK FOR A 90 DEGREE LOOKUP */ + flag = 0; + s1 = fabs(phi1); + s2 = fabs(phi2); + flag = (s1 <= TTA) && (fabs(s2 - M_PI_2) < TTA); + da = phi2 - phi1; + s1 = 0.; + s2 = 0.; +/* COMPUTE THE LENGTH OF A MERIDIONAL ARC BETWEEN TWO LATITUDES */ + e2 = esq; + e4 = e2 * e2; + e6 = e4 * e2; + e8 = e6 * e2; + ex = e8 * e2; + t1 = e2 * .75; + t2 = e4 * .234375; + t3 = e6 * .068359375; + t4 = e8 * .01922607421875; + t5 = ex * .00528717041015625; + a = t1 + 1. + t2 * 3. + t3 * 10. + t4 * 35. + t5 * 126.; + if (!flag) { + b = t1 + t2 * 4. + t3 * 15. + t4 * 56. + t5 * 210.; + c = t2 + t3 * 6. + t4 * 28. + t5 * 120.; + d = t3 + t4 * 8. + t5 * 45.; + e = t4 + t5 * 10.; + f = t5; + db = sin(phi2 * 2.) - sin(phi1 * 2.); + dc = sin(phi2 * 4.) - sin(phi1 * 4.); + dd = sin(phi2 * 6.) - sin(phi1 * 6.); + de = sin(phi2 * 8.) - sin(phi1 * 8.); + df = sin(phi2 * 10.) - sin(phi1 * 10.); + /* COMPUTE THE S2 PART OF THE SERIES EXPANSION */ + s2 = -db * b / 2. + dc * c / 4. - dd * d / 6. + + de * e / 8. - df * f / 10.; + } +/* COMPUTE THE S1 PART OF THE SERIES EXPANSION */ + s1 = da * a; +/* COMPUTE THE ARC LENGTH */ + return ((1. - esq) * (s1 + s2)); +} + +/** + * @brief Determines internal factors + * @param[in] flat ellipsoid flattening + * @param[in] esq ellipsoid eccentricity squared + * @param[in] dlam difference in longitude between points + * @param[in] az12 azimuth from p1 to p2 + * @param[out] az21 azimuth from p2 to p1 + * @param[out] ao constant + * @param[out] bo constant + * @param[out] sms equitorial geodesic + */ +static void +func_loa(double flat, double esq, double dlam, double az12, + double *az21, double *ao, double *bo, double *sms) { + /* Local variables */ + double s, c2, t1, t2, u2, t4, u4, t6, u6, t8, u8, cs, az, dlon, cons; + int iter; + double esqp; + +/* INPUT PARAMETERS: */ +/* ----------------- */ +/* FLAT FLATTENING (0.0033528 ... ) */ +/* ESQ ECCENTRICITY SQUARED FOR REFERENCE ELLIPSOID */ +/* DLAM LON DIFFERENCE */ +/* AZ12 AZI AT STA 1 -> STA 2 */ + +/* OUTPUT PARAMETERS: */ +/* ------------------ */ +/* AZ21 AZ2 AT STA 2 -> STA 1 */ +/* AO CONST */ +/* BO CONST */ +/* SMS DISTANCE ... EQUATORIAL - GEODESIC (S - s) "SMS" */ + + dlon = fabs(dlam); + cons = (M_PI - dlon) / (M_PI * flat); +/* COMPUTE AN APPROXIMATE AZ */ + az = asin(cons); + t1 = 1.; + t2 = flat * -.25 * (flat + 1. + flat * flat); + t4 = flat * .1875 * flat * (flat * 2.25 + 1.); + t6 = flat * -.1953125 * flat * flat; + iter = 0; + do { + s = cos(az); + c2 = s * s; + /* COMPUTE NEW AO */ + *ao = t1 + c2 * (t2 + c2 * (t4 + c2 * t6)); + cs = cons / *ao; + s = asin(cs); + if (fabs(s - az) < TT) + break; + az = s; + } while (++iter <= 6); + az12 = s; + if (dlam < 0.) + az12 = M_PI * 2. - az12; + *az21 = M_PI * 2. - az12; +/* EQUATORIAL - GEODESIC (S - s) "SMS" */ + esqp = esq / (1. - esq); + s = cos(az12); + u2 = esqp * s * s; + u4 = u2 * u2; + u6 = u4 * u2; + u8 = u6 * u2; + t1 = 1.; + t2 = u2 * .25; + t4 = u4 * -.046875; + t6 = u6 * .01953125; + t8 = u8 * -.01068115234375; + *bo = t1 + t2 + t4 + t6 + t8; + s = sin(az12); + *sms = M_PI * (1. - flat * fabs(s) * *ao - *bo * (1. - flat)); + return; +} + +/** + * @brief inverse geodesic computation for elliptical earth + * @param A pointer to geodesic line structure + */ +void proj_in_inv(PROJ_LINE * A) { + double b, w, z, a2, b2, a4, f0, f2, f3, f4, a6, b4, b6, r1, f, esq, + r2, q2, u1, u2, t4, q4, t6, q6, r3, aa, ab, bb, ao, bo, qo, ss, + xy, xz, cu1, cu2, su1, su2, arc, sig, equ, sms, csig, clon, dlon, + ssig, epsq, slon, tana1, tana2, sina1, sina2; + int kount; + double sinalf, alimit; +/* solution of the geodetic inverse problem after t. vincenty */ +/* modified rainsford's method with helmert's elliptical terms */ +/* effective in any azimuth and at any distance short of antipocal */ +/* from/to stations must not be the geographic pole. */ +/* parameter a is the semi-major axis of the reference ellipsoid */ +/* finv=1/f is the inverse flattening of the reference ellipsoid */ +/* latitudes and longitudes in radians positive north and west */ +/* forward and back azimuths returned in radians clockwise from south */ +/* geodesic distance s returned in units of semi-major axis a */ +/* programmed for ibm 360-195 09/23/75 */ + +/* note - note - note - */ +/* 1. do not use for meridional arcs and be careful on the equator. */ +/* 2. azimuths are from north(+) clockwise and */ +/* 3. longitudes are positive east(+) */ + +/* input parameters: */ +/* ----------------- */ +/* a semi-major axis of reference ellipsoid meters */ +/* f flattening (0.0033528...) */ +/* esq eccentricity squared */ +/* p1 lat station 1 radians */ +/* e1 lon station 1 radians */ +/* p2 lat station 2 radians */ +/* e2 lon station 2 radians */ + +/* output parameters: */ +/* ------------------ */ +/* az1 azi at sta 1 -> sta 2 radians */ +/* az2 azi at sta 2 -> sta 1 radians */ +/* s geodetic dist between sta(s) 1 & 2 meters */ + +/* local variables and constants: */ +/* ------------------------------ */ +/* aa constant from subroutine gpnloa */ +/* alimit equatorial arc distance along the equator (radians) */ +/* arc meridional arc distance latitude p1 to p2 (in meters) */ +/* az1 azimuth forward (in radians) */ +/* az2 azimuth back (in radians) */ +/* bb constant from subroutine gpnloa */ +/* dlon temporary value for difference in longitude (radians) */ +/* equ equatorial distance (in meters) */ +/* r1,r2 temporary variables */ +/* s ellipsoid distance (in meters) */ +/* sms equatorial - geodesic distance (S - s) "Sms" */ +/* ss temporary variable */ +/* TOL0 tolerance for checking computation value */ +/* TOL1 tolerance for checking a real zero value */ +/* TOL2 tolerance for close to zero value */ + +/* test the longitude difference with TOL1 */ +/* TOL1 is approximately 0.000000001 arc seconds */ + f = A->E->f; + esq = A->E->es; + ss = A->pt2->lam - A->pt1->lam; + if (fabs(ss) < TOL1) { + r2 = A->pt2->phi; + r1 = A->pt1->phi; + arc = merid_arc(esq, r1, r2); + A->S = A->E->a * fabs(arc); + if (A->pt2->phi > A->pt1->phi) { + A->az12 = 0.; + A->az21 = M_PI; + } else { + A->az12 = M_PI; + A->az21 = 0.; + } + return; + } +/* test for longitude over 180 degrees */ + dlon = A->pt2->lam - A->pt1->lam; + + if (dlon >= 0.) { + if ((M_PI <= dlon) && (dlon < (2. * M_PI))) + dlon -= (2. * M_PI); + } else { + ss = fabs(dlon); + if (M_PI <= ss && ss < (2. * M_PI)) + dlon += (2. * M_PI); + } + ss = fabs(dlon); + if (ss > M_PI) + ss = (2. * M_PI) - ss; +/* compute the limit in longitude (alimit), it is equal */ +/* to twice the distance from the equator to the pole, */ +/* as measured along the equator (east/west) */ + alimit = M_PI * (1. - f); +/* test for anti-nodal difference */ + if (ss >= alimit) { + r1 = fabs(A->pt1->phi); + r2 = fabs(A->pt2->phi); + /* latitudes r1 & r2 are not near the equator */ + if (!(r1 > TOL2 && r2 > TOL2) && + /* longitude difference is greater than lift-off point */ + /* now check to see if "both" r1 & r2 are on equator */ + !(r1 < TOL1 && r2 > TOL2) && !(r2 < TOL1 && r1 > TOL2)) { + /* check for either r1 or r2 just off the equator but < TOL2 */ + if (r1 > TOL1 || r2 > TOL1) { + A->az12 = 0.; + A->az21 = 0.; + A->S = 0.; + return; + } + /* compute the azimuth to anti-nodal point */ + func_loa(f, esq, dlon, A->az12, &(A->az21), &aa, &bb, &sms); + /* compute the equatorial distance & geodetic */ + equ = fabs(dlon); + A->S = equ - sms; + return; + } + } + f0 = 1. - f; + b = f0; + epsq = esq / (1. - esq); + f2 = f * f; + f3 = f * f2; + f4 = f * f3; +/* the longitude difference */ + dlon = A->pt2->lam - A->pt1->lam; + ab = dlon; +/* the reduced latitudes */ + u1 = f0 * sin(A->pt1->phi) / cos(A->pt1->phi); + u2 = f0 * sin(A->pt2->phi) / cos(A->pt2->phi); + u1 = atan(u1); + u2 = atan(u2); + su1 = sin(u1); + cu1 = cos(u1); + su2 = sin(u2); + cu2 = cos(u2); +/* counter for the iteration operation */ + kount = 0; + do { + clon = cos(ab); + slon = sin(ab); + csig = su1 * su2 + cu1 * cu2 * clon; + ssig = hypot(slon * cu2, su2 * cu1 - su1 * cu2 * clon); + sig = atan2(ssig, csig); + sinalf = cu1 * cu2 * slon / ssig; + w = 1. - sinalf * sinalf; + t4 = w * w; + t6 = w * t4; + /* the coefficients of type a */ + ao = f - f2 * (f + 1. + f2) * w / 4. + f3 * 3. * (f * 9. / 4. + 1.) * + t4 / 16. - f4 * 25. * t6 / 128.; + a2 = f2 * (f + 1. + f2) * w / 4. - f3 * (f * 9. / 4. + 1.) * t4 / 4. + + f4 * 75. * t6 / 256.; + a4 = f3 * (f * 9. / 4. + 1.) * t4 / 32. - f4 * 15. * t6 / 256.; + a6 = f4 * 5. * t6 / 768.; + /* the multiple angle functions */ + qo = 0.; + if (w > TOL0) + qo = su1 * -2. * su2 / w; + q2 = csig + qo; + q4 = q2 * 2. * q2 - 1.; + q6 = q2 * (q2 * 4. * q2 - 3.); + r2 = ssig * 2. * csig; + r3 = ssig * (3. - ssig * 4. * ssig); + /* the longitude difference */ + A->S = + sinalf * (ao * sig + a2 * ssig * q2 + a4 * r2 * q4 + a6 * r3 * q6); + xz = dlon + A->S; + xy = fabs(xz - ab); + ab = dlon + A->S; + } while (xy >= 5e-14 && ++kount <= 7); +/* the coefficients of type b */ + z = epsq * w; + bo = z * (z * (z * (.01953125 - z * 175. / 16384.) - .046875) + .25) + 1.; + b2 = z * (z * (z * (z * 35. / 2048. - .029296875) + .0625) - .25); + b4 = z * z * (z * (.005859375 - z * 35. / 8192.) - .0078125); + b6 = z * z * z * (z * 5. / 6144. - 6.5104166666666663e-4); +/* distance */ + A->S = A->E->a * b * + (bo * sig + b2 * ssig * q2 + b4 * r2 * q4 + b6 * r3 * q6); +/* first compute the az12 & az21 for along the equator */ + if (dlon > M_PI) + dlon -= M_PI * 2.; + if (fabs(dlon) > M_PI) + dlon += M_PI * 2.; + A->az12 = M_PI / 2.; + if (dlon < 0.) + A->az12 *= 3.; + A->az21 = A->az12 + M_PI; + if (A->az21 > M_PI * 2.) + A->az21 -= M_PI * 2.; +/* now compute the az1 & az2 for latitudes not on the equator */ + if (!(fabs(su1) < TOL0 && fabs(su2) < TOL0)) { + tana1 = slon * cu2 / (su2 * cu1 - clon * su1 * cu2); + tana2 = slon * cu1 / (su1 * cu2 - clon * su2 * cu1); + sina1 = sinalf / cu1; + sina2 = -sinalf / cu2; + /* azimuths from north,longitudes positive east */ + A->az12 = atan2(sina1, sina1 / tana1); + A->az21 = M_PI - atan2(sina2, sina2 / tana2); + } + if (A->az12 < 0.) + A->az12 += (2. * M_PI); + if (A->az21 < 0.) + A->az21 += (2. * M_PI); + A->az12 = proj_adjlon(A->az12); + A->az21 = proj_adjlon(A->az21); + return; +} + +/* + * $Log: proj_in_inv.c,v $ + * Revision 5.2 2009/05/06 18:46:51 gie + * updates for Doxygen + * + * Revision 5.1 2009/04/30 20:47:47 gie + * *** empty log message *** + * +*/ diff --git a/geodesic/proj_sp_fwd.c b/geodesic/proj_sp_fwd.c new file mode 100644 index 000000000..561683f78 --- /dev/null +++ b/geodesic/proj_sp_fwd.c @@ -0,0 +1,72 @@ +/* +** Copyright (c) 2009 Gerald I. Evenden +*/ +static const char + PROJ_ID[] = "$Id: proj_sp_fwd.c,v 5.1 2009/04/30 20:47:47 gie Exp gie $"; +/* +** 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. +*/ +/* Procedure to compute the geographic location of a point 1 at + * azimuth A->az12 and distance A->S along a great circle from + * point 0. In addition the back azimuth from 1 to 0 is determined. + * All arguments in radians. + * + * Computation for a spherical earth based upon formulas in "Map + * Projections--A Working Manual," USGS Bulletin 1395, p. 30-31, + * 1987 by John P. Snyder. +*/ +/** @file proj_sp_fwd.c + * @brief compute the forward geodesic for a spherical earth. + * @author Gerald I. Evenden + */ +#include +#include +/** @brief Forward geodesic computation - spherical earth + * @param A pointer to geodesic line structure + * + * Computes the location of the second point in the structure + * based on the first point's location and the distance and + * forward azumuth + */ +void proj_sp_fwd(PROJ_LINE * A) { + double cc, sc, cp, sp, ca, dl, S; + + cc = cos(S = A->S / A->E->a); + sc = sin(S); + cp = cos(A->pt1->phi); + sp = sin(A->pt1->phi); + ca = cos(A->az12); + + A->pt2->phi = asin(sp * cc + cp * sc * ca); + A->pt2->lam = A->pt1->lam + + atan2(sc * sin(A->az12), cp * cc - sp * sc * ca); + dl = A->pt1->lam - A->pt2->lam; + A->az21 = atan2(cp * sin(dl), + cos(A->pt2->phi) * sp - sin(A->pt2->phi) * cp * cos(dl)); + if (fabs(A->pt2->lam) > M_PI) + A->pt2->lam -= copysign(2.*M_PI, A->pt2->lam); +} + +/* + * $Log: proj_sp_fwd.c,v $ + * Revision 5.1 2009/04/30 20:47:47 gie + * *** empty log message *** + * +*/ diff --git a/geodesic/proj_sp_inv.c b/geodesic/proj_sp_inv.c new file mode 100644 index 000000000..45cf479d7 --- /dev/null +++ b/geodesic/proj_sp_inv.c @@ -0,0 +1,96 @@ +/* +** Copyright (c) 2009 Gerald I. Evenden +*/ +static const char + PROJ_ID[] = "$Id: proj_sp_inv.c,v 5.1 2009/04/30 20:47:47 gie Exp gie $"; +/* +** 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. +*/ +/* Procedure to compute the distance, dist, along a great circle + * between point A->pt1.phi-A->pt1.lam and point A->pt2.phi-A->pt2.lam. In addition, + * the forward azimuth, Az_01, of the great circle at point 0 and + * the back azimuth, Az_10, at point 1 are returned. All arguments + * and results are in radians. + * + * Computation for a spherical earth based upon formulas in "Map + * Projections--A Working Manual," USGS Bulletin 1395, p. 30-31, + * 1987 by John P. Snyder. +*/ +/** @file proj_sp_inv.c + * @brief compute the inverse geodesic for a spherical earth. + * @author Gerald I. Evenden + */ +#include +#include +/** @brief Inverse geodesic computation - spherical earth + * @param A pointer to geodesic line structure + * @author Gerald I. Evenden + * + * Computes distance, forward and back azimuths in structure + * for the two end points of the geodesic line + * + * Algorithm based upon J. Snyder's method, described in "Map Projection--- + * A Working Manual", USGS Prof. Paper 1396, p. 30, which minimized + * loss of precision for closely spaced points. + * Comments in body of procedure note alternative computation to maintain + * precision at the apod. + */ +void proj_sp_inv(PROJ_LINE * A) { + double dlam, dphi, shp, shl, c1, c0, s1, s0; + + dlam = A->pt2->lam - A->pt1->lam; + dphi = A->pt2->phi - A->pt1->phi; + c1 = cos(A->pt2->phi); + c0 = cos(A->pt1->phi); + s1 = sin(A->pt2->phi); + s0 = sin(A->pt1->phi); + shp = sin(0.5 * dphi); + shl = sin(0.5 * dlam); +/* + * the following is suggestion of JP Snyder for greater precision + * for points close together compared to the cosine version. + */ + A->S = 2. * A->E->a * asin(sqrt(shp * shp + c0 * c1 * shl * shl)); +/* + * the follewing is purported to maintain precison at both nearby + * points and those at apodal distances. However, limited testing + * shows precious little difference at the apode it remains as + * a referenced alternative. + */ +// { double t = cos(dlam); +// A->S = A->E->a * atan2(hypot(c1*sin(dlam), c0*s1-s0*c1*t), +// s0*s1 + c0*c1*t); +// } + + A->az12 = atan2(c1 * (shp = sin(dlam)), + c0 * s1 - s0 * c1 * (shl = cos(dlam))); + if (A->az12 < 0.) + A->az12 += 2.*M_PI; + A->az21 = -atan2(c0 * shp, c1 * s0 - s1 * c0 * shl); + if (A->az21 < 0.) + A->az21 += 2.*M_PI; +} + +/* + * $Log: proj_sp_inv.c,v $ + * Revision 5.1 2009/04/30 20:47:47 gie + * *** empty log message *** + * +*/ diff --git a/geodesic/project.h b/geodesic/project.h new file mode 100644 index 000000000..a653edbbc --- /dev/null +++ b/geodesic/project.h @@ -0,0 +1,368 @@ +/* +** Copyright (c) 2009 Gerald I. Evenden +** +** "$Id: project.h,v 1.2 2009/05/17 15:16:34 gie Exp gie $" +** +** 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. +*/ +/** @file project.h + * @brief The header file for the geodesic library routines + * @author Gerald I. Evenden + */ +#ifndef PROJECT_incl +#define PROJECT_incl 1 +#include +#include +#include +/** @brief Geographic coordinate */ +typedef struct { + double lam; /**< longitude in radians */ + double phi; /**< latitude in radians */ +} PROJ_LP; +/** @brief Cartesian coordinate */ +typedef struct { + double x; /**< Easting */ + double y; /**< Northing */ +} PROJ_XY; +/** @brief 3D Geographic coordinate */ +typedef struct { + double lam; /**< longitude in radians */ + double phi; /**< latitude in radians */ + double h; /**< height above the ellipsoid */ +} PROJ_PT_LPH; +/** + * @brief Geocentric Cartesian coordinate + * + * Each element in same units as \a a in structure \link ellips \endlink + */ +typedef struct { + double x; /**< X axis */ + double y; /**< Y axis */ + double z; /**< Z axis */ +} PROJ_PT_XYZ; +/** + * @brief Earth's elliptical constants. + * + * Element \a a units, typically meters, defines the units for + * all other length elements. + */ +typedef struct { + double a; /**< semi-major axis or sphere radius */ + double f; /**< ellipsoid flattening, if == 0 then sphere */ + double es; /**< eccentricity squared, if == 0 then sphere */ + double one_es; /**< 1-es */ +} PROJ_ELLIPS; +/** + * @brief Geodesic line structure + * + * Azimuths in radians clockwise from North. Distance units the + * same as element \a a in structure \link ellips \endlink. + */ +typedef struct { + PROJ_PT_LPH *pt1; /**< pointer to geographic coord of first location */ + double az12; /**< azimuth from pt1 to pt2 (forward) */ + PROJ_PT_LPH *pt2; /**< pointer to geographic coord of second location */ + double az21; /**< azimuth from pt2 to pt1 (back) */ + double S; /**< geodetic distance between points */ + PROJ_ELLIPS *E; /**< pointer to ellipsoid constants */ +} PROJ_LINE; +/** + * @brief linked argument list + * + * The size of param means nothing and is only of use so that + * the debugger will dump at least that many characters. + */ + /* parameter list struct */ +typedef struct proj_arg_list { + struct proj_arg_list *next; /**< pointer to next entry if !NULL */ + char used; /**< if not 0 then argument referenced */ + char param[5]; /**< character string of argument */ +} PROJ_PARAM_ITEM; +/** + * @brief list of ellipsoid parameters + */ +struct PROJ_ELLPS_LIST { + char *id; /**< ellipse keyword name */ + char *major; /**< a= major-axis value */ + char *ell; /**< elliptical parameter */ + char *name; /**< comments */ +}; + +#ifndef PROJ_ELLPS_LIST_FLAG +extern const struct PROJ_ELLPS_LIST proj_ellps[]; +#endif // end of PROJ_ELLPS_LIST_FLAG + +/** + * @brief list of prime meridians + */ +struct PROJ_PRIMES_LIST { + char *name; /**< prime meridian name */ + char *del_lon; /**< longitude offset from Greenwich */ +}; + +#ifndef PROJ_PRIMES_LIST_FLAG +extern const struct PROJ_PRIMES_LIST proj_pm_list[]; +#endif // end of PROJ_PRIMES_LIST_FLAG + +struct PROJ_DERIVS { + double x_l, x_p; /* derivatives of x for lambda-phi */ + double y_l, y_p; /* derivatives of y for lambda-phi */ +}; +struct PROJ_FACTORS { + struct PROJ_DERIVS der; + double h, k; /* meridinal, parallel scales */ + double omega, thetap; /* angular distortion, theta prime */ + double conv; /* convergence */ + double s; /* areal scale factor */ + double a, b; /* max-min scale error */ + int code; /* info as to analytics, see following */ +}; +#define DERIVS(name) static int name(PROJ *P, PROJ_LP lp, struct PROJ_DERIVS *der) { + +#define IS_ANAL_XL_YL 01 /* derivatives of lon analytic */ +#define IS_ANAL_XP_YP 02 /* derivatives of lat analytic */ +#define IS_ANAL_HK 04 /* h and k analytic */ +#define IS_ANAL_CONV 010 /* convergence analytic */ +struct PROJ_UNITS { + char *id; /* units keyword */ + char *to_meter; /* multiply by value to get meters */ + char *name; /* comments */ +}; + +typedef struct { double r, i; } PROJ_COMPLEX; + +/** + * @brief basic projection control structure + */ +typedef struct PROJconsts { + PROJ_XY (*fwd)(PROJ_LP, struct PROJconsts *); /**< forward projection */ + PROJ_LP (*inv)(PROJ_XY, struct PROJconsts *); /**< inverse projection */ + void (*spc)(PROJ_LP, struct PROJconsts *, struct PROJ_FACTORS *); /**< projection factors */ + int (*derivs)(struct PROJconsts *, PROJ_LP, struct PROJ_DERIVS *); /**< drivatives entry */ + void (*pfree)(struct PROJconsts *); /**< free this structure memory */ + const char *descr; /**< string of projection characteristics */ + PROJ_PARAM_ITEM *params; /**< parameter list */ + int over; /**< over-range flag */ + double + a, /**< major axis or radius if es==0 */ + e, /**< eccentricity */ + es, /**< e ^ 2 */ + ra, /**< 1/a */ + one_es, /**< 1 - e^2 */ + rone_es, /**< 1/one_es */ + primer, /**< prime meridian */ + netlam0, /**< net adjustment to I/O longitude value */ + lam0, phi0, /**< central longitude, latitude */ + x0, y0, /**< false easting and northing */ + k0, /**< general scaling factor */ + to_meter, fr_meter; /**< Cartesian scaling */ +#ifdef PROJ_PARMS__ +PROJ_PARMS__ +#endif /* end of optional extensions */ +} PROJ; +/** + * @brief structure listing the available projection entries + */ +struct PROJ_LIST { + char *id; /**< projection keyword */ + PROJ *(*proj)(PROJ *); /**< projection entry point */ + char * const *descr; /**< description text */ +}; + +/* Generate proj_list external or make list from include file */ +#ifndef PROJ_LIST_H +extern const struct PROJ_LIST proj_list[]; +#else +#define PROJ_HEAD(id, name) \ + extern PROJ *proj_##id(PROJ *); extern char * const proj_s_##id; +#include PROJ_LIST_H +#undef PROJ_HEAD +#define PROJ_HEAD(id, name) {#id, proj_##id, &proj_s_##id}, + const struct PROJ_LIST +proj_list[] = { +#include PROJ_LIST_H + {0, 0, 0}, + }; +#undef PROJ_HEAD +#endif // end of PROJ_LIST_H + +typedef struct {int errnum; char * name; } PROJ_ERR_LIST; +#ifndef PROJ_UNITS__ +extern const struct PROJ_UNITS proj_units[]; +#endif // end of PROJ_UNITS + +extern int * proj_errno_loc(void); +#define proj_errno (*proj_errno_loc()) +#ifdef PROJ_LIB__ + /* repeatative projection code */ +#define PROJ_HEAD(id, name) static const char des_##id [] = name +#define ENTRYA(name) const char * const proj_s_##name = des_##name; \ + PROJ *proj_##name(PROJ *P) { if (!P) { \ + if ((P = (PROJ *)malloc(sizeof(PROJ)))) { \ + P->pfree = freeup; P->fwd = 0; P->inv = 0; \ + P->spc = 0; P->descr = des_##name; +#define ENTRYX } return P; } else { +#define ENTRY0(name) ENTRYA(name) ENTRYX +#define ENTRY1(name, a) ENTRYA(name) P->a = 0; ENTRYX +#define ENTRY2(name, a, b) ENTRYA(name) P->a = 0; P->b = 0; ENTRYX +#define ENDENTRY(p) } return (p); } +#define E_ERROR(err) { proj_errno = err; freeup(P); return(0); } +#define E_ERROR_0 { freeup(P); return(0); } +#define F_ERROR { proj_errno = -20; return(xy); } +#define I_ERROR { proj_errno = -20; return(lp); } +#define FORWARD(name) static PROJ_XY name(PROJ_LP lp,PROJ*P) {PROJ_XY xy={0.,0.} +#define INVERSE(name) static PROJ_LP name(PROJ_XY xy,PROJ*P) {PROJ_LP lp={0.,0.} +#define FREEUP static void freeup(PROJ *P) { +#define SPECIAL(name) static void name(PROJ_LP lp, PROJ *P, struct PROJ_FACTORS *fac) +#endif // end of PROJ_LIB__ + +/** +* \defgroup local Locally developed procedures + * @brief General purpose procedures. + * + */ +/*@{*/ +PROJ *proj_init(int, char **); +void proj_free(PROJ *); +PROJ *proj_initstr(const char *); +int proj_ell_set(PROJ_PARAM_ITEM *, double *, double *); +PROJ_PARAM_ITEM *proj_mkparam(const char *, const char **); +PROJ_PARAM_ITEM *proj_free_param(PROJ_PARAM_ITEM *); +int proj_param(PROJ_PARAM_ITEM *, const char *, void *); +double proj_adjlon(double ang); +void proj_sp_inv(PROJ_LINE *); +void proj_sp_fwd(PROJ_LINE *); +void proj_pt_inv(PROJ_LINE *); +void proj_pt_fwd(PROJ_LINE *); +int proj_gforward(PROJ_LINE *); +int proj_ginverse(PROJ_LINE *); +double proj_dms2rad(const char *, char **); +int proj_rad2dms(char *, size_t, const char *, double, const char *); +int proj_casecmp(const char *, const char *); +int proj_ncasecmp(const char *, const char *, size_t); +int proj_factors(PROJ_LP, PROJ *, double, struct PROJ_FACTORS *); +double proj_qsfn(double, const void *); +void *proj_auth_ini(double, double *); +double proj_auth_lat(double, const void *); +double proj_auth_inv(double, const void *); +int proj_deriv(PROJ_LP, double h, PROJ *, struct PROJ_DERIVS *); +int *proj_errno_loc(void); +int proj_factors(PROJ_LP, PROJ *, double h, struct PROJ_FACTORS *); +void *proj_gauss_ini(double, double phi0, double *, double *); +PROJ_LP proj_gauss(PROJ_LP, const void *); +PROJ_LP proj_inv_gauss(PROJ_LP, const void *); +int proj_gdinverse(PROJ *, PROJ_LP *est, PROJ_XY, double); +void *proj_mdist_ini(double); +double proj_mdist(double, double sphi, double cphi, const void *); +double proj_inv_mdist(double, const void *); +double proj_msfn(double, double cosphi, double); +double proj_phi2(double, double); +double proj_psi(double, double sphi, double); +double proj_apsi(double, double); +const char *proj_strerrno(int); +int proj_strerror_r(int, char *, int); +double proj_asin(double); +double proj_acos(double); +double proj_sqrt(double); +double proj_atan2(double, double); +PROJ_LP proj_translate(PROJ_LP, const void *); +PROJ_LP proj_inv_translate(PROJ_LP, const void *); +void *proj_translate_ini(double, double); +double proj_tsfn(double, double sinphi, double); +PROJ_COMPLEX proj_zpoly1(PROJ_COMPLEX, PROJ_COMPLEX *, int); +PROJ_COMPLEX proj_zpolyd1(PROJ_COMPLEX, PROJ_COMPLEX *, int n, PROJ_COMPLEX *); + +void proj_pr_list(PROJ *); +PROJ_XY proj_fwd(PROJ_LP, PROJ *); +PROJ_LP proj_inv(PROJ_XY, PROJ *); +/*@}*/ + +/** \defgroup imported Imported and translated procedures + * @brief Procedures converted from FORTRAN to C + * + * These routines were extracted from FORTRAN programs located at + * http://www.ngs.noaa.gov/PC_PROD/Inv_Fwd/ . + * They are based upon mathematics by Vincenty: + * http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf . + * + * The applicable procedures were extracted from the composite + * program FORTRAN files FORWARD.FOR and INVERSE.FOR and + * converted to C by the f2c program. The converted procedures + * were further edited to remove f2c dependencies and clean up + * translation "noise." Original FORTRAN code comments were + * preserved when possible. + * + * The so called 3D versions of the geodesic procedures were not + * translated because there seemed to be constants and other factors + * that were limited to one ellipsoid and thus the procedures could not + * be considered general purpose routines. + * + * Note: the original FORTRAN files were successfully compiled + * by gfortran and served as a benchmark for the converted C code. + */ +/*@{ */ +void proj_lph2xyz(PROJ_PT_LPH * p1, PROJ_PT_XYZ * p2, PROJ_ELLIPS * E); +int proj_xyz2lph(PROJ_PT_XYZ * p1, PROJ_PT_LPH * p2, PROJ_ELLIPS * E); +void proj_in_fwd(PROJ_LINE * A); +void proj_in_inv(PROJ_LINE * A); +/*@}*/ +#endif /* PROJECT_incl */ +/* + * $Log: project.h,v $ + * Revision 1.2 2009/05/17 15:16:34 gie + * corrected list conditional + * + * Revision 1.1 2009/05/15 17:17:28 gie + * Initial revision + * + * Revision 2.7 2009/04/03 19:46:43 gie + * removed *fig.h from project.h + * + * Revision 2.6 2009/04/01 16:07:02 gie + * corrected type_t to size_t --- what details, details, grr. + * + * Revision 2.5 2009/04/01 15:36:00 gie + * added typedefs for PROJ_LP and _XY + * + * Revision 2.4 2009/03/27 20:08:47 gie + * updates regarding proj_casecmp + * + * Revision 2.3 2009/03/20 00:15:29 gie + * minor doxygen control change + * + * Revision 2.2 2009/02/23 22:44:27 gie + * *** empty log message *** + * + * Revision 2.1 2009/02/01 19:27:11 gie + * *** empty log message *** + * + * Revision 1.4 2009/01/09 21:35:23 gie + * some additions + * + * Revision 1.3 2009/01/08 01:48:13 gie + * prep for release + * + * Revision 1.2 2008/12/07 18:55:14 gie + * initial + * + * Revision 1.1 2008/12/03 02:54:58 gie + * Initial revision + * + */ diff --git a/lib/mpl_toolkits/basemap/data/IGNF b/lib/mpl_toolkits/basemap/data/IGNF new file mode 100644 index 000000000..5a5d559ad --- /dev/null +++ b/lib/mpl_toolkits/basemap/data/IGNF @@ -0,0 +1,487 @@ +# 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/lib/mpl_toolkits/basemap/data/epsg b/lib/mpl_toolkits/basemap/data/epsg index fbb2c9a82..c11e183f0 100644 --- a/lib/mpl_toolkits/basemap/data/epsg +++ b/lib/mpl_toolkits/basemap/data/epsg @@ -7,7 +7,7 @@ # IGRS <3889> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # MGI 1901 -<3906> +proj=longlat +ellps=bessel +no_defs <> +<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 @@ -51,7 +51,7 @@ # Unknown datum based upon the International 1924 ellipsoid <4022> +proj=longlat +ellps=intl +no_defs <> # MOLDREF99 -<4023> +proj=longlat +ellps=GRS80 +no_defs <> +<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 @@ -105,19 +105,19 @@ # Greek <4120> +proj=longlat +ellps=bessel +no_defs <> # GGRS87 -<4121> +proj=longlat +ellps=GRS80 +datum=GGRS87 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<4127> +proj=longlat +ellps=clrk66 +towgs84=219.315,168.975,-166.145,0.198,5.926,-2.356,-57.104 +no_defs <> # Madzansua <4128> +proj=longlat +ellps=clrk66 +no_defs <> # Observatario @@ -125,15 +125,15 @@ # 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 +no_defs <> +<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 +no_defs <> +<4132> +proj=longlat +ellps=clrk80 +towgs84=-239.1,-170.02,397.5,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 +no_defs <> +<4134> +proj=longlat +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +no_defs <> # Old Hawaiian -<4135> +proj=longlat +ellps=clrk66 +no_defs <> +<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 @@ -151,9 +151,9 @@ # 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 +no_defs <> +<4144> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=282,726,254,0,0,0,0 +no_defs <> # Kalianpur 1962 -<4145> +proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs <> +<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 @@ -161,27 +161,27 @@ # 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 <> +<4149> +proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,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 +no_defs <> +<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 <> +<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 +no_defs <> +<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 +no_defs <> +<4158> +proj=longlat +ellps=intl +towgs84=-0.465,372.095,171.736,0,0,0,0 +no_defs <> # ELD79 -<4159> +proj=longlat +ellps=intl +no_defs <> +<4159> +proj=longlat +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +no_defs <> # Chos Malal 1914 <4160> +proj=longlat +ellps=intl +no_defs <> # Pampa del Castillo @@ -199,7 +199,7 @@ # 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 +no_defs <> +<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 @@ -217,15 +217,15 @@ # 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 +no_defs <> +<4178> +proj=longlat +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +no_defs <> # Pulkovo 1942(58) -<4179> +proj=longlat +ellps=krass +no_defs <> +<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 <> +<4181> +proj=longlat +ellps=intl +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +no_defs <> # Azores Occidental 1939 -<4182> +proj=longlat +ellps=intl +no_defs <> +<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 @@ -237,7 +237,7 @@ # REGVEN <4189> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # POSGAR 98 -<4190> +proj=longlat +ellps=GRS80 +no_defs <> +<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 @@ -245,7 +245,7 @@ # 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 <> +<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 @@ -257,69 +257,69 @@ # Egypt 1930 <4199> +proj=longlat +ellps=intl +no_defs <> # Pulkovo 1995 -<4200> +proj=longlat +ellps=krass +towgs84=24.82,-131.21,-82.66,-0,-0,0.16,-0.12 +no_defs <> +<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 +no_defs <> +<4201> +proj=longlat +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +no_defs <> # AGD66 -<4202> +proj=longlat +ellps=aust_SA +no_defs <> +<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 +no_defs <> +<4203> +proj=longlat +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +no_defs <> # Ain el Abd -<4204> +proj=longlat +ellps=intl +no_defs <> +<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 +no_defs <> +<4207> +proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +no_defs <> # Aratu -<4208> +proj=longlat +ellps=intl +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<4210> +proj=longlat +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +no_defs <> # Batavia -<4211> +proj=longlat +ellps=bessel +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<4220> +proj=longlat +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +no_defs <> # Campo Inchauspe -<4221> +proj=longlat +ellps=intl +no_defs <> +<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 +no_defs <> +<4222> +proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +no_defs <> # Carthage -<4223> +proj=longlat +a=6378249.2 +b=6356515 +datum=carthage +no_defs <> +<4223> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +no_defs <> # Chua -<4224> +proj=longlat +ellps=intl +no_defs <> -# Corrego Alegre +<4224> +proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs <> +# Corrego Alegre 1970-72 <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 <> +<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 +no_defs <> +<4229> +proj=longlat +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +no_defs <> # ED50 -<4230> +proj=longlat +ellps=intl +no_defs <> +<4230> +proj=longlat +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +no_defs <> # ED87 -<4231> +proj=longlat +ellps=intl +no_defs <> +<4231> +proj=longlat +ellps=intl +towgs84=-83.11,-97.38,-117.22,0.00569291,-0.0446976,0.0442851,0.1218 +no_defs <> # Fahud -<4232> +proj=longlat +ellps=clrk80 +no_defs <> +<4232> +proj=longlat +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +no_defs <> # Gandajika 1970 <4233> +proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs <> # Garoua @@ -329,17 +329,17 @@ # 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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 @@ -351,7 +351,7 @@ # 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 <> +<4248> +proj=longlat +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +no_defs <> # Lake <4249> +proj=longlat +ellps=intl +no_defs <> # Leigon @@ -361,9 +361,9 @@ # Lome <4252> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Luzon 1911 -<4253> +proj=longlat +ellps=clrk66 +no_defs <> +<4253> +proj=longlat +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +no_defs <> # Hito XVIII 1963 -<4254> +proj=longlat +ellps=intl +no_defs <> +<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 @@ -371,9 +371,9 @@ # 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 <> +<4258> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Malongo 1987 -<4259> +proj=longlat +ellps=intl +no_defs <> +<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 @@ -381,35 +381,35 @@ # Massawa <4262> +proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs <> # Minna -<4263> +proj=longlat +ellps=clrk80 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<4266> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +no_defs <> # NAD27 -<4267> +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs <> +<4267> +proj=longlat +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 <> +<4269> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Nahrwan 1967 -<4270> +proj=longlat +ellps=clrk80 +no_defs <> +<4270> +proj=longlat +ellps=clrk80 +towgs84=-243,-192,477,0,0,0,0 +no_defs <> # Naparima 1972 -<4271> +proj=longlat +ellps=intl +no_defs <> +<4271> +proj=longlat +ellps=intl +towgs84=-10,375,165,0,0,0,0 +no_defs <> # NZGD49 -<4272> +proj=longlat +ellps=intl +datum=nzgd49 +no_defs <> +<4272> +proj=longlat +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 <> +<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 +ellps=airy +datum=OSGB36 +no_defs <> +<4277> +proj=longlat +ellps=airy +towgs84=375,-111,431,0,0,0,0 +no_defs <> # OSGB70 <4278> +proj=longlat +ellps=airy +no_defs <> # OS(SN)80 @@ -419,13 +419,13 @@ # Palestine 1923 <4281> +proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs <> # Pointe Noire -<4282> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 @@ -433,15 +433,15 @@ # Loma Quintana <4288> +proj=longlat +ellps=intl +no_defs <> # Amersfoort -<4289> +proj=longlat +ellps=bessel +no_defs <> +<4289> +proj=longlat +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +no_defs <> # SAD69 -<4291> +proj=longlat +ellps=GRS67 +no_defs <> +<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 +no_defs <> +<4293> +proj=longlat +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +no_defs <> # Segora -<4294> +proj=longlat +ellps=bessel +no_defs <> +<4294> +proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +no_defs <> # Serindung <4295> +proj=longlat +ellps=bessel +no_defs <> # Sudan @@ -449,15 +449,15 @@ # 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 <> +<4298> +proj=longlat +ellps=evrstSS +towgs84=-533.4,669.2,-52.5,0,0,4.28,9.4 +no_defs <> # TM65 -<4299> +proj=longlat +ellps=mod_airy +datum=ire65 +no_defs <> +<4299> +proj=longlat +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs <> # TM75 -<4300> +proj=longlat +ellps=mod_airy +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 @@ -465,7 +465,7 @@ # Bern 1938 <4306> +proj=longlat +ellps=bessel +no_defs <> # Nord Sahara 1959 -<4307> +proj=longlat +ellps=clrk80 +no_defs <> +<4307> +proj=longlat +ellps=clrk80 +towgs84=-186,-93,310,0,0,0,0 +no_defs <> # RT38 <4308> +proj=longlat +ellps=bessel +no_defs <> # Yacare @@ -475,31 +475,45 @@ # Zanderij <4311> +proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs <> # MGI -<4312> +proj=longlat +ellps=bessel +datum=hermannskogel +no_defs <> +<4312> +proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +no_defs <> # Belge 1972 -<4313> +proj=longlat +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +no_defs <> +<4313> +proj=longlat +ellps=intl +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747 +no_defs <> # DHDN -<4314> +proj=longlat +ellps=bessel +datum=potsdam +no_defs <> +<4314> +proj=longlat +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +no_defs <> +<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 <> +<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 +no_defs <> +<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 +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +no_defs <> +<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 <> +# Mexican Datum of 1993 +<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 +no_defs <> +<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 @@ -507,7 +521,7 @@ # 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 +no_defs <> +<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 @@ -523,17 +537,17 @@ # JGD2000 <4612> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Segara -<4613> +proj=longlat +ellps=bessel +no_defs <> +<4613> +proj=longlat +ellps=bessel +towgs84=-403,684,41,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 +towgs84=-499,-249,314,0,0,0,0 +no_defs <> # Selvagem Grande -<4616> +proj=longlat +ellps=intl +no_defs <> +<4616> +proj=longlat +ellps=intl +towgs84=-289,-124,60,0,0,0,0 +no_defs <> # NAD83(CSRS) -<4617> +proj=longlat +ellps=GRS80 +no_defs <> +<4617> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # SAD69 -<4618> +proj=longlat +ellps=aust_SA +no_defs <> +<4618> +proj=longlat +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +no_defs <> # SWEREF99 <4619> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Point 58 @@ -541,31 +555,31 @@ # Fort Marigot <4621> +proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 +no_defs <> # Guadeloupe 1948 -<4622> +proj=longlat +ellps=intl +no_defs <> +<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=2,2,-2,0,0,0,0 +no_defs <> +<4624> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Martinique 1938 -<4625> +proj=longlat +ellps=intl +no_defs <> +<4625> +proj=longlat +ellps=intl +towgs84=186,482,151,0,0,0,0 +no_defs <> # Reunion 1947 -<4626> +proj=longlat +ellps=intl +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 @@ -575,21 +589,21 @@ # Saint Pierre et Miquelon 1950 <4638> +proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +no_defs <> # MOP78 -<4639> +proj=longlat +ellps=intl +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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.7 +no_defs <> # NEA74 Noumea -<4644> +proj=longlat +ellps=intl +no_defs <> +<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 +no_defs <> +<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 @@ -597,19 +611,19 @@ # 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.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +no_defs <> +<4660> +proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,6.68163,-31.6115,-19.8482,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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 +no_defs <> +<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 @@ -641,7 +655,7 @@ # Mauritania 1999 <4681> +proj=longlat +ellps=clrk80 +no_defs <> # Gulshan 303 -<4682> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <> +<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 @@ -651,13 +665,13 @@ # MAGNA-SIRGAS <4686> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # RGPF -<4687> +proj=longlat +ellps=GRS80 +no_defs <> +<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.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +no_defs <> # IGN63 Hiva Oa -<4689> +proj=longlat +ellps=intl +no_defs <> +<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 +no_defs <> +<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 @@ -713,11 +727,11 @@ # Cape Canaveral <4717> +proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 +no_defs <> # Solomon 1968 -<4718> +proj=longlat +ellps=intl +no_defs <> +<4718> +proj=longlat +ellps=intl +towgs84=252,-209,-751,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 +no_defs <> +<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 @@ -729,9 +743,9 @@ # Johnston Island 1961 <4725> +proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 +no_defs <> # Little Cayman 1961 -<4726> +proj=longlat +ellps=clrk66 +no_defs <> +<4726> +proj=longlat +ellps=clrk66 +towgs84=42,124,147,0,0,0,0 +no_defs <> # Midway 1961 -<4727> +proj=longlat +ellps=intl +no_defs <> +<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 @@ -757,13 +771,13 @@ # 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 +no_defs <> +<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=84.1,-320.1,218.7,0,0,0,0 +no_defs <> +<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 +no_defs <> # RD/83 @@ -789,7 +803,7 @@ # DGN95 <4755> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # VN-2000 -<4756> +proj=longlat +ellps=WGS84 +no_defs <> +<4756> +proj=longlat +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +no_defs <> # SVY21 <4757> +proj=longlat +ellps=WGS84 +no_defs <> # JAD2001 @@ -809,17 +823,17 @@ # 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 +pm=bern +no_defs <> +<4801> +proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +pm=bern +no_defs <> # Bogota 1975 (Bogota) -<4802> +proj=longlat +ellps=intl +pm=bogota +no_defs <> +<4802> +proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +pm=bogota +no_defs <> # Lisbon (Lisbon) -<4803> +proj=longlat +ellps=intl +pm=lisbon +no_defs <> +<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 +pm=ferro +no_defs <> +<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 +pm=rome +no_defs <> +<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) @@ -831,35 +845,87 @@ # 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 <> +<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 +pm=paris +no_defs <> +<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 +pm=ferro +no_defs <> +<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 +pm=paris +no_defs <> +<4819> +proj=longlat +ellps=clrk80 +towgs84=-186,-93,310,0,0,0,0 +pm=paris +no_defs <> # Segara (Jakarta) -<4820> +proj=longlat +ellps=bessel +pm=jakarta +no_defs <> +<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 <> -# unnamed ellipse -<4901> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.3372291666985 +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 +pm=lisbon +no_defs <> +<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.69507,3.47302,-0.039338 +no_defs <> +# GDBD2009 +<5246> +proj=longlat +ellps=GRS80 +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=213.11,9.37,-74.95,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 +no_defs <> +# PNG94 +<5546> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +units=m +no_defs <> +<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 @@ -867,12 +933,12 @@ # 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 +units=m +no_defs <> +<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 +# 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 <> @@ -949,47 +1015,37 @@ # 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 -# Unable to translate coordinate system EPSG:2046 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2047 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2048 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2049 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2050 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2051 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2052 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2053 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2054 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:2055 into PROJ.4 format. -# +<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 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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) @@ -997,53 +1053,53 @@ # 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 +pm=ferro +units=m +no_defs <> +<2065> +proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=0 +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 <> # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<2068> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +units=m +no_defs <> +<2069> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +units=m +no_defs <> +<2070> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +units=m +no_defs <> +<2071> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +units=m +no_defs <> +<2072> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +units=m +no_defs <> +<2073> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +units=m +no_defs <> +<2074> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +units=m +no_defs <> +<2075> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +units=m +no_defs <> +<2076> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs <> # ELD79 / UTM zone 32N -<2077> +proj=utm +zone=32 +ellps=intl +units=m +no_defs <> +<2077> +proj=utm +zone=32 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs <> # ELD79 / UTM zone 33N -<2078> +proj=utm +zone=33 +ellps=intl +units=m +no_defs <> +<2078> +proj=utm +zone=33 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs <> # ELD79 / UTM zone 34N -<2079> +proj=utm +zone=34 +ellps=intl +units=m +no_defs <> +<2079> +proj=utm +zone=34 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +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 +<2080> +proj=utm +zone=35 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 zone 2 +# 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 zone 2 -<2083> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +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 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +units=m +no_defs <> +<2087> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,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 +a=6378249.2 +b=6356515 +datum=carthage +units=m +no_defs <> +<2088> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +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 @@ -1058,16 +1114,16 @@ <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 / Korea East Belt +# 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 / Korea Central Belt +# 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 / Korea West Belt +# 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 +ellps=GRS80 +datum=GGRS87 +units=m +no_defs <> +<2100> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +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 @@ -1139,9 +1195,9 @@ # 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 +to_meter=0.3047997101815088 +no_defs <> +<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 +units=m +no_defs <> +<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) @@ -1179,7 +1235,7 @@ # 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 +units=m +no_defs <> +<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 @@ -1192,44 +1248,44 @@ <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 <> -# unnamed +# 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs <> +<2169> +proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-189.681,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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<2170> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -1237,19 +1293,19 @@ # Madeira 1936 / UTM zone 28N (deprecated) <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 <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> # ATS77 / New Brunswick Stereographic (ATS77) @@ -1261,33 +1317,33 @@ # 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 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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. # @@ -1299,141 +1355,141 @@ # 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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<2222> +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 / Arizona Central (ft) -<2223> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<2223> +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 / Arizona West (ft) -<2224> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<2224> +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 / 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 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2235> +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 / Florida East (ftUS) -<2236> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2236> +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 / Florida West (ftUS) -<2237> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2237> +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 / 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 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2239> +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 / Georgia West (ftUS) -<2240> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2240> +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 / Idaho East (ftUS) -<2241> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2241> +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 / Idaho Central (ftUS) -<2242> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2242> +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 / Idaho West (ftUS) -<2243> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2243> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2244> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2245> +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 / 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 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2254> +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 / Mississippi West (ftUS) -<2255> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2255> +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 / 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 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2257> +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 / New Mexico Central (ftUS) -<2258> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2258> +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 / New Mexico West (ftUS) -<2259> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2259> +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 / New York East (ftUS) -<2260> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2260> +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 / New York Central (ftUS) -<2261> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2261> +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 / New York West (ftUS) -<2262> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2262> +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 / 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 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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) @@ -1481,41 +1537,41 @@ # 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 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +to_meter=0.3047972654 +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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.24365,-1.15883,-1.09425 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 13 @@ -1647,109 +1703,109 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<2397> +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 -<2398> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> +<2398> +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 -<2399> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs <> +<2399> +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 <> # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -1791,1044 +1847,1044 @@ # 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 +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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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 +units=m +no_defs <> +<2736> +proj=utm +zone=36 +south +ellps=clrk66 +towgs84=219.315,168.975,-166.145,0.198,5.926,-2.356,-57.104 +units=m +no_defs <> # Tete / UTM zone 37S -<2737> +proj=utm +zone=37 +south +ellps=clrk66 +units=m +no_defs <> +<2737> +proj=utm +zone=37 +south +ellps=clrk66 +towgs84=219.315,168.975,-166.145,0.198,5.926,-2.356,-57.104 +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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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.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 +units=m +no_defs <> +<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 +pm=jakarta +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> -# NAD83(CSRS) / SCoPQ zone 2 -<2944> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2965> +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 / Indiana West (ftUS) -<2966> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<2966> +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(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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=m +no_defs <> +<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=2,2,-2,0,0,0,0 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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) @@ -2842,41 +2898,41 @@ # Saint Pierre et Miquelon 1950 / UTM zone 21N <2987> +proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m +no_defs <> # MOP78 / UTM zone 1S -<2988> +proj=utm +zone=1 +south +ellps=intl +units=m +no_defs <> -# RRAF 1991 / UTM zone 20N +<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 +units=m +no_defs <> +<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 Lambert -<2991> +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 +datum=NAD83 +units=m +no_defs <> +<2991> +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 / Oregon 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 +ellps=GRS80 +datum=NAD83 +units=ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs <> # NAD83(HARN) / Oregon Lambert -<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 +units=m +no_defs <> +<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 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 +units=ft +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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.7 +units=m +no_defs <> # NEA74 Noumea / UTM zone 58S -<2998> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3005> +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 <> # SWEREF99 TM <3006> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 12 00 @@ -2904,17 +2960,17 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -2928,47 +2984,47 @@ # 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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> -# ETRS89 / ETRS-LCC -<3034> +proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-LAEA -<3035> +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs <> +<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 / ETRS-TM26 -<3038> +proj=utm +zone=26 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM27 -<3039> +proj=utm +zone=27 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM28 -<3040> +proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM29 -<3041> +proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM30 -<3042> +proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM31 -<3043> +proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM32 -<3044> +proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM33 -<3045> +proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM34 -<3046> +proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM35 -<3047> +proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM36 -<3048> +proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM37 -<3049> +proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM38 -<3050> +proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs <> -# ETRS89 / ETRS-TM39 -<3051> +proj=utm +zone=39 +ellps=GRS80 +units=m +no_defs <> +# ETRS89 / TM26 +<3038> +proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM27 +<3039> +proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM28 +<3040> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM29 +<3041> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM30 +<3042> +proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM31 +<3043> +proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM32 +<3044> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM33 +<3045> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM34 +<3046> +proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM35 +<3047> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM36 +<3048> +proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM37 +<3049> +proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM38 +<3050> +proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# ETRS89 / TM39 +<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. # @@ -2984,83 +3040,83 @@ # 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.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +units=m +no_defs <> +<3058> +proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.609,552.753,-540.873,6.68163,-31.6115,-19.8482,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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> -# ETRS89 / ETRS-TM35FIN -<3067> +proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs <> +<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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<3068> +proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3070> +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(HARN) / Wisconsin Transverse Mercator -<3071> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3072> +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 / Maine CS2000 Central (deprecated) -<3073> +proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3073> +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 / Maine CS2000 West -<3074> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3074> +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(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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3078> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +units=m +no_defs <> +<3079> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +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 +ellps=clrk66 +datum=NAD27 +units=ft +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3081> +proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3082> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3083> +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(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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3086> +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(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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +units=m +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -3080,15 +3136,15 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 / Vicgrid94 <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 @@ -3108,7 +3164,7 @@ # 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 +units=m +no_defs <> +<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 @@ -3120,31 +3176,31 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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. # @@ -3155,7 +3211,7 @@ # 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 +units=m +no_defs <> +<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. # @@ -3163,51 +3219,51 @@ # Unable to translate coordinate system EPSG:3145 into PROJ.4 format. # # Pulkovo 1942 / 3-degree Gauss-Kruger zone 6 -<3146> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> +<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 -<3147> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 -<3150> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=24.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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 -<3151> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3161> +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 <> # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756 +no_defs <> +<3167> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=40000 +y_0=0 +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 +a=6377295.664 +b=6356094.667915204 +units=m +no_defs <> +<3168> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804670.24 +y_0=0 +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 @@ -3215,16 +3271,16 @@ # 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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +units=m +no_defs <> +<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.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 18N @@ -3272,7 +3328,7 @@ # LGD2006 / UTM zone 32N <3199> +proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-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 +units=m +no_defs <> +<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=-239.1,-170.02,397.5,0,0,0,0 +units=m +no_defs <> # LGD2006 / UTM zone 33N <3201> +proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / UTM zone 34N @@ -3280,208 +3336,208 @@ # LGD2006 / UTM zone 35N <3203> +proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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.12,2623.92,-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 +units=m +no_defs <> +<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 @@ -3491,15 +3547,15 @@ # 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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3310> +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(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 +units=m +no_defs <> +<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=2,2,-2,0,0,0,0 +units=m +no_defs <> +<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) @@ -3529,27 +3585,27 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3338> +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 <> # 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 @@ -3567,17 +3623,17 @@ # 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3347> +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 <> # 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 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -3587,23 +3643,23 @@ # Grand Cayman 1959 / UTM zone 17N <3356> +proj=utm +zone=17 +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +units=m +no_defs <> # Little Cayman 1961 / UTM zone 17N -<3357> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs <> +<3357> +proj=utm +zone=17 +ellps=clrk66 +towgs84=42,124,147,0,0,0,0 +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 +units=m +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=m +no_defs <> +<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 +units=ft +no_defs <> +<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 +units=m +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=m +no_defs <> +<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 +units=us-ft +no_defs <> +<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 @@ -3613,19 +3669,19 @@ # 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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<3370> +proj=utm +zone=59 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 60N -<3371> +proj=utm +zone=60 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<3371> +proj=utm +zone=60 +datum=NAD27 +units=m +no_defs <> # NAD83 / UTM zone 59N -<3372> +proj=utm +zone=59 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3372> +proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 60N -<3373> +proj=utm +zone=60 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3373> +proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +units=m +no_defs <> +<3375> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +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 +ellps=GRS80 +units=m +no_defs <> +<3376> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +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 @@ -3645,25 +3701,25 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +k=1 +x_0=0 +y_0=0 +ellps=krass +units=m +no_defs <> +<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 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs <> +<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=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs <> +<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=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs <> +<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 +units=m +no_defs <> # WGS 84 / World Mercator -<3395> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 @@ -3673,24 +3729,24 @@ # 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3400> +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 / Alberta 10-TM (Resource) -<3401> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3401> +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(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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=m +no_defs <> +<3405> +proj=utm +zone=48 +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_defs <> # VN-2000 / UTM zone 49N -<3406> +proj=utm +zone=49 +ellps=WGS84 +units=m +no_defs <> +<3406> +proj=utm +zone=49 +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +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 <> -# unnamed +# 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 <> -# unnamed +# 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 <> @@ -3699,75 +3755,75 @@ # 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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 (ft US) -<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> # NAD83 / Iowa South (ft US) -<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> # NAD83 / Kansas North (ft US) -<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> # NAD83 / Kansas South (ft US) -<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs <> # NAD83 / Nevada East (ft US) -<3421> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3421> +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 / Nevada Central (ft US) -<3422> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3422> +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 / Nevada West (ft US) -<3423> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3423> +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 / New Jersey (ft US) -<3424> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3424> +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) / Iowa North (ft US) -<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 +units=us-ft +no_defs <> +<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 (ft US) -<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 +units=us-ft +no_defs <> +<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 (ft US) -<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 +units=us-ft +no_defs <> +<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 (ft US) -<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 +units=us-ft +no_defs <> +<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 (ft US) -<3429> +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 <> +<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 (ft US) -<3430> +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 <> +<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 (ft US) -<3431> +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 <> +<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 (ft US) -<3432> +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 <> +<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3435> +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 / Illinois West (ftUS) -<3436> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3436> +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 / New Hampshire (ftUS) -<3437> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3437> +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 / Rhode Island (ftUS) -<3438> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3438> +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 <> # PSD93 / UTM zone 39N -<3439> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs <> +<3439> +proj=utm +zone=39 +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs <> # PSD93 / UTM zone 40N -<3440> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> +<3440> +proj=utm +zone=40 +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -3775,33 +3831,33 @@ # 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / South Dakota North (ftUS) -<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3463> +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(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 +units=m +no_defs <> +<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 @@ -3809,7 +3865,7 @@ # 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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +<3468> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +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 @@ -3993,49 +4049,49 @@ # 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3578> +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(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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3580> +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(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 +units=m +no_defs <> +<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 @@ -4055,7 +4111,7 @@ # 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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +<3591> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +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) @@ -4327,7 +4383,7 @@ # 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 +units=m +no_defs <> +<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) @@ -4341,65 +4397,65 @@ # 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3735> +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 / Wyoming East (ftUS) -<3736> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3736> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3737> +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 / Wyoming West Central (ftUS) -<3738> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3738> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3739> +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(HARN) / UTM zone 10N -<3740> +proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<3759> +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(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 +units=us-ft +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -4411,33 +4467,33 @@ # 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 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3775> +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 / Alberta 3TM ref merid 114 W -<3776> +proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3776> +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 / Alberta 3TM ref merid 117 W -<3777> +proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3777> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3778> +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 <> # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -4447,7 +4503,7 @@ # 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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<3787> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 @@ -4461,27 +4517,27 @@ # 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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3798> +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 <> # 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 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3801> +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 <> # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3814> +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(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 +units=m +no_defs <> +<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 @@ -4492,34 +4548,34 @@ <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 / UTM zone 51N +# 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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7 -<3842> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> -# Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8 -<3843> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> +<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 +units=m +no_defs <> +<3844> +proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +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 <> # 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 @@ -4540,6 +4596,32 @@ <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 @@ -4547,19 +4629,19 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -4581,26 +4663,24 @@ # 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3968> +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(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 +units=m +no_defs <> +<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 -# Unable to translate coordinate system EPSG:3973 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:3974 into PROJ.4 format. -# +<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 -<3975> +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<3978> +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 <> # 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 +units=m +no_defs <> -# Katanga 1955 / Katanga 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 <> @@ -4618,19 +4698,19 @@ # Unable to translate coordinate system EPSG:3993 into PROJ.4 format. # # WGS 84 / Mercator 41 -<3994> +proj=merc +lon_0=100 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<4037> +proj=utm +zone=35 +datum=WGS84 +units=m +no_defs <> # WGS 84 / TMzn36N -<4038> +proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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 @@ -4656,7 +4736,7 @@ # 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 +units=m +no_defs <> +<4071> +proj=utm +zone=23 +south +ellps=intl +towgs84=-134,229,-29,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 @@ -4667,6 +4747,777 @@ # World Equidistant Cylindrical (Sphere) # Unable to translate coordinate system EPSG:4088 into PROJ.4 format. # +# 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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +<4474> +proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs <> +# Mexican Datum of 1993 / UTM zone 11N +<4484> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# Mexican Datum of 1993 / UTM zone 12N +<4485> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# Mexican Datum of 1993 / UTM zone 13N +<4486> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# Mexican Datum of 1993 / UTM zone 14N +<4487> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# Mexican Datum of 1993 / UTM zone 15N +<4488> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> +# Mexican Datum of 1993 / 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 N32 +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +# Unable to translate coordinate system EPSG:5221 into PROJ.4 format. +# +# 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.69507,3.47302,-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 +gamma=53.13010236111111 +ellps=GRS80 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +<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=213.11,9.37,-74.95,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=213.11,9.37,-74.95,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=213.11,9.37,-74.95,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=213.11,9.37,-74.95,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=213.11,9.37,-74.95,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=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs <> +# SAD69 / UTM zone 17N +<5463> +proj=utm +zone=17 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> +# Sibun Gorge 1922 / Colony Grid +<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=0 +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 +# Unable to translate coordinate system EPSG:5514 into PROJ.4 format. +# +# 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 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +units=m +no_defs <> +# SAD69(96) / UTM zone 21S +<5531> +proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_defs <> +# SAD69(96) / UTM zone 22S +<5532> +proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> +# SAD69(96) / UTM zone 23S +<5533> +proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_defs <> +# SAD69(96) / UTM zone 24S +<5534> +proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_defs <> +# SAD69(96) / UTM zone 25S +<5535> +proj=utm +zone=25 +south +ellps=aust_SA +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=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs <> # EPSG topocentric example A # Unable to translate coordinate system EPSG:5819 into PROJ.4 format. # @@ -4677,303 +5528,303 @@ # Unable to translate coordinate system EPSG:5821 into PROJ.4 format. # # 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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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.82,-131.21,-82.66,-0,-0,0.16,-0.12 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<20138> +proj=utm +zone=38 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs <> # AGD66 / AMG zone 48 -<20248> +proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 -<20348> +proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 -<20357> +proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs <> +<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 -<20358> +proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +pm=lisbon +units=m +no_defs <> +<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 +pm=lisbon +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +pm=jakarta +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +pm=bern +units=m +no_defs <> +<21780> +proj=somerc +lat_0=46.95240555555556 +lon_0=0 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,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 <> +<21781> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.4,15.1,405.3,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 <> +<21782> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,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 @@ -4995,27 +5846,27 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -5031,124 +5882,114 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> -# Cape / UTM zone 36S -<22236> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs <> +<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 -# Unable to translate coordinate system EPSG:22275 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22277 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22279 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22281 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22283 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22285 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22287 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22289 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22291 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:22293 into PROJ.4 format. -# +<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 +a=6378249.2 +b=6356515 +datum=carthage +units=m +no_defs <> +<22332> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +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 +datum=carthage +units=m +no_defs <> +<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 +towgs84=-263,6,431,0,0,0,0 +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 +datum=carthage +units=m +no_defs <> -# Corrego Alegre / UTM zone 21S +<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 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs <> +# Corrego Alegre 1970-72 / UTM zone 21S <22521> +proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre / UTM zone 22S +# Corrego Alegre 1970-72 / UTM zone 22S <22522> +proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre / UTM zone 23S +# Corrego Alegre 1970-72 / 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 +# Corrego Alegre 1970-72 / UTM zone 24S <22524> +proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> -# Corrego Alegre / UTM zone 25S +# Corrego Alegre 1970-72 / UTM zone 25S <22525> +proj=utm +zone=25 +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 <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<23239> +proj=utm +zone=39 +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +units=m +no_defs <> # Fahud / UTM zone 40N -<23240> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> +<23240> +proj=utm +zone=40 +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +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 +units=m +no_defs <> +<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 @@ -5182,21 +6023,21 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -5228,23 +6069,23 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -5252,23 +6093,23 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<24305> +proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +towgs84=282,726,254,0,0,0,0 +units=m +no_defs <> # Kalianpur 1937 / UTM zone 46N -<24306> +proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> +<24306> +proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=282,726,254,0,0,0,0 +units=m +no_defs <> # Kalianpur 1962 / UTM zone 41N -<24311> +proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -5292,11 +6133,11 @@ # 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.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 +units=m +no_defs <> +<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=282,726,254,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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -5316,7 +6157,7 @@ # 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 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs <> +<24571> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +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 @@ -5326,75 +6167,75 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<25837> +proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # ETRS89 / UTM zone 38N -<25838> +proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -5408,195 +6249,195 @@ # 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 <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +pm=rome +units=m +no_defs <> +<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 +pm=rome +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26701> +proj=utm +zone=1 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 2N -<26702> +proj=utm +zone=2 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26702> +proj=utm +zone=2 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 3N -<26703> +proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26703> +proj=utm +zone=3 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 4N -<26704> +proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26704> +proj=utm +zone=4 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 5N -<26705> +proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26705> +proj=utm +zone=5 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 6N -<26706> +proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26706> +proj=utm +zone=6 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 7N -<26707> +proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26707> +proj=utm +zone=7 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 8N -<26708> +proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26708> +proj=utm +zone=8 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 9N -<26709> +proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26709> +proj=utm +zone=9 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 10N -<26710> +proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26710> +proj=utm +zone=10 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 11N -<26711> +proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26711> +proj=utm +zone=11 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 12N -<26712> +proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26712> +proj=utm +zone=12 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 13N -<26713> +proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26713> +proj=utm +zone=13 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 14N -<26714> +proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26714> +proj=utm +zone=14 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 15N -<26715> +proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26715> +proj=utm +zone=15 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 16N -<26716> +proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26716> +proj=utm +zone=16 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 17N -<26717> +proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26717> +proj=utm +zone=17 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 18N -<26718> +proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26718> +proj=utm +zone=18 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 19N -<26719> +proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26719> +proj=utm +zone=19 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 20N -<26720> +proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26720> +proj=utm +zone=20 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 21N -<26721> +proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<26721> +proj=utm +zone=21 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 22N -<26722> +proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<26731> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 <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 @@ -5610,37 +6451,37 @@ # 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 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26814> +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 / Maine West (ftUS) (deprecated) -<26815> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26815> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26822> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26823> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26824> +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(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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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) @@ -5658,37 +6499,37 @@ # 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<26847> +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 / Maine West (ftUS) -<26848> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<26848> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<26852> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<26853> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<26854> +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(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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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 +units=us-ft +no_defs <> +<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) @@ -5706,285 +6547,285 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26901> +proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 2N -<26902> +proj=utm +zone=2 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26902> +proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 3N -<26903> +proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26903> +proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 4N -<26904> +proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26904> +proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 5N -<26905> +proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26905> +proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 6N -<26906> +proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26906> +proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 7N -<26907> +proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26907> +proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 8N -<26908> +proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26908> +proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 9N -<26909> +proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26909> +proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 10N -<26910> +proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26910> +proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 11N -<26911> +proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26911> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 12N -<26912> +proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26912> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 13N -<26913> +proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26913> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 14N -<26914> +proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26914> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 15N -<26915> +proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26915> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 16N -<26916> +proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26916> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 17N -<26917> +proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26917> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 18N -<26918> +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26918> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 19N -<26919> +proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26919> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 20N -<26920> +proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26920> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 21N -<26921> +proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26921> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 22N -<26922> +proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26922> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / UTM zone 23N -<26923> +proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26923> +proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26929> +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 / Alabama West -<26930> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26930> +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 / 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 <> +<26931> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +gamma=323.1301023611111 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26932> +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 / Alaska zone 3 -<26933> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26933> +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 / Alaska zone 4 -<26934> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26934> +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 / Alaska zone 5 -<26935> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26935> +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 / Alaska zone 6 -<26936> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26936> +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 / Alaska zone 7 -<26937> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26937> +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 / Alaska zone 8 -<26938> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26938> +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 / Alaska zone 9 -<26939> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26939> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26948> +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 / Arizona Central -<26949> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26949> +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 / Arizona West -<26950> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26950> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<26957> +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 / Florida East -<26958> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26958> +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 / Florida West -<26959> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26959> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26961> +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 / Hawaii zone 2 -<26962> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26962> +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 / Hawaii zone 3 -<26963> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26963> +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 / Hawaii zone 4 -<26964> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26964> +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 / Hawaii zone 5 -<26965> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26965> +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 / Georgia East -<26966> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26966> +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 / Georgia West -<26967> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26967> +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 / Idaho East -<26968> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26968> +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 / Idaho Central -<26969> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26969> +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 / Idaho West -<26970> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26970> +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 / Illinois East -<26971> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26971> +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 / Illinois West -<26972> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26972> +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 / Indiana East -<26973> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26973> +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 / Indiana West -<26974> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26974> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26983> +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 / Maine West -<26984> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26984> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26994> +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 / Mississippi West -<26995> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26995> +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 / Missouri East -<26996> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26996> +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 / Missouri Central -<26997> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26997> +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 / Missouri West -<26998> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<26998> +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 <> # Nahrwan 1967 / UTM zone 37N -<27037> +proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs <> +<27037> +proj=utm +zone=37 +ellps=clrk80 +towgs84=-243,-192,477,0,0,0,0 +units=m +no_defs <> # Nahrwan 1967 / UTM zone 38N -<27038> +proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs <> +<27038> +proj=utm +zone=38 +ellps=clrk80 +towgs84=-243,-192,477,0,0,0,0 +units=m +no_defs <> # Nahrwan 1967 / UTM zone 39N -<27039> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs <> +<27039> +proj=utm +zone=39 +ellps=clrk80 +towgs84=-243,-192,477,0,0,0,0 +units=m +no_defs <> # Nahrwan 1967 / UTM zone 40N -<27040> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> +<27040> +proj=utm +zone=40 +ellps=clrk80 +towgs84=-243,-192,477,0,0,0,0 +units=m +no_defs <> # Naparima 1972 / UTM zone 20N -<27120> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> +<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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27200> +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27205> +proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27206> +proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27207> +proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27208> +proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27209> +proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27210> +proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27211> +proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27212> +proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27213> +proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27214> +proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27215> +proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27216> +proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27217> +proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27218> +proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27219> +proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27220> +proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27221> +proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27222> +proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27223> +proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27224> +proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27225> +proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27226> +proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27227> +proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27228> +proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27229> +proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27230> +proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27231> +proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.99996 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27232> +proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs <> # NZGD49 / UTM zone 58S -<27258> +proj=utm +zone=58 +south +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27258> +proj=utm +zone=58 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs <> # NZGD49 / UTM zone 59S -<27259> +proj=utm +zone=59 +south +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27259> +proj=utm +zone=59 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs <> # NZGD49 / UTM zone 60S -<27260> +proj=utm +zone=60 +south +ellps=intl +datum=nzgd49 +units=m +no_defs <> +<27260> +proj=utm +zone=60 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs <> +<27291> +proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs <> +<27292> +proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +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 @@ -6002,13 +6843,13 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> -# unnamed -<27500> +proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=5.4 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.3372291666985 +units=m +no_defs <> +<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 @@ -6042,7 +6883,7 @@ # 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 +ellps=airy +datum=OSGB36 +units=m +no_defs <> +<27700> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=375,-111,431,0,0,0,0 +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.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs <> # Palestine 1923 / Palestine Belt @@ -6050,7 +6891,7 @@ # 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.722,94.7824,340.894,-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 +units=m +no_defs <> +<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 @@ -6074,298 +6915,290 @@ # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<28991> +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +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 +units=m +no_defs <> +<28992> +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<29101> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 18N (deprecated) -<29118> +proj=utm +zone=18 +ellps=GRS67 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<29168> +proj=utm +zone=18 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 19N -<29169> +proj=utm +zone=19 +ellps=aust_SA +units=m +no_defs <> +<29169> +proj=utm +zone=19 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 20N -<29170> +proj=utm +zone=20 +ellps=aust_SA +units=m +no_defs <> +<29170> +proj=utm +zone=20 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 21N -<29171> +proj=utm +zone=21 +ellps=aust_SA +units=m +no_defs <> +<29171> +proj=utm +zone=21 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 22N -<29172> +proj=utm +zone=22 +ellps=aust_SA +units=m +no_defs <> +<29172> +proj=utm +zone=22 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 17S (deprecated) -<29177> +proj=utm +zone=17 +south +ellps=GRS67 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<29187> +proj=utm +zone=17 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 18S -<29188> +proj=utm +zone=18 +south +ellps=aust_SA +units=m +no_defs <> +<29188> +proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 19S -<29189> +proj=utm +zone=19 +south +ellps=aust_SA +units=m +no_defs <> +<29189> +proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 20S -<29190> +proj=utm +zone=20 +south +ellps=aust_SA +units=m +no_defs <> +<29190> +proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 21S -<29191> +proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_defs <> +<29191> +proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 22S -<29192> +proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs <> +<29192> +proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 23S -<29193> +proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_defs <> +<29193> +proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 24S -<29194> +proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_defs <> +<29194> +proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs <> # SAD69 / UTM zone 25S -<29195> +proj=utm +zone=25 +south +ellps=aust_SA +units=m +no_defs <> +<29195> +proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-57,1,-41,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 +units=m +no_defs <> +<29333> +proj=utm +zone=33 +south +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +units=m +no_defs <> # Schwarzeck / Lo22/11 -# Unable to translate coordinate system EPSG:29371 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:29373 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:29375 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:29377 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:29379 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:29381 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:29383 into PROJ.4 format. -# +<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 -# Unable to translate coordinate system EPSG:29385 into PROJ.4 format. -# +<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 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs <> +<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 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs <> +<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 +units=m +no_defs <> +<29849> +proj=utm +zone=49 +ellps=evrstSS +towgs84=-533.4,669.2,-52.5,0,0,4.28,9.4 +units=m +no_defs <> # Timbalai 1948 / UTM zone 50N -<29850> +proj=utm +zone=50 +ellps=evrstSS +units=m +no_defs <> +<29850> +proj=utm +zone=50 +ellps=evrstSS +towgs84=-533.4,669.2,-52.5,0,0,4.28,9.4 +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 +ellps=evrstSS +to_meter=20.11676512155263 +no_defs <> +<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=-533.4,669.2,-52.5,0,0,4.28,9.4 +to_meter=20.11676512155263 +no_defs <> # Timbalai 1948 / RSO 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 <> +<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=-533.4,669.2,-52.5,0,0,4.28,9.4 +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 +ellps=evrstSS +units=m +no_defs <> +<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=-533.4,669.2,-52.5,0,0,4.28,9.4 +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 +ellps=mod_airy +datum=ire65 +units=m +no_defs <> +<29900> +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 <> # 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 +ellps=mod_airy +datum=ire65 +units=m +no_defs <> +<29902> +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 <> # 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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +to_meter=0.201166195164 +no_defs <> +<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 @@ -6379,17 +7212,17 @@ # 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 +units=m +no_defs <> +<30729> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-186,-93,310,0,0,0,0 +units=m +no_defs <> # Nord Sahara 1959 / UTM zone 30N -<30730> +proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs <> +<30730> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-186,-93,310,0,0,0,0 +units=m +no_defs <> # Nord Sahara 1959 / UTM zone 31N -<30731> +proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs <> +<30731> +proj=utm +zone=31 +ellps=clrk80 +towgs84=-186,-93,310,0,0,0,0 +units=m +no_defs <> # Nord Sahara 1959 / UTM zone 32N -<30732> +proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs <> +<30732> +proj=utm +zone=32 +ellps=clrk80 +towgs84=-186,-93,310,0,0,0,0 +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 <> +<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=-186,-93,310,0,0,0,0 +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 <> +<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=-186,-93,310,0,0,0,0 +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 @@ -6403,113 +7236,113 @@ # 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 +pm=ferro +units=m +no_defs <> +<31251> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +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 +pm=ferro +units=m +no_defs <> +<31252> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +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 +pm=ferro +units=m +no_defs <> +<31253> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31254> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +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 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31255> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +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 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31256> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +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 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31257> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31258> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31259> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31265> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31266> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31267> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31268> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31275> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31276> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31277> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31278> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31279> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +pm=ferro +units=m +no_defs <> +<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 +pm=ferro +units=m +no_defs <> +<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 +pm=ferro +units=m +no_defs <> +<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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31284> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31285> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31286> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +datum=hermannskogel +units=m +no_defs <> +<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 +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +pm=ferro +units=m +no_defs <> +<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 +pm=ferro +units=m +no_defs <> +<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 +pm=ferro +units=m +no_defs <> +<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 +pm=ferro +units=m +no_defs <> +<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 +pm=ferro +units=m +no_defs <> +<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 +pm=ferro +units=m +no_defs <> +<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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31294> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31295> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<31296> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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 +ellps=bessel +datum=hermannskogel +units=m +no_defs <> +<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 +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +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.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m +no_defs <> +<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.869,52.2978,-103.724,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.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m +no_defs <> +<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.869,52.2978,-103.724,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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31461> +proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31462> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31463> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31464> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31465> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31466> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31467> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31468> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +ellps=bessel +datum=potsdam +units=m +no_defs <> +<31469> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -6583,547 +7416,547 @@ # 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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +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 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +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 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +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 <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> +<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 +ellps=clrk66 +datum=NAD27 +units=us-ft +no_defs <> +<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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<32104> +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 / Nevada East -<32107> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32107> +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 / Nevada Central -<32108> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32108> +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 / Nevada West -<32109> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32109> +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 / New Hampshire -<32110> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32110> +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 / New Jersey -<32111> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32111> +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 / New Mexico East -<32112> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32112> +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 / New Mexico Central -<32113> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32113> +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 / New Mexico West -<32114> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32114> +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 / New York East -<32115> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32115> +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 / New York Central -<32116> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32116> +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 / New York West -<32117> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32117> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32130> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32145> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32155> +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 / Wyoming East Central -<32156> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32156> +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 / Wyoming West Central -<32157> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32157> +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 / Wyoming West -<32158> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32158> +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 / 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 <> +<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 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<32164> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<32165> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> +<32166> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs <> -# NAD83 / SCoPQ zone 2 -<32180> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32167> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32181> +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 / MTM zone 2 -<32182> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32182> +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 / MTM zone 3 -<32183> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32183> +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 / MTM zone 4 -<32184> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32184> +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 / MTM zone 5 -<32185> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32185> +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 / MTM zone 6 -<32186> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32186> +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 / MTM zone 7 -<32187> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32187> +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 / MTM zone 8 -<32188> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32188> +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 / MTM zone 9 -<32189> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32189> +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 / MTM zone 10 -<32190> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32190> +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 / MTM zone 11 -<32191> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32191> +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 / MTM zone 12 -<32192> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32192> +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 / MTM zone 13 -<32193> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32193> +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 / MTM zone 14 -<32194> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32194> +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 / MTM zone 15 -<32195> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32195> +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 / MTM zone 16 -<32196> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32196> +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 / MTM zone 17 -<32197> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<32197> +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 / 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 <> +<32198> +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 / 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 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> +<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 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # WGS 72 / UTM zone 1N -<32201> +proj=utm +zone=1 +ellps=WGS72 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 +units=m +no_defs <> +<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 @@ -7368,264 +8201,264 @@ # Unable to translate coordinate system EPSG:32600 into PROJ.4 format. # # WGS 84 / UTM zone 1N -<32601> +proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32601> +proj=utm +zone=1 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 2N -<32602> +proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32602> +proj=utm +zone=2 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 3N -<32603> +proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32603> +proj=utm +zone=3 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 4N -<32604> +proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32604> +proj=utm +zone=4 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 5N -<32605> +proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32605> +proj=utm +zone=5 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 6N -<32606> +proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32606> +proj=utm +zone=6 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 7N -<32607> +proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32607> +proj=utm +zone=7 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 8N -<32608> +proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32608> +proj=utm +zone=8 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 9N -<32609> +proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32609> +proj=utm +zone=9 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 10N -<32610> +proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32610> +proj=utm +zone=10 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 11N -<32611> +proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32611> +proj=utm +zone=11 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 12N -<32612> +proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32612> +proj=utm +zone=12 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 13N -<32613> +proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32613> +proj=utm +zone=13 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 14N -<32614> +proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32614> +proj=utm +zone=14 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 15N -<32615> +proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32615> +proj=utm +zone=15 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 16N -<32616> +proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32616> +proj=utm +zone=16 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 17N -<32617> +proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32617> +proj=utm +zone=17 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 18N -<32618> +proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32618> +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 19N -<32619> +proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32619> +proj=utm +zone=19 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 20N -<32620> +proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32620> +proj=utm +zone=20 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 21N -<32621> +proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32621> +proj=utm +zone=21 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 22N -<32622> +proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32622> +proj=utm +zone=22 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 23N -<32623> +proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32623> +proj=utm +zone=23 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 24N -<32624> +proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32624> +proj=utm +zone=24 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 25N -<32625> +proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32625> +proj=utm +zone=25 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 26N -<32626> +proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32626> +proj=utm +zone=26 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 27N -<32627> +proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32627> +proj=utm +zone=27 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 28N -<32628> +proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32628> +proj=utm +zone=28 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 29N -<32629> +proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32629> +proj=utm +zone=29 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 30N -<32630> +proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32630> +proj=utm +zone=30 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 31N -<32631> +proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32631> +proj=utm +zone=31 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 32N -<32632> +proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32632> +proj=utm +zone=32 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 33N -<32633> +proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32633> +proj=utm +zone=33 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 34N -<32634> +proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32634> +proj=utm +zone=34 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 35N -<32635> +proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32635> +proj=utm +zone=35 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 36N -<32636> +proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32636> +proj=utm +zone=36 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 37N -<32637> +proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32637> +proj=utm +zone=37 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 38N -<32638> +proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32638> +proj=utm +zone=38 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 39N -<32639> +proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32639> +proj=utm +zone=39 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 40N -<32640> +proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32640> +proj=utm +zone=40 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 41N -<32641> +proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32641> +proj=utm +zone=41 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 42N -<32642> +proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32642> +proj=utm +zone=42 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 43N -<32643> +proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32643> +proj=utm +zone=43 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 44N -<32644> +proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32644> +proj=utm +zone=44 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 45N -<32645> +proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32645> +proj=utm +zone=45 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 46N -<32646> +proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32646> +proj=utm +zone=46 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 47N -<32647> +proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32647> +proj=utm +zone=47 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 48N -<32648> +proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32648> +proj=utm +zone=48 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 49N -<32649> +proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32649> +proj=utm +zone=49 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 50N -<32650> +proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32650> +proj=utm +zone=50 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 51N -<32651> +proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32651> +proj=utm +zone=51 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 52N -<32652> +proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32652> +proj=utm +zone=52 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 53N -<32653> +proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32653> +proj=utm +zone=53 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 54N -<32654> +proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32654> +proj=utm +zone=54 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 55N -<32655> +proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32655> +proj=utm +zone=55 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 56N -<32656> +proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32656> +proj=utm +zone=56 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 57N -<32657> +proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32657> +proj=utm +zone=57 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 58N -<32658> +proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32658> +proj=utm +zone=58 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 59N -<32659> +proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32659> +proj=utm +zone=59 +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 <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<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) # Unable to translate coordinate system EPSG:32663 into PROJ.4 format. # # WGS 84 / BLM 14N (ftUS) -<32664> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=us-ft +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=us-ft +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=us-ft +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=us-ft +no_defs <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32701> +proj=utm +zone=1 +south +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 <> +<32702> +proj=utm +zone=2 +south +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 <> +<32703> +proj=utm +zone=3 +south +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 <> +<32704> +proj=utm +zone=4 +south +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 <> +<32705> +proj=utm +zone=5 +south +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 <> +<32706> +proj=utm +zone=6 +south +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 <> +<32707> +proj=utm +zone=7 +south +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 <> +<32708> +proj=utm +zone=8 +south +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 <> +<32709> +proj=utm +zone=9 +south +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 <> +<32710> +proj=utm +zone=10 +south +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 <> +<32711> +proj=utm +zone=11 +south +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 <> +<32712> +proj=utm +zone=12 +south +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 <> +<32713> +proj=utm +zone=13 +south +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 <> +<32714> +proj=utm +zone=14 +south +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 <> +<32715> +proj=utm +zone=15 +south +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 <> +<32716> +proj=utm +zone=16 +south +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 <> +<32717> +proj=utm +zone=17 +south +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 <> +<32718> +proj=utm +zone=18 +south +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 <> +<32719> +proj=utm +zone=19 +south +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 <> +<32720> +proj=utm +zone=20 +south +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 <> +<32721> +proj=utm +zone=21 +south +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 <> +<32722> +proj=utm +zone=22 +south +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 <> +<32723> +proj=utm +zone=23 +south +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 <> +<32724> +proj=utm +zone=24 +south +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 <> +<32725> +proj=utm +zone=25 +south +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 <> +<32726> +proj=utm +zone=26 +south +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 <> +<32727> +proj=utm +zone=27 +south +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 <> +<32728> +proj=utm +zone=28 +south +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 <> +<32729> +proj=utm +zone=29 +south +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 <> +<32730> +proj=utm +zone=30 +south +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 <> +<32731> +proj=utm +zone=31 +south +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 <> +<32732> +proj=utm +zone=32 +south +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 <> +<32733> +proj=utm +zone=33 +south +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 <> +<32734> +proj=utm +zone=34 +south +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 <> +<32735> +proj=utm +zone=35 +south +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 <> +<32736> +proj=utm +zone=36 +south +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 <> +<32737> +proj=utm +zone=37 +south +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 <> +<32738> +proj=utm +zone=38 +south +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 <> +<32739> +proj=utm +zone=39 +south +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 <> +<32740> +proj=utm +zone=40 +south +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 <> +<32741> +proj=utm +zone=41 +south +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 <> +<32742> +proj=utm +zone=42 +south +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 <> +<32743> +proj=utm +zone=43 +south +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 <> +<32744> +proj=utm +zone=44 +south +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 <> +<32745> +proj=utm +zone=45 +south +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 <> +<32746> +proj=utm +zone=46 +south +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 <> +<32747> +proj=utm +zone=47 +south +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 <> +<32748> +proj=utm +zone=48 +south +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 <> +<32749> +proj=utm +zone=49 +south +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 <> +<32750> +proj=utm +zone=50 +south +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 <> +<32751> +proj=utm +zone=51 +south +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 <> +<32752> +proj=utm +zone=52 +south +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 <> +<32753> +proj=utm +zone=53 +south +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 <> +<32754> +proj=utm +zone=54 +south +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 <> +<32755> +proj=utm +zone=55 +south +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 <> +<32756> +proj=utm +zone=56 +south +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 <> +<32757> +proj=utm +zone=57 +south +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 <> +<32758> +proj=utm +zone=58 +south +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 <> +<32759> +proj=utm +zone=59 +south +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 <> +<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 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> +<32766> +proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs <> diff --git a/lib/mpl_toolkits/basemap/data/esri.extra b/lib/mpl_toolkits/basemap/data/esri.extra index 2514b33c9..611dd660d 100644 --- a/lib/mpl_toolkits/basemap/data/esri.extra +++ b/lib/mpl_toolkits/basemap/data/esri.extra @@ -946,7 +946,3 @@ <104304> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> # GCS Voirol Unifie 1960 Degree <104305> +proj=longlat +ellps=clrk80 no_defs <> -# -# Chris' funny epsgish code for the google mercator -# -<900913> +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 <> diff --git a/lib/mpl_toolkits/basemap/data/ntf_r93.gsb b/lib/mpl_toolkits/basemap/data/ntf_r93.gsb new file mode 100644 index 000000000..07e34fcb0 Binary files /dev/null and b/lib/mpl_toolkits/basemap/data/ntf_r93.gsb differ diff --git a/lib/mpl_toolkits/basemap/data/ntv1_can.dat b/lib/mpl_toolkits/basemap/data/ntv1_can.dat new file mode 100644 index 000000000..8acad0773 Binary files /dev/null and b/lib/mpl_toolkits/basemap/data/ntv1_can.dat differ diff --git a/lib/mpl_toolkits/basemap/data/nzgd2kgrid0005.gsb b/lib/mpl_toolkits/basemap/data/nzgd2kgrid0005.gsb new file mode 100644 index 000000000..840bd0063 Binary files /dev/null and b/lib/mpl_toolkits/basemap/data/nzgd2kgrid0005.gsb differ diff --git a/lib/mpl_toolkits/basemap/data/other.extra b/lib/mpl_toolkits/basemap/data/other.extra index 168525d22..39c27e273 100644 --- a/lib/mpl_toolkits/basemap/data/other.extra +++ b/lib/mpl_toolkits/basemap/data/other.extra @@ -47,3 +47,7 @@ <42310> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=GRS80 +datum=WGS84 +units=m +no_defs no_defs <> # NAD83 / LCC Statcan <42311> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666700000001 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> +# +# Funny epsgish code for google mercator - you should really use EPSG:3857 +# +<900913> +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 <> diff --git a/lib/mpl_toolkits/basemap/data/proj_outIGNF.dist b/lib/mpl_toolkits/basemap/data/proj_outIGNF.dist new file mode 100644 index 000000000..8a8b12592 --- /dev/null +++ b/lib/mpl_toolkits/basemap/data/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 652760.737 7033791.244 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 + 600000.0000 2200000.0000 0.0000 649398.872 6633524.192 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.017 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 + 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 +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 3353421.833 1304074.314 5248935.606 diff --git a/lib/mpl_toolkits/basemap/data/test27 b/lib/mpl_toolkits/basemap/data/test27 index cd25621db..583f6032f 100755 --- a/lib/mpl_toolkits/basemap/data/test27 +++ b/lib/mpl_toolkits/basemap/data/test27 @@ -16,13 +16,12 @@ usage() } if test -z "${EXE}"; then - echo "*** ERROR: Missing path to 'proj' program." - usage -else - if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 - fi + EXE=../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 fi echo "============================================" diff --git a/lib/mpl_toolkits/basemap/data/test83 b/lib/mpl_toolkits/basemap/data/test83 index 2927dc76d..2de16ab7a 100755 --- a/lib/mpl_toolkits/basemap/data/test83 +++ b/lib/mpl_toolkits/basemap/data/test83 @@ -17,13 +17,12 @@ usage() } if test -z "${EXE}"; then - echo "*** ERROR: Missing path to 'proj' program." - usage -else - if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 - fi + EXE=../src/cs2cs +fi + +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 fi echo "============================================" diff --git a/lib/mpl_toolkits/basemap/data/testIGNF b/lib/mpl_toolkits/basemap/data/testIGNF new file mode 100755 index 000000000..152267745 --- /dev/null +++ b/lib/mpl_toolkits/basemap/data/testIGNF @@ -0,0 +1,166 @@ +: +# Script to test some points in IGNF managed SRS. +# The expected coordinates have been calculed by +# other means. +# Real points locations are found in proj_outIGNF.dist-real +# while distribution results are found in proj_outIGNF.dist +# +# 2009-03-08 : the null grid (nad2bin < null.lla null) MUST +# be around otherwise the LAMBE to LAMB93 +# transformations will be wrong and vice-versa +# 2009-10-04 : addition of NTFG to RGF93G test to check if +# the gsb grid is still ok +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_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 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 \ @@ -95,10 +110,10 @@ echo Test geocentric x/y/z generation. >> ${OUT} $EXE +proj=latlong +datum=WGS84 \ +to +proj=geocent +datum=WGS84 \ -E >>${OUT} <> ${OUT} @@ -151,6 +166,136 @@ $EXE +proj=kav5 +ellps=WGS84 +units=m \ 383646.088858 5997047.888175 EOF # +echo "##############################################################" >> ${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} +echo "Test forward projection on sphere" >> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 \ + +to +proj=healpix +a=1 +lon_0=0 -f '%.'5'f' \ + -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 \ + +to +proj=healpix +a=1 +lon_0=0 -f '%.'5'f' -I\ + -E >>${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} +$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} +echo "Test forward projection on sphere" >> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 \ + +to +proj=rhealpix +a=1 +lon_0=0 +npole=0 +spole=0 -f '%.'5'f' \ + -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 \ + +to +proj=rhealpix +a=1 +lon_0=0 +npole=0 +spole=0 -f '%.'5'f' -I\ + -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 \ + +to +proj=rhealpix +a=1 +lon_0=0 +ellps=WGS84 +npole=0 +spole=0 -f '%.'5'f' \ + -E >>${OUT} <> ${OUT} +$EXE +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 \ + +to +proj=rhealpix +a=1 +lon_0=0 -I +ellps=WGS84 +npole=0 +spole=0 -f '%.'5'f'\ + -E >>${OUT} <>> for faz,baz,d in list(zip(az12,az21,dist)): "%7.3f %7.3f %9.3f" % (faz,baz,d) ' 54.663 -123.448 288303.720' '-65.463 79.342 4013037.318' - ' 51.254 -71.576 5579916.649' + ' 51.254 -71.576 5579916.651' >>> g2 = Geod('+ellps=clrk66') # use proj4 style initialization string >>> az12,az21,dist = g2.inv(boston_lon,boston_lat,portland_lon,portland_lat) >>> "%7.3f %6.3f %12.3f" % (az12,az21,dist) '-66.531 75.654 4164192.708' """ - # if initparams is None, use kwargs. - if initparams is None: - if len(kwargs) == 0: - raise RuntimeError('no ellipsoid control parameters specified') - else: - initstring = _dict2string(kwargs) - elif type(initparams) == str: - # if projparams is a string, interpret as a proj4 init string. - initstring = initparams - else: # projparams a dict - initstring = _dict2string(initparams) - # make sure units are meters. - if not initstring.count('+units='): - initstring = '+units=m '+initstring - else: - kvpairs = [] + # if initparams is a proj-type init string, + # convert to dict. + ellpsd = {} + if initstring is not None: for kvpair in initstring.split(): - if kvpair.startswith('+units'): - k,v = kvpair.split('=') - kvpairs.append(k+'=m ') - else: - kvpairs.append(kvpair+' ') - initstring = ''.join(kvpairs) - # first try a Proj class (catches errors properly) - projstring = initstring + ' +proj=latlon' - p = Proj(projstring) # this is never used - return _Geod.__new__(self, initstring) + k,v = kvpair.split('=') + k = k.lstrip('+') + if k in ['a','b','rf','f','es','e']: + v = float(v) + ellpsd[k] = v + # merge this dict with kwargs dict. + kwargs = dict(list(kwargs.items()) + list(ellpsd.items())) + self.sphere = False + if kwargs.has_key('ellps'): + # ellipse name given, look up in pj_ellps dict + ellps_dict = pj_ellps[kwargs['ellps']] + a = ellps_dict['a'] + if ellps_dict['description']=='Normal Sphere': + self.sphere = True + if ellps_dict.has_key('b'): + b = ellps_dict['b'] + es = 1. - (b * b) / (a * a) + f = (a - b)/a + elif ellps_dict.has_key('rf'): + f = 1./ellps_dict['rf'] + b = a*(1. - f) + es = 1. - (b * b) / (a * a) + else: + # a (semi-major axis) and one of + # b the semi-minor axis + # rf the reciprocal flattening + # f flattening + # es eccentricity squared + # must be given. + a = kwargs['a'] + if kwargs.has_key('b'): + b = kwargs['b'] + es = 1. - (b * b) / (a * a) + f = (a - b)/a + elif kwargs.has_key('rf'): + f = 1./kwargs['rf'] + b = a*(1. - f) + es = 1. - (b * b) / (a * a) + elif kwargs.has_key('f'): + f = kwargs['f'] + b = a*(1. - f) + es = 1. - (b/a)**2 + elif kwargs.has_key('es'): + es = kwargs['es'] + b = math.sqrt(a**2 - es*a**2) + f = (a - b)/a + elif kwargs.has_key('e'): + es = kwargs['e']**2 + b = math.sqrt(a**2 - es*a**2) + f = (a - b)/a + else: + b = a + f = 0. + es = 0. + #msg='ellipse name or a, plus one of f,es,b must be given' + #raise ValueError(msg) + if math.fabs(f) < 1.e-8: self.sphere = True + self.a = a + self.f = f + self.es = es + return _geod.Geod.__new__(self,self.a,self.f,self.es,self.sphere) def fwd(self, lons, lats, az, dist, radians=False): """ @@ -533,7 +748,7 @@ def fwd(self, lons, lats, az, dist, radians=False): inz, zisfloat, zislist, zistuple = _copytobuffer(az) ind, disfloat, dislist, distuple = _copytobuffer(dist) # call geod_for function. inputs modified in place. - _Geod._fwd(self, inx, iny, inz, ind, radians=radians) + _geod.Geod._fwd(self, inx, iny, inz, ind, radians=radians) # if inputs were lists, tuples or floats, convert back. outx = _convertback(xisfloat,xislist,xistuple,inx) outy = _convertback(yisfloat,yislist,xistuple,iny) @@ -558,7 +773,7 @@ def inv(self, lons1, lats1, lons2, lats2, radians=False): inz, zisfloat, zislist, zistuple = _copytobuffer(lons2) ind, disfloat, dislist, distuple = _copytobuffer(lats2) # call geod_inv function. inputs modified in place. - _Geod._inv(self, inx, iny, inz, ind, radians=radians) + _geod.Geod._inv(self, inx, iny, inz, ind, radians=radians) # if inputs were lists, tuples or floats, convert back. outx = _convertback(xisfloat,xislist,xistuple,inx) outy = _convertback(yisfloat,yislist,xistuple,iny) @@ -596,7 +811,7 @@ def npts(self, lon1, lat1, lon2, lat2, npts, radians=False): '46.805 -114.051' '46.262 -118.924' """ - lons, lats = _Geod._npts(self,lon1,lat1,lon2,lat2,npts,radians=radians) + lons, lats = _geod.Geod._npts(self,lon1,lat1,lon2,lat2,npts,radians=radians) return list(zip(lons, lats)) def test(): diff --git a/nad2bin.c b/nad2bin.c index db4bb0766..807859ba1 100644 --- a/nad2bin.c +++ b/nad2bin.c @@ -1,65 +1,364 @@ -/* Convert bivariate ASCII NAD27 to NAD83 tables to binary structure */ +/* Convert bivariate ASCII NAD27 to NAD83 tables to NTv2 binary structure */ #include #include +#include + #define PJ_LIB__ #include #define U_SEC_TO_RAD 4.848136811095359935899141023e-12 - static char -*usage = "phi * (3600.0 / (PI/180.0)); + row_buf[i*4+1] = cvs->lam * (3600.0 / (PI/180.0)); + + /* We leave the accuracy values as zero */ + } + + if( !IS_LSB ) + swap_words( row_buf, 4, ct.lim.lam * 4 ); + + if( fwrite( row_buf, sizeof(float), ct.lim.lam*4, fp ) + != 4 * ct.lim.lam ) + { + perror( "write()" ); + exit( 2 ); + } + } + } + + fclose( fp ); + exit(0); /* normal completion */ + } + + fprintf( stderr, "Unsupported format, nothing written.\n" ); + exit( 3 ); } diff --git a/setup.py b/setup.py index 6a444433d..bc06844e2 100644 --- a/setup.py +++ b/setup.py @@ -61,13 +61,15 @@ def checkversion(GEOS_dir): # proj4 and geos extensions. deps = glob.glob('src/*.c') deps.remove(os.path.join('src','_proj.c')) -deps.remove(os.path.join('src','_geod.c')) deps.remove(os.path.join('src','_geoslib.c')) packages = ['mpl_toolkits','mpl_toolkits.basemap'] package_dirs = {'':'lib'} extensions = [Extension("mpl_toolkits.basemap._proj",deps+['src/_proj.c'],include_dirs = ['src'],)] -extensions.append(Extension("mpl_toolkits.basemap._geod",deps+['src/_geod.c'],include_dirs = ['src'],)) +deps = glob.glob('geodesic/*.c') +deps.remove(os.path.join('geodesic','_geod.c')) +extensions.append(Extension("mpl_toolkits.basemap._geod",deps+['geodesic/_geod.c'],\ + include_dirs = ['geodesic'],)) # can't install _geoslib in mpl_toolkits.basemap namespace, # or Basemap objects won't be pickleable. if sys.platform == 'win32': @@ -94,7 +96,7 @@ def checkversion(GEOS_dir): cc = ccompiler.new_compiler() sysconfig.customize_compiler(cc) cc.set_include_dirs(['src']) - objects = cc.compile(['nad2bin.c']) + objects = cc.compile(['nad2bin.c', 'src/pj_malloc.c']) execname = 'nad2bin' cc.link_executable(objects, execname) llafiles = glob.glob('datumgrid/*.lla') diff --git a/src/PJ_aea.c b/src/PJ_aea.c index c37993657..53f03b02d 100644 --- a/src/PJ_aea.c +++ b/src/PJ_aea.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: PJ_aea.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: PJ_aea.c 1856 2010-06-11 03:26:04Z warmerdam $ * * Project: PROJ.4 * Purpose: Implementation of the aea (Albers Equal Area) projection. @@ -43,7 +43,7 @@ #define PJ_LIB__ #include -PJ_CVSID("$Id: PJ_aea.c 1504 2009-01-06 02:11:57Z warmerdam $"); +PJ_CVSID("$Id: PJ_aea.c 1856 2010-06-11 03:26:04Z warmerdam $"); # define EPS10 1.e-10 # define TOL7 1.e-7 @@ -153,10 +153,10 @@ setup(PJ *P) { return P; } ENTRY1(aea,en) - P->phi1 = pj_param(P->params, "rlat_1").f; - P->phi2 = pj_param(P->params, "rlat_2").f; + P->phi1 = pj_param(P->ctx, P->params, "rlat_1").f; + P->phi2 = pj_param(P->ctx, P->params, "rlat_2").f; ENDENTRY(setup(P)) ENTRY1(leac,en) - P->phi2 = pj_param(P->params, "rlat_1").f; - P->phi1 = pj_param(P->params, "bsouth").i ? - HALFPI: HALFPI; + P->phi2 = pj_param(P->ctx, P->params, "rlat_1").f; + P->phi1 = pj_param(P->ctx, P->params, "bsouth").i ? - HALFPI: HALFPI; ENDENTRY(setup(P)) diff --git a/src/PJ_aeqd.c b/src/PJ_aeqd.c index dea9edff1..6ff287189 100644 --- a/src/PJ_aeqd.c +++ b/src/PJ_aeqd.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: PJ_aeqd.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: PJ_aeqd.c 1856 2010-06-11 03:26:04Z warmerdam $ * * Project: PROJ.4 * Purpose: Implementation of the aeqd (Azimuthal Equidistant) projection. @@ -40,7 +40,7 @@ #define PJ_LIB__ #include -PJ_CVSID("$Id: PJ_aeqd.c 1504 2009-01-06 02:11:57Z warmerdam $"); +PJ_CVSID("$Id: PJ_aeqd.c 1856 2010-06-11 03:26:04Z warmerdam $"); PROJ_HEAD(aeqd, "Azimuthal Equidistant") "\n\tAzi, Sph&Ell\n\tlat_0 guam"; @@ -87,7 +87,7 @@ FORWARD(e_forward); /* elliptical */ ct = cos(t); st = sin(t); Az = atan2(sin(lp.lam) * ct, P->cosph0 * st - P->sinph0 * coslam * ct); cA = cos(Az); sA = sin(Az); - s = aasin( fabs(sA) < TOL ? + s = aasin( P->ctx, fabs(sA) < TOL ? (P->cosph0 * st - P->sinph0 * coslam * ct) / cA : sin(lp.lam) * ct / sA ); H = P->He * cA; @@ -147,7 +147,7 @@ INVERSE(e_guam_inv); /* Guam elliptical */ lp.phi = P->phi0; for (i = 0; i < 3; ++i) { t = P->e * sin(lp.phi); - lp.phi = pj_inv_mlfn(P->M1 + xy.y - + lp.phi = pj_inv_mlfn(P->ctx, P->M1 + xy.y - x2 * tan(lp.phi) * (t = sqrt(1. - t * t)), P->es, P->en); } lp.lam = xy.x * t / cos(lp.phi); @@ -170,8 +170,8 @@ INVERSE(e_inverse); /* elliptical */ D = c / P->N1; E = D * (1. - D * D * (A * (1. + A) / 6. + B * (1. + 3.*A) * D / 24.)); F = 1. - E * E * (A / 2. + B * E / 6.); - psi = aasin(P->sinph0 * cos(E) + t * sin(E)); - lp.lam = aasin(sin(Az) * sin(E) / cos(psi)); + psi = aasin(P->ctx, P->sinph0 * cos(E) + t * sin(E)); + lp.lam = aasin(P->ctx, sin(Az) * sin(E) / cos(psi)); if ((t = fabs(psi)) < EPS10) lp.phi = 0.; else if (fabs(t - HALFPI) < 0.) @@ -180,7 +180,7 @@ INVERSE(e_inverse); /* elliptical */ lp.phi = atan((1. - P->es * F * P->sinph0 / sin(psi)) * tan(psi) / P->one_es); } else { /* Polar */ - lp.phi = pj_inv_mlfn(P->mode == N_POLE ? P->Mp - c : P->Mp + c, + lp.phi = pj_inv_mlfn(P->ctx, P->mode == N_POLE ? P->Mp - c : P->Mp + c, P->es, P->en); lp.lam = atan2(xy.x, P->mode == N_POLE ? -xy.y : xy.y); } @@ -201,11 +201,11 @@ INVERSE(s_inverse); /* spherical */ sinc = sin(c_rh); cosc = cos(c_rh); if (P->mode == EQUIT) { - lp.phi = aasin(xy.y * sinc / c_rh); + lp.phi = aasin(P->ctx, xy.y * sinc / c_rh); xy.x *= sinc; xy.y = cosc * c_rh; } else { - lp.phi = aasin(cosc * P->sinph0 + xy.y * sinc * P->cosph0 / + lp.phi = aasin(P->ctx,cosc * P->sinph0 + xy.y * sinc * P->cosph0 / c_rh); xy.y = (cosc - P->sinph0 * sin(lp.phi)) * c_rh; xy.x *= sinc * P->cosph0; @@ -228,7 +228,7 @@ FREEUP; } } ENTRY1(aeqd, en) - P->phi0 = pj_param(P->params, "rlat_0").f; + P->phi0 = pj_param(P->ctx, P->params, "rlat_0").f; if (fabs(fabs(P->phi0) - HALFPI) < EPS10) { P->mode = P->phi0 < 0. ? S_POLE : N_POLE; P->sinph0 = P->phi0 < 0. ? -1. : 1.; @@ -246,7 +246,7 @@ ENTRY1(aeqd, en) P->inv = s_inverse; P->fwd = s_forward; } else { if (!(P->en = pj_enfn(P->es))) E_ERROR_0; - if (pj_param(P->params, "bguam").i) { + if (pj_param(P->ctx, P->params, "bguam").i) { P->M1 = pj_mlfn(P->phi0, P->sinph0, P->cosph0, P->en); P->inv = e_guam_inv; P->fwd = e_guam_fwd; } else { diff --git a/src/PJ_airy.c b/src/PJ_airy.c index 2de02ee21..abb4d1278 100644 --- a/src/PJ_airy.c +++ b/src/PJ_airy.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: PJ_airy.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: PJ_airy.c 1856 2010-06-11 03:26:04Z warmerdam $ * * Project: PROJ.4 * Purpose: Implementation of the airy (Airy) projection. @@ -37,7 +37,7 @@ #define PJ_LIB__ #include -PJ_CVSID("$Id: PJ_airy.c 1504 2009-01-06 02:11:57Z warmerdam $"); +PJ_CVSID("$Id: PJ_airy.c 1856 2010-06-11 03:26:04Z warmerdam $"); PROJ_HEAD(airy, "Airy") "\n\tMisc Sph, no inv.\n\tno_cut lat_b="; @@ -94,8 +94,8 @@ FREEUP; if (P) pj_dalloc(P); } ENTRY0(airy) double beta; - P->no_cut = pj_param(P->params, "bno_cut").i; - beta = 0.5 * (HALFPI - pj_param(P->params, "rlat_b").f); + P->no_cut = pj_param(P->ctx, P->params, "bno_cut").i; + beta = 0.5 * (HALFPI - pj_param(P->ctx, P->params, "rlat_b").f); if (fabs(beta) < EPS) P->Cb = -0.5; else { diff --git a/src/PJ_aitoff.c b/src/PJ_aitoff.c index a49b30bbc..1e39b2f37 100644 --- a/src/PJ_aitoff.c +++ b/src/PJ_aitoff.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: PJ_aitoff.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: PJ_aitoff.c 1856 2010-06-11 03:26:04Z warmerdam $ * * Project: PROJ.4 * Purpose: Implementation of the aitoff (Aitoff) and wintri (Winkel Tripel) @@ -34,7 +34,7 @@ #define PJ_LIB__ #include -PJ_CVSID("$Id: PJ_aitoff.c 1504 2009-01-06 02:11:57Z warmerdam $"); +PJ_CVSID("$Id: PJ_aitoff.c 1856 2010-06-11 03:26:04Z warmerdam $"); PROJ_HEAD(aitoff, "Aitoff") "\n\tMisc Sph"; PROJ_HEAD(wintri, "Winkel Tripel") "\n\tMisc Sph\n\tlat_1"; @@ -66,9 +66,9 @@ ENTRY0(aitoff) ENDENTRY(setup(P)) ENTRY0(wintri) P->mode = 1; - if (pj_param(P->params, "tlat_1").i) + if (pj_param(P->ctx, P->params, "tlat_1").i) { - if ((P->cosphi1 = cos(pj_param(P->params, "rlat_1").f)) == 0.) + if ((P->cosphi1 = cos(pj_param(P->ctx, P->params, "rlat_1").f)) == 0.) E_ERROR(-22) } else /* 50d28' or acos(2/pi) */ diff --git a/src/PJ_bipc.c b/src/PJ_bipc.c index 5cb74256b..471e7266c 100644 --- a/src/PJ_bipc.c +++ b/src/PJ_bipc.c @@ -125,7 +125,7 @@ INVERSE(s_inverse); /* spheroid */ } FREEUP; if (P) pj_dalloc(P); } ENTRY0(bipc) - P->noskew = pj_param(P->params, "bns").i; + P->noskew = pj_param(P->ctx, P->params, "bns").i; P->inv = s_inverse; P->fwd = s_forward; P->es = 0.; diff --git a/src/PJ_bonne.c b/src/PJ_bonne.c index 81a5bf983..4b1e78669 100644 --- a/src/PJ_bonne.c +++ b/src/PJ_bonne.c @@ -45,7 +45,7 @@ INVERSE(e_inverse); /* ellipsoid */ double s, rh; rh = hypot(xy.x, xy.y = P->am1 - xy.y); - lp.phi = pj_inv_mlfn(P->am1 + P->m1 - rh, P->es, P->en); + lp.phi = pj_inv_mlfn(P->ctx, P->am1 + P->m1 - rh, P->es, P->en); if ((s = fabs(lp.phi)) < HALFPI) { s = sin(lp.phi); lp.lam = rh * atan2(xy.x, xy.y) * @@ -65,7 +65,7 @@ FREEUP; ENTRY1(bonne, en) double c; - P->phi1 = pj_param(P->params, "rlat_1").f; + P->phi1 = pj_param(P->ctx, P->params, "rlat_1").f; if (fabs(P->phi1) < EPS10) E_ERROR(-23); if (P->es) { P->en = pj_enfn(P->es); diff --git a/src/PJ_cass.c b/src/PJ_cass.c index 4539c66b0..38fa9db5d 100644 --- a/src/PJ_cass.c +++ b/src/PJ_cass.c @@ -40,7 +40,7 @@ FORWARD(s_forward); /* spheroid */ INVERSE(e_inverse); /* ellipsoid */ double ph1; - ph1 = pj_inv_mlfn(P->m0 + xy.y, P->es, P->en); + ph1 = pj_inv_mlfn(P->ctx, P->m0 + xy.y, P->es, P->en); P->tn = tan(ph1); P->t = P->tn * P->tn; P->n = sin(ph1); P->r = 1. / (1. - P->es * P->n * P->n); diff --git a/src/PJ_cea.c b/src/PJ_cea.c index 97e4f3aa6..f5b788380 100644 --- a/src/PJ_cea.c +++ b/src/PJ_cea.c @@ -42,10 +42,9 @@ FREEUP; ENTRY1(cea, apa) double t; - if (pj_param(P->params, "tlat_ts").i && - (P->k0 = cos(t = pj_param(P->params, "rlat_ts").f)) < 0.) E_ERROR(-24) - else - t = 0.; + if (pj_param(P->ctx, P->params, "tlat_ts").i && + (P->k0 = cos(t = pj_param(P->ctx, P->params, "rlat_ts").f)) < 0.) + E_ERROR(-24); if (P->es) { t = sin(t); P->k0 /= sqrt(1. - P->es * t * t); diff --git a/src/PJ_chamb.c b/src/PJ_chamb.c index c17a71335..65f21129d 100644 --- a/src/PJ_chamb.c +++ b/src/PJ_chamb.c @@ -17,17 +17,17 @@ PROJ_HEAD(chamb, "Chamberlin Trimetric") "\n\tMisc Sph, no inv." #define THIRD 0.333333333333333333 #define TOL 1e-9 static VECT /* distance and azimuth from point 1 to point 2 */ -vect(double dphi, double c1, double s1, double c2, double s2, double dlam) { +vect(projCtx ctx, double dphi, double c1, double s1, double c2, double s2, double dlam) { VECT v; double cdl, dp, dl; cdl = cos(dlam); if (fabs(dphi) > 1. || fabs(dlam) > 1.) - v.r = aacos(s1 * s2 + c1 * c2 * cdl); + v.r = aacos(ctx, s1 * s2 + c1 * c2 * cdl); else { /* more accurate for smaller distances */ dp = sin(.5 * dphi); dl = sin(.5 * dlam); - v.r = 2. * aasin(sqrt(dp * dp + c1 * c2 * dl * dl)); + v.r = 2. * aasin(ctx,sqrt(dp * dp + c1 * c2 * dl * dl)); } if (fabs(v.r) > TOL) v.Az = atan2(c2 * sin(dlam), c1 * s2 - s1 * c2 * cdl); @@ -36,8 +36,8 @@ vect(double dphi, double c1, double s1, double c2, double s2, double dlam) { return v; } static double /* law of cosines */ -lc(double b,double c,double a) { - return aacos(.5 * (b * b + c * c - a * a) / (b * c)); +lc(projCtx ctx, double b,double c,double a) { + return aacos(ctx, .5 * (b * b + c * c - a * a) / (b * c)); } FORWARD(s_forward); /* spheroid */ double sinphi, cosphi, a; @@ -47,7 +47,7 @@ FORWARD(s_forward); /* spheroid */ sinphi = sin(lp.phi); cosphi = cos(lp.phi); for (i = 0; i < 3; ++i) { /* dist/azimiths from control */ - v[i] = vect(lp.phi - P->c[i].phi, P->c[i].cosphi, P->c[i].sinphi, + v[i] = vect(P->ctx, lp.phi - P->c[i].phi, P->c[i].cosphi, P->c[i].sinphi, cosphi, sinphi, lp.lam - P->c[i].lam); if ( ! v[i].r) break; @@ -59,7 +59,7 @@ FORWARD(s_forward); /* spheroid */ xy = P->p; for (i = 0; i < 3; ++i) { j = i == 2 ? 0 : i + 1; - a = lc(P->c[i].v.r, v[i].r, v[j].r); + a = lc(P->ctx,P->c[i].v.r, v[i].r, v[j].r); if (v[i].Az < 0.) a = -a; if (! i) { /* coord comp unique to each arc */ @@ -87,22 +87,22 @@ ENTRY0(chamb) for (i = 0; i < 3; ++i) { /* get control point locations */ (void)sprintf(line, "rlat_%d", i+1); - P->c[i].phi = pj_param(P->params, line).f; + P->c[i].phi = pj_param(P->ctx, P->params, line).f; (void)sprintf(line, "rlon_%d", i+1); - P->c[i].lam = pj_param(P->params, line).f; + P->c[i].lam = pj_param(P->ctx, P->params, line).f; P->c[i].lam = adjlon(P->c[i].lam - P->lam0); P->c[i].cosphi = cos(P->c[i].phi); P->c[i].sinphi = sin(P->c[i].phi); } for (i = 0; i < 3; ++i) { /* inter ctl pt. distances and azimuths */ j = i == 2 ? 0 : i + 1; - P->c[i].v = vect(P->c[j].phi - P->c[i].phi, P->c[i].cosphi, P->c[i].sinphi, + P->c[i].v = vect(P->ctx,P->c[j].phi - P->c[i].phi, P->c[i].cosphi, P->c[i].sinphi, P->c[j].cosphi, P->c[j].sinphi, P->c[j].lam - P->c[i].lam); if (! P->c[i].v.r) E_ERROR(-25); /* co-linearity problem ignored for now */ } - P->beta_0 = lc(P->c[0].v.r, P->c[2].v.r, P->c[1].v.r); - P->beta_1 = lc(P->c[0].v.r, P->c[1].v.r, P->c[2].v.r); + P->beta_0 = lc(P->ctx,P->c[0].v.r, P->c[2].v.r, P->c[1].v.r); + P->beta_1 = lc(P->ctx,P->c[0].v.r, P->c[1].v.r, P->c[2].v.r); P->beta_2 = PI - P->beta_0; P->p.y = 2. * (P->c[0].p.y = P->c[1].p.y = P->c[2].v.r * sin(P->beta_0)); P->c[2].p.y = 0.; diff --git a/src/PJ_eck4.c b/src/PJ_eck4.c index 2b5c8101b..f90267dd1 100644 --- a/src/PJ_eck4.c +++ b/src/PJ_eck4.c @@ -35,9 +35,9 @@ FORWARD(s_forward); /* spheroid */ INVERSE(s_inverse); /* spheroid */ double c; - lp.phi = aasin(xy.y / C_y); + lp.phi = aasin(P->ctx,xy.y / C_y); lp.lam = xy.x / (C_x * (1. + (c = cos(lp.phi)))); - lp.phi = aasin((lp.phi + sin(lp.phi) * (c + 2.)) / C_p); + lp.phi = aasin(P->ctx,(lp.phi + sin(lp.phi) * (c + 2.)) / C_p); return (lp); } FREEUP; if (P) pj_dalloc(P); } diff --git a/src/PJ_eqc.c b/src/PJ_eqc.c index 533fb63e9..c69a6baad 100644 --- a/src/PJ_eqc.c +++ b/src/PJ_eqc.c @@ -16,7 +16,7 @@ INVERSE(s_inverse); /* spheroid */ } FREEUP; if (P) pj_dalloc(P); } ENTRY0(eqc) - if ((P->rc = cos(pj_param(P->params, "rlat_ts").f)) <= 0.) E_ERROR(-24); + if ((P->rc = cos(pj_param(P->ctx, P->params, "rlat_ts").f)) <= 0.) E_ERROR(-24); P->inv = s_inverse; P->fwd = s_forward; P->es = 0.; diff --git a/src/PJ_eqdc.c b/src/PJ_eqdc.c index eda95b0d3..01a0f03f2 100644 --- a/src/PJ_eqdc.c +++ b/src/PJ_eqdc.c @@ -28,7 +28,7 @@ INVERSE(e_inverse); /* sphere & ellipsoid */ } lp.phi = P->c - P->rho; if (P->ellips) - lp.phi = pj_inv_mlfn(lp.phi, P->es, P->en); + lp.phi = pj_inv_mlfn(P->ctx, lp.phi, P->es, P->en); lp.lam = atan2(xy.x, xy.y) / P->n; } else { lp.lam = 0.; @@ -51,8 +51,8 @@ ENTRY1(eqdc, en) double cosphi, sinphi; int secant; - P->phi1 = pj_param(P->params, "rlat_1").f; - P->phi2 = pj_param(P->params, "rlat_2").f; + P->phi1 = pj_param(P->ctx, P->params, "rlat_1").f; + P->phi2 = pj_param(P->ctx, P->params, "rlat_2").f; if (fabs(P->phi1 + P->phi2) < EPS10) E_ERROR(-21); if (!(P->en = pj_enfn(P->es))) E_ERROR_0; diff --git a/src/PJ_fouc_s.c b/src/PJ_fouc_s.c index dee05a96b..b84b3f829 100644 --- a/src/PJ_fouc_s.c +++ b/src/PJ_fouc_s.c @@ -28,14 +28,14 @@ INVERSE(s_inverse); /* spheroid */ if (!i) lp.phi = xy.y < 0. ? -HALFPI : HALFPI; } else - lp.phi = aasin(xy.y); + lp.phi = aasin(P->ctx,xy.y); V = cos(lp.phi); lp.lam = xy.x * (P->n + P->n1 * V) / V; return (lp); } FREEUP; if (P) pj_dalloc(P); } ENTRY0(fouc_s) - P->n = pj_param(P->params, "dn").f; + P->n = pj_param(P->ctx, P->params, "dn").f; if (P->n < 0. || P->n > 1.) E_ERROR(-99) P->n1 = 1. - P->n; diff --git a/src/PJ_geos.c b/src/PJ_geos.c index db9dd7e54..336a13679 100644 --- a/src/PJ_geos.c +++ b/src/PJ_geos.c @@ -4,7 +4,7 @@ ** Copyright (c) 2004 Gerald I. Evenden */ static const char -LIBPROJ_ID[] = "$Id: PJ_geos.c 1504 2009-01-06 02:11:57Z warmerdam $"; +LIBPROJ_ID[] = "$Id: PJ_geos.c 1856 2010-06-11 03:26:04Z warmerdam $"; /* ** See also (section 4.4.3.2): ** http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf @@ -79,7 +79,7 @@ FORWARD(e_forward); /* ellipsoid */ return (xy); } INVERSE(s_inverse); /* spheroid */ - double Vx, Vy, Vz, a, b, c, det, k; + double Vx, Vy, Vz, a, b, det, k; /* Setting three components of vector from satellite to position.*/ Vx = -1.0; @@ -100,7 +100,7 @@ INVERSE(s_inverse); /* spheroid */ return (lp); } INVERSE(e_inverse); /* ellipsoid */ - double Vx, Vy, Vz, a, b, c, det, k; + double Vx, Vy, Vz, a, b, det, k; /* Setting three components of vector from satellite to position.*/ Vx = -1.0; @@ -124,7 +124,7 @@ INVERSE(e_inverse); /* ellipsoid */ } FREEUP; if (P) free(P); } ENTRY0(geos) - if ((P->h = pj_param(P->params, "dh").f) <= 0.) E_ERROR(-30); + if ((P->h = pj_param(P->ctx, P->params, "dh").f) <= 0.) E_ERROR(-30); if (P->phi0) E_ERROR(-46); P->radius_g = 1. + (P->radius_g_1 = P->h / P->a); P->C = P->radius_g * P->radius_g - 1.0; diff --git a/src/PJ_gn_sinu.c b/src/PJ_gn_sinu.c index 3bf9854f4..bfd8bc2df 100644 --- a/src/PJ_gn_sinu.c +++ b/src/PJ_gn_sinu.c @@ -21,7 +21,7 @@ FORWARD(e_forward); /* ellipsoid */ INVERSE(e_inverse); /* ellipsoid */ double s; - if ((s = fabs(lp.phi = pj_inv_mlfn(xy.y, P->es, P->en))) < HALFPI) { + if ((s = fabs(lp.phi = pj_inv_mlfn(P->ctx, xy.y, P->es, P->en))) < HALFPI) { s = sin(lp.phi); lp.lam = xy.x * sqrt(1. - P->es * s * s) / cos(lp.phi); } else if ((s - EPS10) < HALFPI) @@ -32,7 +32,7 @@ INVERSE(e_inverse); /* ellipsoid */ /* General spherical sinusoidals */ FORWARD(s_forward); /* sphere */ if (!P->m) - lp.phi = P->n != 1. ? aasin(P->n * sin(lp.phi)): lp.phi; + lp.phi = P->n != 1. ? aasin(P->ctx,P->n * sin(lp.phi)): lp.phi; else { double k, V; int i; @@ -52,11 +52,9 @@ FORWARD(s_forward); /* sphere */ return (xy); } INVERSE(s_inverse); /* sphere */ - double s; - xy.y /= P->C_y; - lp.phi = P->m ? aasin((P->m * xy.y + sin(xy.y)) / P->n) : - ( P->n != 1. ? aasin(sin(xy.y) / P->n) : xy.y ); + lp.phi = P->m ? aasin(P->ctx,(P->m * xy.y + sin(xy.y)) / P->n) : + ( P->n != 1. ? aasin(P->ctx,sin(xy.y) / P->n) : xy.y ); lp.lam = xy.x / (P->C_x * (P->m + cos(xy.y))); return (lp); } @@ -91,9 +89,9 @@ ENTRY1(mbtfps, en) setup(P); ENDENTRY(P) ENTRY1(gn_sinu, en) - if (pj_param(P->params, "tn").i && pj_param(P->params, "tm").i) { - P->n = pj_param(P->params, "dn").f; - P->m = pj_param(P->params, "dm").f; + if (pj_param(P->ctx, P->params, "tn").i && pj_param(P->ctx, P->params, "tm").i) { + P->n = pj_param(P->ctx, P->params, "dn").f; + P->m = pj_param(P->ctx, P->params, "dm").f; } else E_ERROR(-99) setup(P); diff --git a/src/PJ_goode.c b/src/PJ_goode.c index ed8ded8b4..387557e6a 100644 --- a/src/PJ_goode.c +++ b/src/PJ_goode.c @@ -39,6 +39,9 @@ ENTRY2(goode, sinu, moll) P->es = 0.; if (!(P->sinu = pj_sinu(0)) || !(P->moll = pj_moll(0))) E_ERROR_0; + P->sinu->es = 0.; + P->sinu->ctx = P->ctx; + P->moll->ctx = P->ctx; if (!(P->sinu = pj_sinu(P->sinu)) || !(P->moll = pj_moll(P->moll))) E_ERROR_0; P->fwd = s_forward; diff --git a/src/PJ_gstmerc.c b/src/PJ_gstmerc.c index 23b86ee82..bffe0b265 100644 --- a/src/PJ_gstmerc.c +++ b/src/PJ_gstmerc.c @@ -28,7 +28,7 @@ INVERSE(s_inverse); /* spheroid */ sinC= sin((xy.y*P->a - P->YS)/P->n2)/cosh((xy.x*P->a - P->XS)/P->n2); LC= log(pj_tsfn(-1.0*asin(sinC),0.0,0.0)); lp.lam= L/P->n1; - lp.phi= -1.0*pj_phi2(exp((LC-P->c)/P->n1),P->e); + lp.phi= -1.0*pj_phi2(P->ctx, exp((LC-P->c)/P->n1),P->e); /*fprintf(stderr,"inv:\nL =%16.13f\nsinC =%16.13f\nLC =%16.13f\nXY(%16.4f,%16.4f)=LP(%16.13f,%16.13f)\n",L,sinC,LC,((xy.x/P->ra)+P->x0)/P->to_meter,((xy.y/P->ra)+P->y0)/P->to_meter,lp.lam+P->lam0,lp.phi);*/ return (lp); } diff --git a/src/PJ_hammer.c b/src/PJ_hammer.c index d5ccbe100..fb5f3de3b 100644 --- a/src/PJ_hammer.c +++ b/src/PJ_hammer.c @@ -23,18 +23,18 @@ INVERSE(s_inverse); /* spheroid */ pj_errno = -14; } else { lp.lam = aatan2(P->w * xy.x * z,2. * z * z - 1)/P->w; - lp.phi = aasin(z * xy.y); + lp.phi = aasin(P->ctx,z * xy.y); } return (lp); } FREEUP; if (P) pj_dalloc(P); } ENTRY0(hammer) - if (pj_param(P->params, "tW").i) { - if ((P->w = fabs(pj_param(P->params, "dW").f)) <= 0.) E_ERROR(-27); + if (pj_param(P->ctx, P->params, "tW").i) { + if ((P->w = fabs(pj_param(P->ctx, P->params, "dW").f)) <= 0.) E_ERROR(-27); } else P->w = .5; - if (pj_param(P->params, "tM").i) { - if ((P->m = fabs(pj_param(P->params, "dM").f)) <= 0.) E_ERROR(-27); + if (pj_param(P->ctx, P->params, "tM").i) { + if ((P->m = fabs(pj_param(P->ctx, P->params, "dM").f)) <= 0.) E_ERROR(-27); } else P->m = 1.; P->rm = 1. / P->m; diff --git a/src/PJ_healpix.c b/src/PJ_healpix.c new file mode 100644 index 000000000..799605b9a --- /dev/null +++ b/src/PJ_healpix.c @@ -0,0 +1,672 @@ +/****************************************************************************** + * $Id: PJ_healpix.c 1504 2011-10-18 14:58:57Z landcare $ + * + * Project: PROJ.4 + * Purpose: Implementation of the healpix projection. + * Definition: http://code.scenzgrid.org/index.php/p/scenzgrid-py/source/tree/master/docs/scenzgrid.pdf + * Author: Alex Raichev & Michael Speth , spethm@landcareresearch.co.nz + * + ****************************************************************************** + * Copyright (c) 2001, Thomas Flemming, tf@ttqv.com + * + * 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 PROJ_PARMS__ \ + int npole;\ + int spole; + +#define PJ_LIB__ +# include +PROJ_HEAD(healpix, "HEALPix") "\n\tSph., Ellps."; +PROJ_HEAD(rhealpix, "rHEALPix") "\n\tSph., Ellps.\n\tnpole= spole="; +# include +# define R1 {{ 0,-1},{ 1, 0}} /** Matrix for anticlockwise rotation by pi/2 **/ +# define R2 {{-1, 0},{ 0,-1}} /** Matrix for anticlockwise rotation by pi (R1 X R1) X = dot product **/ +# define R3 {{ 0, 1},{-1, 0}} /** Matrix for anticlockwise rotation by 3*pi/2 (R2 X R1) **/ +# define IDENT {{1,0},{0,1}} +/** + * 0 - Identity matrix
+ * 1 - Counter-clockwise rotation by PI/2
+ * 2 - Counter-clockwise rotation by PI
+ * 3 - Counter-clockwise rotation by 3*PI/2
+ * 4 - Counter-clockwise rotation by 3*PI/2
+ * 5 - Counter-clockwise rotation by PI
+ * 6 - Counter-clockwise rotation by PI/2
+ **/ +# define ROT { IDENT, R1, R2, R3, R3, R2, R1} +# define RFACTOR 3 /** Used for returning the rotation matrix **/ +/** Used for calculating if a point is within the HEALPix projection for sphere. **/ +# define EPS 1e-12 +typedef struct { + int cn; // the number 0 -> 4 indicating the position of the polar cap. + double x,y; // the coordinates of the pole points (point of most extreme latitude on the polar caps). + enum Region { north, south, equatorial } region; +} CapMap; +typedef struct { + double x,y; +} Point; +double rot[7][2][2] = ROT; + +/** + NOTES: Alex Raichev implemented the math in python and this is a port of his work. + The healpix projection is a Lambert cylindrical equal-area projection for + equaltorial latitudes and an interrupted Colignon projection for polar + latitudes. + **/ + +/** + * Returns the sign of the double. + * @param v the parameter whose sign is returned. + * @return 1 for positive number, -1 for negative, and 0 for zero. + **/ +double sign (double v) { + return v > 0 ? 1 : (v < 0 ? -1 : 0); +} +/** + * Scales the number by a factor. + * @param num the number to be scaled. + * @param factor the factor to scale the number by. + * @param isInverse 1 for scaling the number by 1 / factor and 0 for scaling by the factor. + * @return the scaled number. + **/ +double scale_number(double num, double factor, int isInverse){ + if(isInverse == 1){ + return num * 1.0/factor; + } + return num * factor; +} +/** + * Scales all the items of the array by a factor. + * @param xy + **/ +void scale_array(XY *array, double k, int inverse){ + double c = 0; + if (inverse == 1) { + c = 1.0/k; + }else{ + c = k; + } + array->x *= c; + array->y *= c; +} +/** + * Given an angle return its equivalent angle. + * @param x the angle to convert + * @return the equivalent angle such that -PI <= the angle returend <= PI + **/ +double standardize_lon(double x){ + if(x < -1*PI || x >= PI){ + x = x - 2*PI*floor(x/(2*PI)); + if(x >= PI){ + x = x - 2*PI; + } + } + return x; +} +/** + * Given an angle, return its unit-circle equivalent angle. + * @param x the angel to convert. + * @return the equivalent angle such that -PI/2 <= the angle returned <= PI/2. + **/ +double standardize_lat(double x){ + if( x < -PI/2.0 || x > PI/2){ + x = x-2.0*PI*floor(x/(2.0*PI)); + if(x > PI/2.0 && x <= 3.0*PI/2){ + x = PI - x; + }else{ + x = x - 2*PI; + } + } + return x; +} +/** + * Calculates if the point lies on or within the polygon. + * Very good explination of how this works: http://paulbourke.net/geometry/insidepoly/ + * @param nvert the number of vertices in the polygon. + * @param vert the x,y-coordinates of the polygon's vertices + * @param testx the x-coordinate of the test point. + * @param testy the y-coordinate of the test point. + * @return 1 if on or within the bounds of the polygon, and 0 otherwise. + **/ +int pnpoly(int nvert, double vert[][nvert], double testx, double testy){ + + int i,j,c = 0; + int counter = 0; + double xinters; + Point p1,p2; + + // check for boundrary cases + for(i = 0; i < nvert; i++){ + if(testx == vert[i][0] && testy == vert[i][1]){ + return 1; + } + } + + // initialize p1 + p1.x = vert[0][0]; + p1.y = vert[0][1]; + + for(i = 1; i < nvert; i++){ + p2.x = vert[i % nvert][0]; + p2.y = vert[i % nvert][1]; + + if(testy > MIN(p1.y,p2.y)){ + if (testy <= MAX(p1.y,p2.y)) { + if (testx <= MAX(p1.x,p2.x)) { + if (p1.y != p2.y) { + xinters = (testy-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x; + if (p1.x == p2.x || testx <= xinters){ + counter++; + } + } + } + } + } + p1 = p2; + } + if(counter % 2 == 0){ + return 0; + }else{ + return 1; + } + return c; +} +/** + * Calculates if the coordinates are within the image of projection. + * @param x the x-coordinate to check. + * @param y the y-coordinate to check. + * @param proj 0 for healpix and 1 for rhealpix. + * @param npole the positions of the polar squares, only used for rhealpix. + * @param spole the positions of the polar squares, only used for rhealpix. + * @return 1 if the coordinate is within the projection and 0 otherwise. + **/ +int in_image(double x, double y, int proj, int npole, int spole){ + if(proj == 0){ + double healpixVertsJit[][18] = { + {-1.0*PI-EPS ,PI/4.0}, + {-3.0*PI/4.0 ,PI/2.0+EPS}, + {-1.0*PI/2.0 ,PI/4.0+EPS}, + {-1.0*PI/4.0 ,PI/2.0+EPS}, + {0.0 ,PI/4.0+EPS}, + {PI/4.0 ,PI/2.0+EPS}, + {PI/2.0 ,PI/4.0+EPS}, + {3.0*PI/4.0 ,PI/2.0+EPS}, + {PI+EPS ,PI/4.0}, + {PI+EPS ,-1.0*PI/4.0}, + {3.0*PI/4.0 ,-1.0*PI/2.0-EPS}, + {PI/2.0 ,-1.0*PI/4.0-EPS}, + {PI/4.0 ,-1.0*PI/2.0-EPS}, + {0.0 ,-1.0*PI/4.0-EPS}, + {-1.0*PI/4.0 ,-1.0*PI/2.0-EPS}, + {-1.0*PI/2.0 ,-1.0*PI/4.0-EPS}, + {-3.0*PI/4.0 ,-1.0*PI/2.0-EPS}, + {-1.0*PI-EPS ,-1.0*PI/4.0}}; + return pnpoly(18,healpixVertsJit,x,y); + }else{ + // Used for calculating if a point is within the rHEALPix projection for sphere. + double rhealpixVertsJit[][12] = { + {-1.0*PI-EPS ,PI/4.0+EPS}, + {-1.0*PI + npole*PI/2.0-EPS ,PI/4.0+EPS}, + {-1.0*PI + npole*PI/2.0-EPS ,3*PI/4.0+EPS}, + {-1.0*PI + (npole + 1.0)*PI/2.0+EPS ,3*PI/4.0+EPS}, + {-1.0*PI + (npole + 1.0)*PI/2.0+EPS ,PI/4.0+EPS}, + {PI+EPS ,PI/4.0+EPS}, + {PI+EPS ,-1.0*PI/4.0-EPS}, + {-1.0*PI + (spole + 1.0)*PI/2.0+EPS ,-1.0*PI/4.0-EPS}, + {-1.0*PI + (spole + 1.0)*PI/2.0+EPS ,-3.0*PI/4.0-EPS}, + {-1.0*PI + spole*PI/2.0-EPS ,-3.0*PI/4.0-EPS}, + {-1.0*PI + spole*PI/2.0-EPS ,-1.0*PI/4.0-EPS}, + {-1.0*PI-EPS ,-1.0*PI/4.0-EPS}}; + return pnpoly(12,rhealpixVertsJit,x,y); + } +} +/** + * Returns an authalic latitude of the point given a point of geographic + * latitude phi on an ellipse of eccentricity e. + * pj_authlat is the inverse of the alex's auth_lat. + * @param phi + * @param e + * @param inverse 1 for inverse or 0 otherwise. + * @return the authalic latitude of the point. + **/ +double auth_lat(double phi, double e, int inverse){ + if(inverse == 0){ + double q_numerator = ((1.0 - pow(e,2.0)) * sin(phi)); + double q_demonitor = (1.0 - (pow(e*sin(phi),2.0))); + double q_subtractor = - (1.0 - pow(e,2.0)) / (2.0*e) * log((1.0 - e*sin(phi)) / (1.0+e*sin(phi))); + double q = ((1.0 - pow(e,2.0)) * sin(phi)) / (1.0 - (pow(e*sin(phi),2.0))) - + (1.0 - pow(e,2.0)) / (2.0*e) * log((1.0 - e*sin(phi)) / (1.0+e*sin(phi))); + + double qp = 1.0 - (1.0-pow(e,2.0)) / (2.0*e)*log((1.0 - e) / (1.0 + e)); + double ratio = q/qp; + // Rounding errors + if( fabsl(ratio) > 1){ + ratio = sign(ratio); + } + return asin(ratio); + } + return phi + (pow(e,2) / 3.0 + 31*pow(e,4) / 180.0 + 517.0*pow(e,6)/5040.0) * sin(2.0*phi) + + (23.0*pow(e,4)/360.0 + 251.0*pow(e,6)/3780.0)*sin(4.0*phi) + + 761.0*pow(e,6)/45360.0 * sin(6.0*phi); +} +/** + * Compute the forward signature functions of the HEALPix + * projection of a sphere with radius `R` and central meridian `lon0`. +**/ +XY healpix_sphere(LP lp, PJ *P){ + double lam = standardize_lon(lp.lam); + double phi = standardize_lat(lp.phi); + double phi0 = aasin(P->ctx, 2.0/3.0); + XY xy; + // equatorial region + if( fabsl(phi) <= phi0) { + xy.x = lam; + xy.y = 3.0*PI/8.0*sin(phi); + } else { + double lamc; + double sigma = sqrt(3.0 * (1 - fabsl(sin(phi)))); + double cn = floor(2 * lam / PI + 2); + if (cn >= 4) { + cn = 3; + } + lamc = -3*PI/4 + (PI/2)*cn; + xy.x = lamc + (lam - lamc) * sigma; + xy.y = sign(phi)*PI/4 * (2 - sigma); + } + xy.x = scale_number(xy.x,P->a,0); + xy.y = scale_number(xy.y,P->a,0); + return xy; +} +/** + * Compute the inverse signature functions of the HEALPix + * projection of a sphere with radius `R` and central meridian `lon0`. +**/ +LP healpix_sphere_inv(XY xy, PJ *P){ + double x,y,y0; + double cn; + double xc; + double tau; + LP lp; + // Scale down to radius 1 sphere + x = scale_number(xy.x,P->a,1); + y = scale_number(xy.y,P->a,1); + y0 = PI/4.0; + // Equatorial region. + if(fabsl(y) <= y0){ + lp.lam = x; + lp.phi = asin(8.0*y/(3.0*PI)); + } else if(fabsl(y) < PI/2.0){ + cn = floor(2.0 * x/PI + 2.0); + if(cn >= 4){ + cn = 3; + } + xc = -3.0 * PI/4.0 + (PI/2.0)*cn; + tau = 2.0 - 4.0*fabsl(y)/PI; + lp.lam = xc + (x - xc)/tau; + lp.phi = sign(y)*asin(1.0 - pow(tau , 2.0)/3.0); + } else { + lp.lam = -1.0*PI - P->lam0; + lp.phi = sign(y)*PI/2.0; + } + return (lp); +} +/** + * Adds one vector to another of length 2. + * @param a the first term. + * @param b the second term. + * @param ret holds the summation of the vectors. + **/ +static void vector_add(double a[], double b[],double * ret){ + int i; + for(i = 0; i < 2; i++){ + ret[i] = a[i] + b[i]; + } +} +/** + * Subs tracts one vector from another of length 2. + * @param a the minuend. + * @param b the subtrahend. + * @param ret the difference of the vectors where the difference is the result of a minus b. + **/ +static void vector_sub(double a[], double b[], double * ret){ + int i; + for(i = 0; i < 2; i++){ + ret[i] = a[i] - b[i]; + } +} +/** + * Calculates the dot product of the arrays. + * @param a the array that will be used to calculate the dot product. + * Must contain the same number of columns as b's rows. Must be a matrix with equal lengthed rows and columns. + * @param b the array that will be used to calculate the dot product; must contain the same number of rows as a's columns. + * @param length the size of the b array. Note, a's column size must equal b's length. + * @param ret the dot product of a and b. + **/ +static void dot_product(double a[2][2], double b[], double * ret){ + int i,j; + int length = 2; + for(i = 0; i < length; i++){ + ret[i] = 0; + for(j = 0; j < length; j++){ + ret[i] += a[i][j]*b[i]; + } + } +} +/** + * Returns the polar cap number, pole point coordinates, and region + * for x,y in the HEALPix projection of the sphere of radius R. + * @param x coordinate in the HEALPix or rHEALPix. + * @param y coordinate in the HEALPix or rHEALPix. + * @param npole integer between 0 and 3 indicating the position of the north pole. + * @param spole integer between 0 and 3 indicating teh position of the south pole. + * @param inverse 1 computes the rHEALPix projection and 0 computes forward. + * @return a structure containing the cap poles. + **/ +static CapMap get_cap(double x, double y, double R, int npole, int spole, int inverse){ + CapMap capmap; + double c; + + capmap.x = x; + capmap.y = y; + + if(inverse == 0){ + if(y > R*PI/4.0){ + capmap.region = north; + c = R*PI/2.0; + }else if(y < -1*R*PI/4.0){ + capmap.region = south; + c = -1*R*PI/2.0; + }else{ + capmap.region = equatorial; + capmap.cn = 0; + return capmap; + } + // polar region + if(x < -1*R*PI/2.0){ + capmap.cn = 0; + capmap.x = (-1*R*3.0*PI/4.0); + capmap.y = c; + }else if(x >= -1*R*PI/2.0 && x < 0){ + capmap.cn = 1; + capmap.x = -1*R*PI/4.0; + capmap.y = c; + }else if(x >= 0 && x < R*PI/2.0){ + capmap.cn = 2; + capmap.x = R*PI/4.0; + capmap.y = c; + }else{ + capmap.cn = 3; + capmap.x = R*3.0*PI/4.0; + capmap.y = c; + } + return capmap; + }else{ + double c; + double eps; + if(y > R*PI/4.0){ + capmap.region = north; + capmap.x = -1*R*3.0*PI/4.0 + npole*R*PI/2.0; + capmap.y = R*PI/2.0; + x = x - npole*R*PI/2.0; + }else if(y < -1*R*PI/4.0){ + capmap.region = south; + capmap.x = -1*R*3.0*PI/4.0 + spole*R*PI/2; + capmap.y = -1*R*PI/2.0; + x = x - spole*R*PI/2.0; + }else{ + capmap.region = equatorial; + capmap.cn = 0; + return capmap; + } + // Polar Region, find # of HEALPix polar cap number that + // x,y moves to when rHEALPix polar square is disassembled. + eps = R*1e-15; // Kludge. Fuzz to avoid some rounding errors. + if(capmap.region == north){ + if(y >= -1*x - R*PI/4.0 - eps && y < x + R*5.0*PI/4.0 - eps){ + capmap.cn = 1; + }else if(y > -1*x -1*R*PI/4.0 + eps && y >= x + R*5.0*PI/4.0 - eps){ + capmap.cn = 2; + }else if(y <= -1*x -1*R*PI/4.0 + eps && y > x + R*5.0*PI/4.0 + eps){ + capmap.cn = 3; + }else{ + capmap.cn = 0; + } + }else if(capmap.region == south){ + if(y <= x + R*PI/4.0 + eps && y > -1*x - R*5.0*PI/4 + eps){ + capmap.cn = 1; + }else if(y < x + R*PI/4.0 - eps && y <= -1*x - R*5.0*PI/4.0 + eps){ + capmap.cn = 2; + }else if(y >= x + R*PI/4.0 - eps && y < -1*x - R*5.0*PI/4.0 - eps){ + capmap.cn = 3; + }else { + capmap.cn = 0; + } + } + return capmap; + } +} +/** + * Rearrange point x,y in the HEALPix projection by + * combining the polar caps into two polar squares. + * Put the north polar square in position npole and + * the south polar square in position spole. + * @param x coordinate in the HEALPix projection of the sphere. + * @param y coordinate in the HEALPix projection of the sphere. + * @param R - the Sphere's radius. + * @param npole integer between 0 and 3 indicating the position + * of the north polar square. + * @param spole integer between 0 and 3 indicating the position + * of the south polar square. + * @param inverse 1 to uncombine the polar caps and 0 to combine. + **/ +static XY combine_caps(double x, double y, double R, int npole, int spole, int inverse){ + XY xy; + double v[2]; + double a[2]; + double vector[2]; + double tmpVect[2]; + double v_min_c[2]; + double ret_dot[2]; + double ret_add[2]; + CapMap capmap = get_cap(x,y,R,npole,spole,inverse); + + if(capmap.region == equatorial){ + xy.x = capmap.x; + xy.y = capmap.y; + return xy; + } + v[0] = x; + v[1] = y; + if(inverse == 0){ + // compute forward function by rotating, translating, and shifting xy. + int pole = 0; + double (*tmpRot)[2]; + double c[2] = {capmap.x,capmap.y}; + if(capmap.region == north){ + pole = npole; + tmpRot = rot[capmap.cn]; + a[0] = R*-3.0*PI/4.0; + a[1] = PI/2.0; + }else { + pole = spole; + tmpRot = rot[capmap.cn+RFACTOR]; + a[0] = R*-3.0*PI/4.0; + a[1] = PI/-2.0; + } + + tmpVect[0] = R*pole*PI/2.0; + tmpVect[1] = 0; + // translate, rotate, then shift + vector_sub(v,c,v_min_c); + dot_product(tmpRot,v_min_c,ret_dot); + vector_add(a,tmpVect,ret_add); + vector_add(ret_dot, ret_add, vector); + xy.x = vector[0]; + xy.y = vector[1]; + return xy; + }else{ + // compute inverse function. + // get the current position of rHEALPix polar squares + int pole = floor( (capmap.x + R*3.0*PI/4.0) / (R*PI/2.0)); + double tmpVect[2] = {R*pole*PI/2.0,0}; + double coord[2] = {x,y}; + double (*tmpRot)[2]; + int cn; + // translate polar square to position 0 + vector_sub(coord,tmpVect,v); + // disassemble + if(capmap.region == north){ + cn = capmap.cn + RFACTOR; + a[0] = R*-3*PI/4.0; + a[1] = PI/2.0; + }else{ + cn = capmap.cn; + a[0] = R*-3*PI/4.0; + a[1] = PI/-2.0; + } + tmpVect[0] = R*capmap.cn*PI/2.0; + tmpVect[1] = 0; + // Math: Rotate Matrix * v-a + a + R*CN*{PI/2,0} + vector_sub(v,a,v_min_c); + dot_product(rot[cn],v_min_c,ret_dot); + vector_add(ret_dot,a,ret_add); + vector_add(ret_add,tmpVect,vector); + xy.x = vector[0]; + xy.y = vector[1]; + return xy; + } +} +FORWARD(e_healpix_forward); /* ellipsoidal */ + //int r1[][2] = R1; + double bet = auth_lat(lp.phi, P->e, 0); + lp.phi = bet; + P->a = P->ra; + return healpix_sphere(lp,P); +} +FORWARD(s_healpix_forward); /* spheroid */ + return healpix_sphere(lp, P); +} +INVERSE(e_healpix_inverse); /* ellipsoidal */ + double bet; + P->a = P->ra; + + // Scale down to radius 1 sphere before checking x,y + double x = scale_number(xy.x,P->a,1); + double y = scale_number(xy.y,P->a,1); + // check if the point is in the image + if(in_image(x,y,0,0,0) == 0){ + lp.lam = HUGE_VAL; + lp.phi = HUGE_VAL; + pj_ctx_set_errno( P->ctx, -15); + return lp; + } + + lp = healpix_sphere_inv(xy, P); + + lp.phi = auth_lat(lp.phi,P->e,1); + + return (lp); +} +INVERSE(s_healpix_inverse); /* spheroid */ + double x = xy.x; + double y = xy.y; + // Scale down to radius 1 sphere before checking x,y + x = scale_number(x,P->a,1); + y = scale_number(y,P->a,1); + // check if the point is in the image + if(in_image(x,y,0,0,0) == 0){ + lp.lam = HUGE_VAL; + lp.phi = HUGE_VAL; + pj_ctx_set_errno( P->ctx, -15); + return lp; + } + return healpix_sphere_inv(xy, P); +} +FORWARD(e_rhealpix_forward); /* ellipsoidal */ + double bet = auth_lat(lp.phi,P->e,0); + lp.phi = bet; + xy = healpix_sphere(lp,P); + return combine_caps(xy.x, xy.y, P->a, P->npole, P->spole, 0); +} +FORWARD(s_rhealpix_forward); /* spheroid */ + // Compute forward function. + xy = healpix_sphere(lp,P); + return combine_caps(xy.x, xy.y, P->a, P->npole, P->spole, 0); +} +INVERSE(e_rhealpix_inverse); /* ellipsoidal */ + double x = scale_number(xy.x,P->a,1); + double y = scale_number(xy.y,P->a,1); + // check for out of bounds coordinates + if(in_image(x,y,1,P->npole,P->spole) == 0){ + lp.lam = HUGE_VAL; + lp.phi = HUGE_VAL; + pj_ctx_set_errno( P->ctx, -15); + return lp; + } + + xy = combine_caps(xy.x,xy.y,P->a,P->npole,P->spole,1); + lp = healpix_sphere_inv(xy, P); + lp.phi = auth_lat(lp.phi,P->e,1); + return lp; +} +INVERSE(s_rhealpix_inverse); /* spheroid */ + double x = scale_number(xy.x,P->a,1); + double y = scale_number(xy.y,P->a,1); + // check for out of bounds coordinates + if(in_image(x,y,1,P->npole,P->spole) == 0){ + lp.lam = HUGE_VAL; + lp.phi = HUGE_VAL; + pj_ctx_set_errno( P->ctx, -15); + return lp; + } + xy = combine_caps(xy.x,xy.y,P->a,P->npole,P->spole,1); + return healpix_sphere_inv(xy, P); +} +FREEUP; + if (P) { + pj_dalloc(P); + } +} +ENTRY0(healpix) + if(P->es){ + P->inv = e_healpix_inverse; P->fwd = e_healpix_forward; + }else{ + P->inv = s_healpix_inverse; P->fwd = s_healpix_forward; + } +ENDENTRY(P) +ENTRY0(rhealpix) + P->npole = pj_param(P->ctx, P->params,"inpole").i; + P->spole = pj_param(P->ctx,P->params,"ispole").i; + + // check for valid npole and spole inputs + if(P->npole < 0 || P->npole > 3){ + E_ERROR(-47); + } + if(P->spole < 0 || P->spole > 3){ + E_ERROR(-47); + } + + if(P->es){ + P->inv = e_rhealpix_inverse; P->fwd = e_rhealpix_forward; + }else{ + P->inv = s_rhealpix_inverse; P->fwd = s_rhealpix_forward; + } +ENDENTRY(P) diff --git a/src/PJ_igh.c b/src/PJ_igh.c new file mode 100644 index 000000000..4155c856e --- /dev/null +++ b/src/PJ_igh.c @@ -0,0 +1,190 @@ +#define PROJ_PARMS__ \ + struct PJconsts* pj[12]; \ + double dy0; +#define PJ_LIB__ +#include +PROJ_HEAD(igh, "Interrupted Goode Homolosine") "\n\tPCyl, Sph."; + C_NAMESPACE PJ +*pj_sinu(PJ *), *pj_moll(PJ *); + +static const double d4044118 = (40 + 44/60. + 11.8/3600.) * DEG_TO_RAD; // 40d 44' 11.8" [degrees] + +static const double d10 = 10 * DEG_TO_RAD; +static const double d20 = 20 * DEG_TO_RAD; +static const double d30 = 30 * DEG_TO_RAD; +static const double d40 = 40 * DEG_TO_RAD; +static const double d50 = 50 * DEG_TO_RAD; +static const double d60 = 60 * DEG_TO_RAD; +static const double d80 = 80 * DEG_TO_RAD; +static const double d90 = 90 * DEG_TO_RAD; +static const double d100 = 100 * DEG_TO_RAD; +static const double d140 = 140 * DEG_TO_RAD; +static const double d160 = 160 * DEG_TO_RAD; +static const double d180 = 180 * DEG_TO_RAD; + +static const double EPSLN = 1.e-10; // allow a little 'slack' on zone edge positions + +FORWARD(s_forward); /* spheroid */ + int z; + if (lp.phi >= d4044118) { // 1|2 + z = (lp.lam <= -d40 ? 1: 2); + } + else if (lp.phi >= 0) { // 3|4 + z = (lp.lam <= -d40 ? 3: 4); + } + else if (lp.phi >= -d4044118) { // 5|6|7|8 + if (lp.lam <= -d100) z = 5; // 5 + else if (lp.lam <= -d20) z = 6; // 6 + else if (lp.lam <= d80) z = 7; // 7 + else z = 8; // 8 + } + else { // 9|10|11|12 + if (lp.lam <= -d100) z = 9; // 9 + else if (lp.lam <= -d20) z = 10; // 10 + else if (lp.lam <= d80) z = 11; // 11 + else z = 12; // 12 + } + + lp.lam -= P->pj[z-1]->lam0; + xy = P->pj[z-1]->fwd(lp, P->pj[z-1]); + xy.x += P->pj[z-1]->x0; + xy.y += P->pj[z-1]->y0; + + return (xy); +} +INVERSE(s_inverse); /* spheroid */ + const double y90 = P->dy0 + sqrt(2); // lt=90 corresponds to y=y0+sqrt(2) + + int z = 0; + if (xy.y > y90+EPSLN || xy.y < -y90+EPSLN) // 0 + z = 0; + else if (xy.y >= d4044118) // 1|2 + z = (xy.x <= -d40? 1: 2); + else if (xy.y >= 0) // 3|4 + z = (xy.x <= -d40? 3: 4); + else if (xy.y >= -d4044118) { // 5|6|7|8 + if (xy.x <= -d100) z = 5; // 5 + else if (xy.x <= -d20) z = 6; // 6 + else if (xy.x <= d80) z = 7; // 7 + else z = 8; // 8 + } + else { // 9|10|11|12 + if (xy.x <= -d100) z = 9; // 9 + else if (xy.x <= -d20) z = 10; // 10 + else if (xy.x <= d80) z = 11; // 11 + else z = 12; // 12 + } + + if (z) + { + int ok = 0; + + xy.x -= P->pj[z-1]->x0; + xy.y -= P->pj[z-1]->y0; + lp = P->pj[z-1]->inv(xy, P->pj[z-1]); + lp.lam += P->pj[z-1]->lam0; + + switch (z) { + case 1: ok = (lp.lam >= -d180-EPSLN && lp.lam <= -d40+EPSLN) || + ((lp.lam >= -d40-EPSLN && lp.lam <= -d10+EPSLN) && + (lp.phi >= d60-EPSLN && lp.phi <= d90+EPSLN)); break; + case 2: ok = (lp.lam >= -d40-EPSLN && lp.lam <= d180+EPSLN) || + ((lp.lam >= -d180-EPSLN && lp.lam <= -d160+EPSLN) && + (lp.phi >= d50-EPSLN && lp.phi <= d90+EPSLN)) || + ((lp.lam >= -d50-EPSLN && lp.lam <= -d40+EPSLN) && + (lp.phi >= d60-EPSLN && lp.phi <= d90+EPSLN)); break; + case 3: ok = (lp.lam >= -d180-EPSLN && lp.lam <= -d40+EPSLN); break; + case 4: ok = (lp.lam >= -d40-EPSLN && lp.lam <= d180+EPSLN); break; + case 5: ok = (lp.lam >= -d180-EPSLN && lp.lam <= -d100+EPSLN); break; + case 6: ok = (lp.lam >= -d100-EPSLN && lp.lam <= -d20+EPSLN); break; + case 7: ok = (lp.lam >= -d20-EPSLN && lp.lam <= d80+EPSLN); break; + case 8: ok = (lp.lam >= d80-EPSLN && lp.lam <= d180+EPSLN); break; + case 9: ok = (lp.lam >= -d180-EPSLN && lp.lam <= -d100+EPSLN); break; + case 10: ok = (lp.lam >= -d100-EPSLN && lp.lam <= -d20+EPSLN); break; + case 11: ok = (lp.lam >= -d20-EPSLN && lp.lam <= d80+EPSLN); break; + case 12: ok = (lp.lam >= d80-EPSLN && lp.lam <= d180+EPSLN); break; + } + + z = (!ok? 0: z); // projectable? + } + // if (!z) pj_errno = -15; // invalid x or y + if (!z) lp.lam = HUGE_VAL; + if (!z) lp.phi = HUGE_VAL; + return (lp); +} +FREEUP; + if (P) { + int i; + for (i = 0; i < 12; ++i) + { + if (P->pj[i]) + (*(P->pj[i]->pfree))(P->pj[i]); + } + pj_dalloc(P); + } +} +ENTRY0(igh) +/* + Zones: + + -180 -40 180 + +--------------+-------------------------+ Zones 1,2,9,10,11 & 12: + |1 |2 | Mollweide projection + | | | + +--------------+-------------------------+ Zones 3,4,5,6,7 & 8: + |3 |4 | Sinusoidal projection + | | | + 0 +-------+------+-+-----------+-----------+ + |5 |6 |7 |8 | + | | | | | + +-------+--------+-----------+-----------+ + |9 |10 |11 |12 | + | | | | | + +-------+--------+-----------+-----------+ + -180 -100 -20 80 180 +*/ + +#define SETUP(n, proj, x_0, y_0, lon_0) \ + if (!(P->pj[n-1] = pj_##proj(0))) E_ERROR_0; \ + if (!(P->pj[n-1] = pj_##proj(P->pj[n-1]))) E_ERROR_0; \ + P->pj[n-1]->x0 = x_0; \ + P->pj[n-1]->y0 = y_0; \ + P->pj[n-1]->lam0 = lon_0; + + LP lp = { 0, d4044118 }; + XY xy1; + XY xy3; + + // sinusoidal zones + SETUP(3, sinu, -d100, 0, -d100); + SETUP(4, sinu, d30, 0, d30); + SETUP(5, sinu, -d160, 0, -d160); + SETUP(6, sinu, -d60, 0, -d60); + SETUP(7, sinu, d20, 0, d20); + SETUP(8, sinu, d140, 0, d140); + + // mollweide zones + SETUP(1, moll, -d100, 0, -d100); + + // y0 ? + xy1 = P->pj[0]->fwd(lp, P->pj[0]); // zone 1 + xy3 = P->pj[2]->fwd(lp, P->pj[2]); // zone 3 + // y0 + xy1.y = xy3.y for lt = 40d44'11.8" + P->dy0 = xy3.y - xy1.y; + + P->pj[0]->y0 = P->dy0; + + // mollweide zones (cont'd) + SETUP( 2, moll, d30, P->dy0, d30); + SETUP( 9, moll, -d160, -P->dy0, -d160); + SETUP(10, moll, -d60, -P->dy0, -d60); + SETUP(11, moll, d20, -P->dy0, d20); + SETUP(12, moll, d140, -P->dy0, d140); + + P->inv = s_inverse; + P->fwd = s_forward; + P->es = 0.; +ENDENTRY(P) + + + diff --git a/src/PJ_imw_p.c b/src/PJ_imw_p.c index 135b3dab8..ae411116d 100644 --- a/src/PJ_imw_p.c +++ b/src/PJ_imw_p.c @@ -13,12 +13,12 @@ PROJ_HEAD(imw_p, "International Map of the World Polyconic") phi12(PJ *P, double *del, double *sig) { int err = 0; - if (!pj_param(P->params, "tlat_1").i || - !pj_param(P->params, "tlat_2").i) { + if (!pj_param(P->ctx, P->params, "tlat_1").i || + !pj_param(P->ctx, P->params, "tlat_2").i) { err = -41; } else { - P->phi_1 = pj_param(P->params, "rlat_1").f; - P->phi_2 = pj_param(P->params, "rlat_2").f; + P->phi_1 = pj_param(P->ctx, P->params, "rlat_1").f; + P->phi_2 = pj_param(P->ctx, P->params, "rlat_2").f; *del = 0.5 * (P->phi_2 - P->phi_1); *sig = 0.5 * (P->phi_2 + P->phi_1); err = (fabs(*del) < EPS || fabs(*sig) < EPS) ? -42 : 0; @@ -113,8 +113,8 @@ ENTRY1(imw_p, en) P->phi_1 = P->phi_2; P->phi_2 = del; } - if (pj_param(P->params, "tlon_1").i) - P->lam_1 = pj_param(P->params, "rlon_1").f; + if (pj_param(P->ctx, P->params, "tlon_1").i) + P->lam_1 = pj_param(P->ctx, P->params, "rlon_1").f; else { /* use predefined based upon latitude */ sig = fabs(sig * RAD_TO_DEG); if (sig <= 60) sig = 2.; diff --git a/src/PJ_krovak.c b/src/PJ_krovak.c index 53e50994e..ac21df658 100644 --- a/src/PJ_krovak.c +++ b/src/PJ_krovak.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: PJ_krovak.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: PJ_krovak.c 1856 2010-06-11 03:26:04Z warmerdam $ * * Project: PROJ.4 * Purpose: Implementation of the krovak (Krovak) projection. @@ -37,7 +37,7 @@ #include #include -PJ_CVSID("$Id: PJ_krovak.c 1504 2009-01-06 02:11:57Z warmerdam $"); +PJ_CVSID("$Id: PJ_krovak.c 1856 2010-06-11 03:26:04Z warmerdam $"); PROJ_HEAD(krovak, "Krovak") "\n\tPCyl., Ellps."; @@ -69,12 +69,9 @@ PROJ_HEAD(krovak, "Krovak") "\n\tPCyl., Ellps."; FORWARD(e_forward); /* ellipsoid */ /* calculate xy from lat/lon */ - char errmess[255]; - char tmp[16]; - /* Constants, identical to inverse transform function */ double s45, s90, e2, e, alfa, uq, u0, g, k, k1, n0, ro0, ad, a, s0, n; - double gfi, u, fi0, lon17, lamdd, deltav, s, d, eps, ro; + double gfi, u, fi0, deltav, s, d, eps, ro; s45 = 0.785398163397448; /* 45° */ @@ -124,7 +121,7 @@ FORWARD(e_forward); /* ellipsoid */ xy.y = ro * cos(eps) / a; xy.x = ro * sin(eps) / a; - if( !pj_param(P -> params, "tczech").i ) + if( !pj_param(P->ctx, P->params, "tczech").i ) { xy.y *= -1.0; xy.x *= -1.0; @@ -140,7 +137,7 @@ INVERSE(e_inverse); /* ellipsoid */ /* Constants, identisch wie in der Umkehrfunktion */ double s45, s90, fi0, e2, e, alfa, uq, u0, g, k, k1, n0, ro0, ad, a, s0, n; - double u, l24, lamdd, deltav, s, d, eps, ro, fi1, xy0, lon17; + double u, deltav, s, d, eps, ro, fi1, xy0; int ok; s45 = 0.785398163397448; /* 45° */ @@ -179,7 +176,7 @@ INVERSE(e_inverse); /* ellipsoid */ xy.x=xy.y; xy.y=xy0; - if( !pj_param(P -> params, "tczech").i ) + if( !pj_param(P->ctx, P->params, "tczech").i ) { xy.x *= -1.0; xy.y *= -1.0; @@ -224,7 +221,7 @@ ENTRY0(krovak) /* read some Parameters, * here Latitude Truescale */ - ts = pj_param(P->params, "rlat_ts").f; + ts = pj_param(P->ctx, P->params, "rlat_ts").f; P->C_x = ts; /* we want Bessel as fixed ellipsoid */ @@ -232,17 +229,17 @@ ENTRY0(krovak) P->e = sqrt(P->es = 0.006674372230614); /* if latitude of projection center is not set, use 49d30'N */ - if (!pj_param(P->params, "tlat_0").i) + if (!pj_param(P->ctx, P->params, "tlat_0").i) P->phi0 = 0.863937979737193; /* if center long is not set use 42d30'E of Ferro - 17d40' for Ferro */ /* that will correspond to using longitudes relative to greenwich */ /* as input and output, instead of lat/long relative to Ferro */ - if (!pj_param(P->params, "tlon_0").i) + if (!pj_param(P->ctx, P->params, "tlon_0").i) P->lam0 = 0.7417649320975901 - 0.308341501185665; /* if scale not set default to 0.9999 */ - if (!pj_param(P->params, "tk").i) + if (!pj_param(P->ctx, P->params, "tk").i) P->k0 = 0.9999; /* always the same */ diff --git a/src/PJ_labrd.c b/src/PJ_labrd.c index 70cd2f425..4cb39ec8a 100644 --- a/src/PJ_labrd.c +++ b/src/PJ_labrd.c @@ -86,8 +86,8 @@ FREEUP; if (P) pj_dalloc(P); } ENTRY0(labrd) double Az, sinp, R, N, t; - P->rot = pj_param(P->params, "bno_rot").i == 0; - Az = pj_param(P->params, "razi").f; + P->rot = pj_param(P->ctx, P->params, "bno_rot").i == 0; + Az = pj_param(P->ctx, P->params, "razi").f; sinp = sin(P->phi0); t = 1. - P->es * sinp * sinp; N = 1. / sqrt(t); diff --git a/src/PJ_lagrng.c b/src/PJ_lagrng.c index d0e123a9f..8a13b3da3 100644 --- a/src/PJ_lagrng.c +++ b/src/PJ_lagrng.c @@ -26,9 +26,9 @@ FREEUP; if (P) pj_dalloc(P); } ENTRY0(lagrng) double phi1; - if ((P->rw = pj_param(P->params, "dW").f) <= 0) E_ERROR(-27); + if ((P->rw = pj_param(P->ctx, P->params, "dW").f) <= 0) E_ERROR(-27); P->hrw = 0.5 * (P->rw = 1. / P->rw); - phi1 = pj_param(P->params, "rlat_1").f; + phi1 = pj_param(P->ctx, P->params, "rlat_1").f; if (fabs(fabs(phi1 = sin(phi1)) - 1.) < TOL) E_ERROR(-22); P->a1 = pow((1. - phi1)/(1. + phi1), P->hrw); P->es = 0.; P->fwd = s_forward; diff --git a/src/PJ_lcc.c b/src/PJ_lcc.c index 80a85d0b9..9d3494bf9 100644 --- a/src/PJ_lcc.c +++ b/src/PJ_lcc.c @@ -34,7 +34,7 @@ INVERSE(e_inverse); /* ellipsoid & spheroid */ xy.y = -xy.y; } if (P->ellips) { - if ((lp.phi = pj_phi2(pow(rho / P->c, 1./P->n), P->e)) + if ((lp.phi = pj_phi2(P->ctx, pow(rho / P->c, 1./P->n), P->e)) == HUGE_VAL) I_ERROR; } else @@ -64,12 +64,12 @@ ENTRY0(lcc) double cosphi, sinphi; int secant; - P->phi1 = pj_param(P->params, "rlat_1").f; - if (pj_param(P->params, "tlat_2").i) - P->phi2 = pj_param(P->params, "rlat_2").f; + P->phi1 = pj_param(P->ctx, P->params, "rlat_1").f; + if (pj_param(P->ctx, P->params, "tlat_2").i) + P->phi2 = pj_param(P->ctx, P->params, "rlat_2").f; else { P->phi2 = P->phi1; - if (!pj_param(P->params, "tlat_0").i) + if (!pj_param(P->ctx, P->params, "tlat_0").i) P->phi0 = P->phi1; } if (fabs(P->phi1 + P->phi2) < EPS10) E_ERROR(-21); diff --git a/src/PJ_lcca.c b/src/PJ_lcca.c index 2bb101adf..0e3289fe5 100644 --- a/src/PJ_lcca.c +++ b/src/PJ_lcca.c @@ -1,4 +1,4 @@ -static const char RCS_ID[] = "$Id: PJ_lcca.c 1504 2009-01-06 02:11:57Z warmerdam $"; +static const char RCS_ID[] = "$Id: PJ_lcca.c 1856 2010-06-11 03:26:04Z warmerdam $"; /* PROJ.4 Cartographic Projection System */ #define MAX_ITER 10 @@ -22,7 +22,7 @@ fSp(double S, double C) { return(1. + 3.* S * S * C); } FORWARD(e_forward); /* ellipsoid */ - double S, S3, r, dr; + double S, r, dr; S = pj_mlfn(lp.phi, sin(lp.phi), cos(lp.phi), P->en) - P->M0; dr = fS(S, P->C); @@ -46,7 +46,7 @@ INVERSE(e_inverse); /* ellipsoid & spheroid */ if (fabs(dif) < DEL_TOL) break; } if (!i) I_ERROR - lp.phi = pj_inv_mlfn(S + P->M0, P->es, P->en); + lp.phi = pj_inv_mlfn(P->ctx, S + P->M0, P->es, P->en); return (lp); } FREEUP; if (P) { if (P->en) pj_dalloc(P->en); pj_dalloc(P); } } @@ -54,7 +54,7 @@ ENTRY0(lcca) double s2p0, N0, R0, tan0, tan20; if (!(P->en = pj_enfn(P->es))) E_ERROR_0; - if (!pj_param(P->params, "tlat_0").i) E_ERROR(50); + if (!pj_param(P->ctx, P->params, "tlat_0").i) E_ERROR(50); if (P->phi0 == 0.) E_ERROR(51); P->l = sin(P->phi0); P->M0 = pj_mlfn(P->phi0, P->l, cos(P->phi0), P->en); diff --git a/src/PJ_loxim.c b/src/PJ_loxim.c index 80c153184..595423f76 100644 --- a/src/PJ_loxim.c +++ b/src/PJ_loxim.c @@ -33,7 +33,7 @@ INVERSE(s_inverse); /* spheroid */ } FREEUP; if (P) pj_dalloc(P); } ENTRY0(loxim); - P->phi1 = pj_param(P->params, "rlat_1").f; + P->phi1 = pj_param(P->ctx, P->params, "rlat_1").f; if ((P->cosphi1 = cos(P->phi1)) < EPS) E_ERROR(-22); P->tanphi1 = tan(FORTPI + 0.5 * P->phi1); P->inv = s_inverse; P->fwd = s_forward; diff --git a/src/PJ_lsat.c b/src/PJ_lsat.c index e8edb5429..d11a5c149 100644 --- a/src/PJ_lsat.c +++ b/src/PJ_lsat.c @@ -66,7 +66,7 @@ FORWARD(e_forward); /* ellipsoid */ } if (l) { sp = sin(lp.phi); - phidp = aasin((P->one_es * P->ca * sp - P->sa * cos(lp.phi) * + phidp = aasin(P->ctx,(P->one_es * P->ca * sp - P->sa * cos(lp.phi) * sin(lamt)) / sqrt(1. - P->es * sp * sp)); tanph = log(tan(FORTPI + .5 * phidp)); sd = sin(lamdp); @@ -116,7 +116,7 @@ INVERSE(e_inverse); /* ellipsoid */ lamt -= HALFPI * (1. - scl) * sl; lp.lam = lamt - P->p22 * lamdp; if (fabs(P->sa) < TOL) - lp.phi = aasin(spp / sqrt(P->one_es * P->one_es + P->es * sppsq)); + lp.phi = aasin(P->ctx,spp / sqrt(P->one_es * P->one_es + P->es * sppsq)); else lp.phi = atan((tan(lamdp) * cos(lamt) - P->ca * sin(lamt)) / (P->one_es * P->sa)); @@ -127,9 +127,9 @@ ENTRY0(lsat) int land, path; double lam, alf, esc, ess; - land = pj_param(P->params, "ilsat").i; + land = pj_param(P->ctx, P->params, "ilsat").i; if (land <= 0 || land > 5) E_ERROR(-28); - path = pj_param(P->params, "ipath").i; + path = pj_param(P->ctx, P->params, "ipath").i; if (path <= 0 || path > (land <= 3 ? 251 : 233)) E_ERROR(-29); if (land <= 3) { P->lam0 = DEG_TO_RAD * 128.87 - TWOPI / 251. * path; diff --git a/src/PJ_mbt_fps.c b/src/PJ_mbt_fps.c index 63e02ca3f..57a96e72e 100644 --- a/src/PJ_mbt_fps.c +++ b/src/PJ_mbt_fps.c @@ -27,11 +27,11 @@ FORWARD(s_forward); /* spheroid */ return (xy); } INVERSE(s_inverse); /* spheroid */ - double t, s; + double t; - lp.phi = C2 * (t = aasin(xy.y / C_y)); + lp.phi = C2 * (t = aasin(P->ctx,xy.y / C_y)); lp.lam = xy.x / (C_x * (1. + 3. * cos(lp.phi)/cos(t))); - lp.phi = aasin((C1 * sin(t) + sin(lp.phi)) / C3); + lp.phi = aasin(P->ctx,(C1 * sin(t) + sin(lp.phi)) / C3); return (lp); } FREEUP; if (P) pj_dalloc(P); } diff --git a/src/PJ_merc.c b/src/PJ_merc.c index f8e0426a0..4b991c1ca 100644 --- a/src/PJ_merc.c +++ b/src/PJ_merc.c @@ -15,7 +15,7 @@ FORWARD(s_forward); /* spheroid */ return (xy); } INVERSE(e_inverse); /* ellipsoid */ - if ((lp.phi = pj_phi2(exp(- xy.y / P->k0), P->e)) == HUGE_VAL) I_ERROR; + if ((lp.phi = pj_phi2(P->ctx, exp(- xy.y / P->k0), P->e)) == HUGE_VAL) I_ERROR; lp.lam = xy.x / P->k0; return (lp); } @@ -29,8 +29,8 @@ ENTRY0(merc) double phits=0.0; int is_phits; - if( (is_phits = pj_param(P->params, "tlat_ts").i) ) { - phits = fabs(pj_param(P->params, "rlat_ts").f); + if( (is_phits = pj_param(P->ctx, P->params, "tlat_ts").i) ) { + phits = fabs(pj_param(P->ctx, P->params, "rlat_ts").f); if (phits >= HALFPI) E_ERROR(-24); } if (P->es) { /* ellipsoid */ diff --git a/src/PJ_mod_ster.c b/src/PJ_mod_ster.c index 854f35e11..185e95e37 100644 --- a/src/PJ_mod_ster.c +++ b/src/PJ_mod_ster.c @@ -60,7 +60,7 @@ INVERSE(e_inverse); /* ellipsoid */ lp.phi = P->phi0; return lp; } - chi = aasin(cosz * P->schio + p.i * sinz * P->cchio / rh); + chi = aasin(P->ctx, cosz * P->schio + p.i * sinz * P->cchio / rh); phi = chi; for (nn = 20; nn ;--nn) { esphi = P->e * sin(phi); diff --git a/src/PJ_moll.c b/src/PJ_moll.c index ce14cfbc9..98f0457d2 100644 --- a/src/PJ_moll.c +++ b/src/PJ_moll.c @@ -27,12 +27,10 @@ FORWARD(s_forward); /* spheroid */ return (xy); } INVERSE(s_inverse); /* spheroid */ - double th, s; - - lp.phi = aasin(xy.y / P->C_y); + lp.phi = aasin(P->ctx, xy.y / P->C_y); lp.lam = xy.x / (P->C_x * cos(lp.phi)); lp.phi += lp.phi; - lp.phi = aasin((lp.phi + sin(lp.phi)) / P->C_p); + lp.phi = aasin(P->ctx, (lp.phi + sin(lp.phi)) / P->C_p); return (lp); } FREEUP; if (P) pj_dalloc(P); } diff --git a/src/PJ_nell.c b/src/PJ_nell.c index 5de57cbcc..dd41b468f 100644 --- a/src/PJ_nell.c +++ b/src/PJ_nell.c @@ -21,10 +21,8 @@ FORWARD(s_forward); /* spheroid */ return (xy); } INVERSE(s_inverse); /* spheroid */ - double th, s; - lp.lam = 2. * xy.x / (1. + cos(xy.y)); - lp.phi = aasin(0.5 * (xy.y + sin(xy.y))); + lp.phi = aasin(P->ctx,0.5 * (xy.y + sin(xy.y))); return (lp); } FREEUP; if (P) pj_dalloc(P); } diff --git a/src/PJ_nsper.c b/src/PJ_nsper.c index a3ee264e7..0f355b93e 100644 --- a/src/PJ_nsper.c +++ b/src/PJ_nsper.c @@ -115,7 +115,7 @@ INVERSE(s_inverse); /* spheroid */ FREEUP; if (P) pj_dalloc(P); } static PJ * setup(PJ *P) { - if ((P->height = pj_param(P->params, "dh").f) <= 0.) E_ERROR(-30); + if ((P->height = pj_param(P->ctx, P->params, "dh").f) <= 0.) E_ERROR(-30); if (fabs(fabs(P->phi0) - HALFPI) < EPS10) P->mode = P->phi0 < 0. ? S_POLE : N_POLE; else if (fabs(P->phi0) < EPS10) @@ -141,8 +141,8 @@ ENDENTRY(setup(P)) ENTRY0(tpers) double omega, gamma; - omega = pj_param(P->params, "dtilt").f * DEG_TO_RAD; - gamma = pj_param(P->params, "dazi").f * DEG_TO_RAD; + omega = pj_param(P->ctx, P->params, "dtilt").f * DEG_TO_RAD; + gamma = pj_param(P->ctx, P->params, "dazi").f * DEG_TO_RAD; P->tilt = 1; P->cg = cos(gamma); P->sg = sin(gamma); P->cw = cos(omega); P->sw = sin(omega); diff --git a/src/PJ_ob_tran.c b/src/PJ_ob_tran.c index 460a600f9..34e0f6b80 100644 --- a/src/PJ_ob_tran.c +++ b/src/PJ_ob_tran.c @@ -21,7 +21,7 @@ FORWARD(o_forward); /* spheroid */ cosphi = cos(lp.phi); lp.lam = adjlon(aatan2(cosphi * sin(lp.lam), P->sphip * cosphi * coslam + P->cphip * sinphi) + P->lamp); - lp.phi = aasin(P->sphip * sinphi - P->cphip * cosphi * coslam); + lp.phi = aasin(P->ctx,P->sphip * sinphi - P->cphip * cosphi * coslam); return (P->link->fwd(lp, P->link)); } FORWARD(t_forward); /* spheroid */ @@ -32,7 +32,7 @@ FORWARD(t_forward); /* spheroid */ cosphi = cos(lp.phi); coslam = cos(lp.lam); lp.lam = adjlon(aatan2(cosphi * sin(lp.lam), sin(lp.phi)) + P->lamp); - lp.phi = aasin(- cosphi * coslam); + lp.phi = aasin(P->ctx, - cosphi * coslam); return (P->link->fwd(lp, P->link)); } INVERSE(o_inverse); /* spheroid */ @@ -43,7 +43,7 @@ INVERSE(o_inverse); /* spheroid */ coslam = cos(lp.lam -= P->lamp); sinphi = sin(lp.phi); cosphi = cos(lp.phi); - lp.phi = aasin(P->sphip * sinphi + P->cphip * cosphi * coslam); + lp.phi = aasin(P->ctx,P->sphip * sinphi + P->cphip * cosphi * coslam); lp.lam = aatan2(cosphi * sin(lp.lam), P->sphip * cosphi * coslam - P->cphip * sinphi); } @@ -57,7 +57,7 @@ INVERSE(t_inverse); /* spheroid */ cosphi = cos(lp.phi); t = lp.lam - P->lamp; lp.lam = aatan2(cosphi * sin(t), - sin(lp.phi)); - lp.phi = aasin(cosphi * cos(t)); + lp.phi = aasin(P->ctx,cosphi * cos(t)); } return (lp); } @@ -74,7 +74,7 @@ ENTRY1(ob_tran, link) char *name, *s; /* get name of projection to be translated */ - if (!(name = pj_param(P->params, "so_proj").s)) E_ERROR(-26); + if (!(name = pj_param(P->ctx, P->params, "so_proj").s)) E_ERROR(-26); for (i = 0; (s = pj_list[i].id) && strcmp(name, s) ; ++i) ; if (!s || !(P->link = (*pj_list[i].proj)(0))) E_ERROR(-37); /* copy existing header into new */ @@ -97,12 +97,12 @@ ENTRY1(ob_tran, link) freeup(P); return 0; } - if (pj_param(P->params, "to_alpha").i) { + if (pj_param(P->ctx, P->params, "to_alpha").i) { double lamc, phic, alpha; - lamc = pj_param(P->params, "ro_lon_c").f; - phic = pj_param(P->params, "ro_lat_c").f; - alpha = pj_param(P->params, "ro_alpha").f; + lamc = pj_param(P->ctx, P->params, "ro_lon_c").f; + phic = pj_param(P->ctx, P->params, "ro_lat_c").f; + alpha = pj_param(P->ctx, P->params, "ro_alpha").f; /* if (fabs(phic) <= TOL || fabs(fabs(phic) - HALFPI) <= TOL || @@ -111,17 +111,17 @@ ENTRY1(ob_tran, link) if (fabs(fabs(phic) - HALFPI) <= TOL) E_ERROR(-32); P->lamp = lamc + aatan2(-cos(alpha), -sin(alpha) * sin(phic)); - phip = aasin(cos(phic) * sin(alpha)); - } else if (pj_param(P->params, "to_lat_p").i) { /* specified new pole */ - P->lamp = pj_param(P->params, "ro_lon_p").f; - phip = pj_param(P->params, "ro_lat_p").f; + phip = aasin(P->ctx,cos(phic) * sin(alpha)); + } else if (pj_param(P->ctx, P->params, "to_lat_p").i) { /* specified new pole */ + P->lamp = pj_param(P->ctx, P->params, "ro_lon_p").f; + phip = pj_param(P->ctx, P->params, "ro_lat_p").f; } else { /* specified new "equator" points */ double lam1, lam2, phi1, phi2, con; - lam1 = pj_param(P->params, "ro_lon_1").f; - phi1 = pj_param(P->params, "ro_lat_1").f; - lam2 = pj_param(P->params, "ro_lon_2").f; - phi2 = pj_param(P->params, "ro_lat_2").f; + lam1 = pj_param(P->ctx, P->params, "ro_lon_1").f; + phi1 = pj_param(P->ctx, P->params, "ro_lat_1").f; + lam2 = pj_param(P->ctx, P->params, "ro_lon_2").f; + phi2 = pj_param(P->ctx, P->params, "ro_lat_2").f; if (fabs(phi1 - phi2) <= TOL || (con = fabs(phi1)) <= TOL || fabs(con - HALFPI) <= TOL || diff --git a/src/PJ_ocea.c b/src/PJ_ocea.c index cdffd6e4c..8c7bd1614 100644 --- a/src/PJ_ocea.c +++ b/src/PJ_ocea.c @@ -41,16 +41,16 @@ ENTRY0(ocea) P->rok = P->a / P->k0; P->rtk = P->a * P->k0; - if ( pj_param(P->params, "talpha").i) { - alpha = pj_param(P->params, "ralpha").f; - lonz = pj_param(P->params, "rlonc").f; + if ( pj_param(P->ctx, P->params, "talpha").i) { + alpha = pj_param(P->ctx, P->params, "ralpha").f; + lonz = pj_param(P->ctx, P->params, "rlonc").f; P->singam = atan(-cos(alpha)/(-sin(phi_0) * sin(alpha))) + lonz; P->sinphi = asin(cos(phi_0) * sin(alpha)); } else { - phi_1 = pj_param(P->params, "rlat_1").f; - phi_2 = pj_param(P->params, "rlat_2").f; - lam_1 = pj_param(P->params, "rlon_1").f; - lam_2 = pj_param(P->params, "rlon_2").f; + phi_1 = pj_param(P->ctx, P->params, "rlat_1").f; + phi_2 = pj_param(P->ctx, P->params, "rlat_2").f; + lam_1 = pj_param(P->ctx, P->params, "rlon_1").f; + lam_2 = pj_param(P->ctx, P->params, "rlon_2").f; P->singam = atan2(cos(phi_1) * sin(phi_2) * cos(lam_1) - sin(phi_1) * cos(phi_2) * cos(lam_2), sin(phi_1) * cos(phi_2) * sin(lam_2) - diff --git a/src/PJ_oea.c b/src/PJ_oea.c index b5e42a1f7..b84a7ea64 100644 --- a/src/PJ_oea.c +++ b/src/PJ_oea.c @@ -13,9 +13,9 @@ FORWARD(s_forward); /* sphere */ sp = sin(lp.phi); cl = cos(lp.lam); Az = aatan2(cp * sin(lp.lam), P->cp0 * sp - P->sp0 * cp * cl) + P->theta; - shz = sin(0.5 * aacos(P->sp0 * sp + P->cp0 * cp * cl)); - M = aasin(shz * sin(Az)); - N = aasin(shz * cos(Az) * cos(M) / cos(M * P->two_r_m)); + shz = sin(0.5 * aacos(P->ctx, P->sp0 * sp + P->cp0 * cp * cl)); + M = aasin(P->ctx, shz * sin(Az)); + N = aasin(P->ctx, shz * cos(Az) * cos(M) / cos(M * P->two_r_m)); xy.y = P->n * sin(N * P->two_r_n); xy.x = P->m * sin(M * P->two_r_m) * cos(N) / cos(N * P->two_r_n); return (xy); @@ -23,26 +23,26 @@ FORWARD(s_forward); /* sphere */ INVERSE(s_inverse); /* sphere */ double N, M, xp, yp, z, Az, cz, sz, cAz; - N = P->hn * aasin(xy.y * P->rn); - M = P->hm * aasin(xy.x * P->rm * cos(N * P->two_r_n) / cos(N)); + N = P->hn * aasin(P->ctx,xy.y * P->rn); + M = P->hm * aasin(P->ctx,xy.x * P->rm * cos(N * P->two_r_n) / cos(N)); xp = 2. * sin(M); yp = 2. * sin(N) * cos(M * P->two_r_m) / cos(M); cAz = cos(Az = aatan2(xp, yp) - P->theta); - z = 2. * aasin(0.5 * hypot(xp, yp)); + z = 2. * aasin(P->ctx, 0.5 * hypot(xp, yp)); sz = sin(z); cz = cos(z); - lp.phi = aasin(P->sp0 * cz + P->cp0 * sz * cAz); + lp.phi = aasin(P->ctx, P->sp0 * cz + P->cp0 * sz * cAz); lp.lam = aatan2(sz * sin(Az), P->cp0 * cz - P->sp0 * sz * cAz); return (lp); } FREEUP; if (P) pj_dalloc(P); } ENTRY0(oea) - if (((P->n = pj_param(P->params, "dn").f) <= 0.) || - ((P->m = pj_param(P->params, "dm").f) <= 0.)) + if (((P->n = pj_param(P->ctx, P->params, "dn").f) <= 0.) || + ((P->m = pj_param(P->ctx, P->params, "dm").f) <= 0.)) E_ERROR(-39) else { - P->theta = pj_param(P->params, "rtheta").f; + P->theta = pj_param(P->ctx, P->params, "rtheta").f; P->sp0 = sin(P->phi0); P->cp0 = cos(P->phi0); P->rn = 1./ P->n; diff --git a/src/PJ_omerc.c b/src/PJ_omerc.c index 1b862dbbd..51d398d24 100644 --- a/src/PJ_omerc.c +++ b/src/PJ_omerc.c @@ -1,166 +1,190 @@ +/* +** Copyright (c) 2003, 2006 Gerald I. Evenden +*/ +/* +** 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 PROJ_PARMS__ \ - double alpha, lamc, lam1, phi1, lam2, phi2, Gamma, al, bl, el, \ - singam, cosgam, sinrot, cosrot, u_0; \ - int ellips, rot; + double A, B, E, AB, ArB, BrA, rB, singam, cosgam, sinrot, cosrot; \ + double v_pole_n, v_pole_s, u_0; \ + int no_rot; #define PJ_LIB__ -#include +#include + PROJ_HEAD(omerc, "Oblique Mercator") - "\n\tCyl, Sph&Ell\n\t no_rot rot_conv no_uoff and\n\t" -"alpha= lonc= or\n\t lon_1= lat_1= lon_2= lat_2="; + "\n\tCyl, Sph&Ell no_rot\n\t" +"alpha= [gamma=] [no_off] lonc= or\n\t lon_1= lat_1= lon_2= lat_2="; #define TOL 1.e-7 #define EPS 1.e-10 -#define TSFN0(x) tan(.5 * (HALFPI - (x))) -FORWARD(e_forward); /* ellipsoid & spheroid */ - double con, q, s, ul, us, vl, vs; - vl = sin(P->bl * lp.lam); - if (fabs(fabs(lp.phi) - HALFPI) <= EPS) { - ul = lp.phi < 0. ? -P->singam : P->singam; - us = P->al * lp.phi / P->bl; +FORWARD(e_forward); /* ellipsoid */ + double Q, S, T, U, V, temp, u, v; + + if (fabs(fabs(lp.phi) - HALFPI) > EPS) { + Q = P->E / pow(pj_tsfn(lp.phi, sin(lp.phi), P->e), P->B); + temp = 1. / Q; + S = .5 * (Q - temp); + T = .5 * (Q + temp); + V = sin(P->B * lp.lam); + U = (S * P->singam - V * P->cosgam) / T; + if (fabs(fabs(U) - 1.0) < EPS) + F_ERROR; + v = 0.5 * P->ArB * log((1. - U)/(1. + U)); + temp = cos(P->B * lp.lam); + u = (fabs(temp) < TOL) ? P->AB * lp.lam : + P->ArB * atan2((S * P->cosgam + V * P->singam) , temp); } else { - q = P->el / (P->ellips ? pow(pj_tsfn(lp.phi, sin(lp.phi), P->e), P->bl) - : TSFN0(lp.phi)); - s = .5 * (q - 1. / q); - ul = 2. * (s * P->singam - vl * P->cosgam) / (q + 1. / q); - con = cos(P->bl * lp.lam); - if (fabs(con) >= TOL) { - us = P->al * atan((s * P->cosgam + vl * P->singam) / con) / P->bl; - if (con < 0.) - us += PI * P->al / P->bl; - } else - us = P->al * P->bl * lp.lam; + v = lp.phi > 0 ? P->v_pole_n : P->v_pole_s; + u = P->ArB * lp.phi; } - if (fabs(fabs(ul) - 1.) <= EPS) F_ERROR; - vs = .5 * P->al * log((1. - ul) / (1. + ul)) / P->bl; - us -= P->u_0; - if (! P->rot) { - xy.x = us; - xy.y = vs; + if (P->no_rot) { + xy.x = u; + xy.y = v; } else { - xy.x = vs * P->cosrot + us * P->sinrot; - xy.y = us * P->cosrot - vs * P->sinrot; + u -= P->u_0; + xy.x = v * P->cosrot + u * P->sinrot; + xy.y = u * P->cosrot - v * P->sinrot; } return (xy); } -INVERSE(e_inverse); /* ellipsoid & spheroid */ - double q, s, ul, us, vl, vs; +INVERSE(e_inverse); /* ellipsoid */ + double u, v, Qp, Sp, Tp, Vp, Up; - if (! P->rot) { - us = xy.x; - vs = xy.y; + if (P->no_rot) { + v = xy.y; + u = xy.x; } else { - vs = xy.x * P->cosrot - xy.y * P->sinrot; - us = xy.y * P->cosrot + xy.x * P->sinrot; + v = xy.x * P->cosrot - xy.y * P->sinrot; + u = xy.y * P->cosrot + xy.x * P->sinrot + P->u_0; } - us += P->u_0; - q = exp(- P->bl * vs / P->al); - s = .5 * (q - 1. / q); - vl = sin(P->bl * us / P->al); - ul = 2. * (vl * P->cosgam + s * P->singam) / (q + 1. / q); - if (fabs(fabs(ul) - 1.) < EPS) { + Qp = exp(- P->BrA * v); + Sp = .5 * (Qp - 1. / Qp); + Tp = .5 * (Qp + 1. / Qp); + Vp = sin(P->BrA * u); + Up = (Vp * P->cosgam + Sp * P->singam) / Tp; + if (fabs(fabs(Up) - 1.) < EPS) { lp.lam = 0.; - lp.phi = ul < 0. ? -HALFPI : HALFPI; + lp.phi = Up < 0. ? -HALFPI : HALFPI; } else { - lp.phi = P->el / sqrt((1. + ul) / (1. - ul)); - if (P->ellips) { - if ((lp.phi = pj_phi2(pow(lp.phi, 1. / P->bl), P->e)) == HUGE_VAL) - I_ERROR; - } else - lp.phi = HALFPI - 2. * atan(lp.phi); - lp.lam = - atan2((s * P->cosgam - - vl * P->singam), cos(P->bl * us / P->al)) / P->bl; + lp.phi = P->E / sqrt((1. + Up) / (1. - Up)); + if ((lp.phi = pj_phi2(P->ctx, pow(lp.phi, 1. / P->B), P->e)) == HUGE_VAL) + I_ERROR; + lp.lam = - P->rB * atan2((Sp * P->cosgam - + Vp * P->singam), cos(P->BrA * u)); } return (lp); } FREEUP; if (P) pj_dalloc(P); } ENTRY0(omerc) - double con, com, cosph0, d, f, h, l, sinph0, p, j; - int azi; + double con, com, cosph0, D, F, H, L, sinph0, p, J, gamma, + gamma0, lamc, lam1, lam2, phi1, phi2, alpha_c; + int alp, gam, no_off = 0; - P->rot = pj_param(P->params, "bno_rot").i == 0; - if( (azi = pj_param(P->params, "talpha").i) != 0.0) { - P->lamc = pj_param(P->params, "rlonc").f; - P->alpha = pj_param(P->params, "ralpha").f; - if ( fabs(P->alpha) <= TOL || - fabs(fabs(P->phi0) - HALFPI) <= TOL || - fabs(fabs(P->alpha) - HALFPI) <= TOL) - E_ERROR(-32); + P->no_rot = pj_param(P->ctx, P->params, "tno_rot").i; + if ((alp = pj_param(P->ctx, P->params, "talpha").i) != 0) + alpha_c = pj_param(P->ctx, P->params, "ralpha").f; + if ((gam = pj_param(P->ctx, P->params, "tgamma").i) != 0) + gamma = pj_param(P->ctx, P->params, "rgamma").f; + if (alp || gam) { + lamc = pj_param(P->ctx, P->params, "rlonc").f; + no_off = pj_param(P->ctx, P->params, "tno_off").i; } else { - P->lam1 = pj_param(P->params, "rlon_1").f; - P->phi1 = pj_param(P->params, "rlat_1").f; - P->lam2 = pj_param(P->params, "rlon_2").f; - P->phi2 = pj_param(P->params, "rlat_2").f; - if (fabs(P->phi1 - P->phi2) <= TOL || - (con = fabs(P->phi1)) <= TOL || + lam1 = pj_param(P->ctx, P->params, "rlon_1").f; + phi1 = pj_param(P->ctx, P->params, "rlat_1").f; + lam2 = pj_param(P->ctx, P->params, "rlon_2").f; + phi2 = pj_param(P->ctx, P->params, "rlat_2").f; + if (fabs(phi1 - phi2) <= TOL || + (con = fabs(phi1)) <= TOL || fabs(con - HALFPI) <= TOL || fabs(fabs(P->phi0) - HALFPI) <= TOL || - fabs(fabs(P->phi2) - HALFPI) <= TOL) E_ERROR(-33); + fabs(fabs(phi2) - HALFPI) <= TOL) E_ERROR(-33); } - com = (P->ellips = P->es > 0.) ? sqrt(P->one_es) : 1.; + com = sqrt(P->one_es); if (fabs(P->phi0) > EPS) { sinph0 = sin(P->phi0); cosph0 = cos(P->phi0); - if (P->ellips) { - con = 1. - P->es * sinph0 * sinph0; - P->bl = cosph0 * cosph0; - P->bl = sqrt(1. + P->es * P->bl * P->bl / P->one_es); - P->al = P->bl * P->k0 * com / con; - d = P->bl * com / (cosph0 * sqrt(con)); - } else { - P->bl = 1.; - P->al = P->k0; - d = 1. / cosph0; - } - if ((f = d * d - 1.) <= 0.) - f = 0.; + con = 1. - P->es * sinph0 * sinph0; + P->B = cosph0 * cosph0; + P->B = sqrt(1. + P->es * P->B * P->B / P->one_es); + P->A = P->B * P->k0 * com / con; + D = P->B * com / (cosph0 * sqrt(con)); + if ((F = D * D - 1.) <= 0.) + F = 0.; else { - f = sqrt(f); + F = sqrt(F); if (P->phi0 < 0.) - f = -f; + F = -F; } - P->el = f += d; - if (P->ellips) P->el *= pow(pj_tsfn(P->phi0, sinph0, P->e), P->bl); - else P->el *= TSFN0(P->phi0); + P->E = F += D; + P->E *= pow(pj_tsfn(P->phi0, sinph0, P->e), P->B); } else { - P->bl = 1. / com; - P->al = P->k0; - P->el = d = f = 1.; + P->B = 1. / com; + P->A = P->k0; + P->E = D = F = 1.; } - if (azi) { - P->Gamma = asin(sin(P->alpha) / d); - P->lam0 = P->lamc - asin((.5 * (f - 1. / f)) * - tan(P->Gamma)) / P->bl; + if (alp || gam) { + if (alp) { + gamma0 = asin(sin(alpha_c) / D); + if (!gam) + gamma = alpha_c; + } else + alpha_c = asin(D*sin(gamma0 = gamma)); + if ((con = fabs(alpha_c)) <= TOL || + fabs(con - PI) <= TOL || + fabs(fabs(P->phi0) - HALFPI) <= TOL) + E_ERROR(-32); + P->lam0 = lamc - asin(.5 * (F - 1. / F) * + tan(gamma0)) / P->B; } else { - if (P->ellips) { - h = pow(pj_tsfn(P->phi1, sin(P->phi1), P->e), P->bl); - l = pow(pj_tsfn(P->phi2, sin(P->phi2), P->e), P->bl); - } else { - h = TSFN0(P->phi1); - l = TSFN0(P->phi2); - } - f = P->el / h; - p = (l - h) / (l + h); - j = P->el * P->el; - j = (j - l * h) / (j + l * h); - if ((con = P->lam1 - P->lam2) < -PI) - P->lam2 -= TWOPI; + H = pow(pj_tsfn(phi1, sin(phi1), P->e), P->B); + L = pow(pj_tsfn(phi2, sin(phi2), P->e), P->B); + F = P->E / H; + p = (L - H) / (L + H); + J = P->E * P->E; + J = (J - L * H) / (J + L * H); + if ((con = lam1 - lam2) < -PI) + lam2 -= TWOPI; else if (con > PI) - P->lam2 += TWOPI; - P->lam0 = adjlon(.5 * (P->lam1 + P->lam2) - atan( - j * tan(.5 * P->bl * (P->lam1 - P->lam2)) / p) / P->bl); - P->Gamma = atan(2. * sin(P->bl * adjlon(P->lam1 - P->lam0)) / - (f - 1. / f)); - P->alpha = asin(d * sin(P->Gamma)); + lam2 += TWOPI; + P->lam0 = adjlon(.5 * (lam1 + lam2) - atan( + J * tan(.5 * P->B * (lam1 - lam2)) / p) / P->B); + gamma0 = atan(2. * sin(P->B * adjlon(lam1 - P->lam0)) / + (F - 1. / F)); + gamma = alpha_c = asin(D * sin(gamma0)); + } + P->singam = sin(gamma0); + P->cosgam = cos(gamma0); + P->sinrot = sin(gamma); + P->cosrot = cos(gamma); + P->BrA = 1. / (P->ArB = P->A * (P->rB = 1. / P->B)); + P->AB = P->A * P->B; + if (no_off) + P->u_0 = 0; + else { + P->u_0 = fabs(P->ArB * atan2(sqrt(D * D - 1.), cos(alpha_c))); + if (P->phi0 < 0.) + P->u_0 = - P->u_0; } - P->singam = sin(P->Gamma); - P->cosgam = cos(P->Gamma); - f = pj_param(P->params, "brot_conv").i ? P->Gamma : P->alpha; - P->sinrot = sin(f); - P->cosrot = cos(f); - P->u_0 = pj_param(P->params, "bno_uoff").i ? 0. : - fabs(P->al * atan(sqrt(d * d - 1.) / P->cosrot) / P->bl); - if (P->phi0 < 0.) - P->u_0 = - P->u_0; + F = 0.5 * gamma0; + P->v_pole_n = P->ArB * log(tan(FORTPI - F)); + P->v_pole_s = P->ArB * log(tan(FORTPI + F)); P->inv = e_inverse; P->fwd = e_forward; ENDENTRY(P) diff --git a/src/PJ_putp2.c b/src/PJ_putp2.c index e846f13be..33bc67aee 100644 --- a/src/PJ_putp2.c +++ b/src/PJ_putp2.c @@ -31,9 +31,9 @@ FORWARD(s_forward); /* spheroid */ INVERSE(s_inverse); /* spheroid */ double c; - lp.phi = aasin(xy.y / C_y); + lp.phi = aasin(P->ctx,xy.y / C_y); lp.lam = xy.x / (C_x * ((c = cos(lp.phi)) - 0.5)); - lp.phi = aasin((lp.phi + sin(lp.phi) * (c - 1.)) / C_p); + lp.phi = aasin(P->ctx,(lp.phi + sin(lp.phi) * (c - 1.)) / C_p); return (lp); } FREEUP; if (P) pj_dalloc(P); } diff --git a/src/PJ_putp4p.c b/src/PJ_putp4p.c index 35066c2a6..32036bbe4 100644 --- a/src/PJ_putp4p.c +++ b/src/PJ_putp4p.c @@ -5,18 +5,18 @@ PROJ_HEAD(putp4p, "Putnins P4'") "\n\tPCyl., Sph."; PROJ_HEAD(weren, "Werenskiold I") "\n\tPCyl., Sph."; FORWARD(s_forward); /* spheroid */ - lp.phi = aasin(0.883883476 * sin(lp.phi)); + lp.phi = aasin(P->ctx,0.883883476 * sin(lp.phi)); xy.x = P->C_x * lp.lam * cos(lp.phi); xy.x /= cos(lp.phi *= 0.333333333333333); xy.y = P->C_y * sin(lp.phi); return (xy); } INVERSE(s_inverse); /* spheroid */ - lp.phi = aasin(xy.y / P->C_y); + lp.phi = aasin(P->ctx,xy.y / P->C_y); lp.lam = xy.x * cos(lp.phi) / P->C_x; lp.phi *= 3.; lp.lam /= cos(lp.phi); - lp.phi = aasin(1.13137085 * sin(lp.phi)); + lp.phi = aasin(P->ctx,1.13137085 * sin(lp.phi)); return (lp); } FREEUP; if (P) pj_dalloc(P); } diff --git a/src/PJ_putp6.c b/src/PJ_putp6.c index 28e82cfdd..5909dd4ce 100644 --- a/src/PJ_putp6.c +++ b/src/PJ_putp6.c @@ -32,7 +32,7 @@ INVERSE(s_inverse); /* spheroid */ lp.phi = xy.y / P->C_y; r = sqrt(1. + lp.phi * lp.phi); lp.lam = xy.x / (P->C_x * (P->D - r)); - lp.phi = aasin( ( (P->A - r) * lp.phi - log(lp.phi + r) ) / P->B); + lp.phi = aasin( P->ctx, ( (P->A - r) * lp.phi - log(lp.phi + r) ) / P->B); return (lp); } FREEUP; if (P) pj_dalloc(P); } diff --git a/src/PJ_robin.c b/src/PJ_robin.c index c7280b1f5..71dac1e33 100644 --- a/src/PJ_robin.c +++ b/src/PJ_robin.c @@ -7,45 +7,45 @@ PROJ_HEAD(robin, "Robinson") "\n\tPCyl., Sph."; static struct COEFS { float c0, c1, c2, c3; } X[] = { -1, -5.67239e-12, -7.15511e-05, 3.11028e-06, -0.9986, -0.000482241, -2.4897e-05, -1.33094e-06, -0.9954, -0.000831031, -4.4861e-05, -9.86588e-07, -0.99, -0.00135363, -5.96598e-05, 3.67749e-06, -0.9822, -0.00167442, -4.4975e-06, -5.72394e-06, -0.973, -0.00214869, -9.03565e-05, 1.88767e-08, -0.96, -0.00305084, -9.00732e-05, 1.64869e-06, -0.9427, -0.00382792, -6.53428e-05, -2.61493e-06, -0.9216, -0.00467747, -0.000104566, 4.8122e-06, -0.8962, -0.00536222, -3.23834e-05, -5.43445e-06, -0.8679, -0.00609364, -0.0001139, 3.32521e-06, -0.835, -0.00698325, -6.40219e-05, 9.34582e-07, -0.7986, -0.00755337, -5.00038e-05, 9.35532e-07, -0.7597, -0.00798325, -3.59716e-05, -2.27604e-06, -0.7186, -0.00851366, -7.0112e-05, -8.63072e-06, -0.6732, -0.00986209, -0.000199572, 1.91978e-05, -0.6213, -0.010418, 8.83948e-05, 6.24031e-06, -0.5722, -0.00906601, 0.000181999, 6.24033e-06, -0.5322, 0.,0.,0. }, + {1, -5.67239e-12, -7.15511e-05, 3.11028e-06}, + {0.9986, -0.000482241, -2.4897e-05, -1.33094e-06}, + {0.9954, -0.000831031, -4.4861e-05, -9.86588e-07}, + {0.99, -0.00135363, -5.96598e-05, 3.67749e-06}, + {0.9822, -0.00167442, -4.4975e-06, -5.72394e-06}, + {0.973, -0.00214869, -9.03565e-05, 1.88767e-08}, + {0.96, -0.00305084, -9.00732e-05, 1.64869e-06}, + {0.9427, -0.00382792, -6.53428e-05, -2.61493e-06}, + {0.9216, -0.00467747, -0.000104566, 4.8122e-06}, + {0.8962, -0.00536222, -3.23834e-05, -5.43445e-06}, + {0.8679, -0.00609364, -0.0001139, 3.32521e-06}, + {0.835, -0.00698325, -6.40219e-05, 9.34582e-07}, + {0.7986, -0.00755337, -5.00038e-05, 9.35532e-07}, + {0.7597, -0.00798325, -3.59716e-05, -2.27604e-06}, + {0.7186, -0.00851366, -7.0112e-05, -8.63072e-06}, + {0.6732, -0.00986209, -0.000199572, 1.91978e-05}, + {0.6213, -0.010418, 8.83948e-05, 6.24031e-06}, + {0.5722, -0.00906601, 0.000181999, 6.24033e-06}, + {0.5322, 0.,0.,0.} }, Y[] = { -0, 0.0124, 3.72529e-10, 1.15484e-09, -0.062, 0.0124001, 1.76951e-08, -5.92321e-09, -0.124, 0.0123998, -7.09668e-08, 2.25753e-08, -0.186, 0.0124008, 2.66917e-07, -8.44523e-08, -0.248, 0.0123971, -9.99682e-07, 3.15569e-07, -0.31, 0.0124108, 3.73349e-06, -1.1779e-06, -0.372, 0.0123598, -1.3935e-05, 4.39588e-06, -0.434, 0.0125501, 5.20034e-05, -1.00051e-05, -0.4958, 0.0123198, -9.80735e-05, 9.22397e-06, -0.5571, 0.0120308, 4.02857e-05, -5.2901e-06, -0.6176, 0.0120369, -3.90662e-05, 7.36117e-07, -0.6769, 0.0117015, -2.80246e-05, -8.54283e-07, -0.7346, 0.0113572, -4.08389e-05, -5.18524e-07, -0.7903, 0.0109099, -4.86169e-05, -1.0718e-06, -0.8435, 0.0103433, -6.46934e-05, 5.36384e-09, -0.8936, 0.00969679, -6.46129e-05, -8.54894e-06, -0.9394, 0.00840949, -0.000192847, -4.21023e-06, -0.9761, 0.00616525, -0.000256001, -4.21021e-06, -1., 0.,0.,0 }; + {0, 0.0124, 3.72529e-10, 1.15484e-09}, + {0.062, 0.0124001, 1.76951e-08, -5.92321e-09}, + {0.124, 0.0123998, -7.09668e-08, 2.25753e-08}, + {0.186, 0.0124008, 2.66917e-07, -8.44523e-08}, + {0.248, 0.0123971, -9.99682e-07, 3.15569e-07}, + {0.31, 0.0124108, 3.73349e-06, -1.1779e-06}, + {0.372, 0.0123598, -1.3935e-05, 4.39588e-06}, + {0.434, 0.0125501, 5.20034e-05, -1.00051e-05}, + {0.4958, 0.0123198, -9.80735e-05, 9.22397e-06}, + {0.5571, 0.0120308, 4.02857e-05, -5.2901e-06}, + {0.6176, 0.0120369, -3.90662e-05, 7.36117e-07}, + {0.6769, 0.0117015, -2.80246e-05, -8.54283e-07}, + {0.7346, 0.0113572, -4.08389e-05, -5.18524e-07}, + {0.7903, 0.0109099, -4.86169e-05, -1.0718e-06}, + {0.8435, 0.0103433, -6.46934e-05, 5.36384e-09}, + {0.8936, 0.00969679, -6.46129e-05, -8.54894e-06}, + {0.9394, 0.00840949, -0.000192847, -4.21023e-06}, + {0.9761, 0.00616525, -0.000256001, -4.21021e-06}, + {1., 0.,0.,0} }; #define FXC 0.8487 #define FYC 1.3523 #define C1 11.45915590261646417544 diff --git a/src/PJ_rpoly.c b/src/PJ_rpoly.c index 1440327df..7a7670ed0 100644 --- a/src/PJ_rpoly.c +++ b/src/PJ_rpoly.c @@ -27,7 +27,7 @@ FORWARD(s_forward); /* spheroid */ } FREEUP; if (P) pj_dalloc(P); } ENTRY0(rpoly) - if ((P->mode = (P->phi1 = fabs(pj_param(P->params, "rlat_ts").f)) > EPS)) { + if ((P->mode = (P->phi1 = fabs(pj_param(P->ctx, P->params, "rlat_ts").f)) > EPS)) { P->fxb = 0.5 * sin(P->phi1); P->fxa = 0.5 / P->fxb; } diff --git a/src/PJ_sconics.c b/src/PJ_sconics.c index c65635d86..b999f95ca 100644 --- a/src/PJ_sconics.c +++ b/src/PJ_sconics.c @@ -37,12 +37,12 @@ phi12(PJ *P, double *del) { double p1, p2; int err = 0; - if (!pj_param(P->params, "tlat_1").i || - !pj_param(P->params, "tlat_2").i) { + if (!pj_param(P->ctx, P->params, "tlat_1").i || + !pj_param(P->ctx, P->params, "tlat_2").i) { err = -41; } else { - p1 = pj_param(P->params, "rlat_1").f; - p2 = pj_param(P->params, "rlat_2").f; + p1 = pj_param(P->ctx, P->params, "rlat_1").f; + p2 = pj_param(P->ctx, P->params, "rlat_2").f; *del = 0.5 * (p2 - p1); P->sig = 0.5 * (p2 + p1); err = (fabs(*del) < EPS || fabs(P->sig) < EPS) ? -42 : 0; diff --git a/src/PJ_somerc.c b/src/PJ_somerc.c index d419e653a..f7d1f119a 100644 --- a/src/PJ_somerc.c +++ b/src/PJ_somerc.c @@ -14,8 +14,8 @@ FORWARD(e_forward); + P->K)) - HALFPI; lamp = P->c * lp.lam; cp = cos(phip); - phipp = aasin(P->cosp0 * sin(phip) - P->sinp0 * cp * cos(lamp)); - lampp = aasin(cp * sin(lamp) / cos(phipp)); + phipp = aasin(P->ctx,P->cosp0 * sin(phip) - P->sinp0 * cp * cos(lamp)); + lampp = aasin(P->ctx,cp * sin(lamp) / cos(phipp)); xy.x = P->kR * lampp; xy.y = P->kR * log(tan(FORTPI + 0.5 * phipp)); return (xy); @@ -27,8 +27,8 @@ INVERSE(e_inverse); /* ellipsoid & spheroid */ phipp = 2. * (atan(exp(xy.y / P->kR)) - FORTPI); lampp = xy.x / P->kR; cp = cos(phipp); - phip = aasin(P->cosp0 * sin(phipp) + P->sinp0 * cp * cos(lampp)); - lamp = aasin(cp * sin(lampp) / cos(phip)); + phip = aasin(P->ctx,P->cosp0 * sin(phipp) + P->sinp0 * cp * cos(lampp)); + lamp = aasin(P->ctx,cp * sin(lampp) / cos(phip)); con = (P->K - log(tan(FORTPI + 0.5 * phip)))/P->c; for (i = NITER; i ; --i) { esp = P->e * sin(phip); @@ -55,7 +55,7 @@ ENTRY0(somerc) cp *= cp; P->c = sqrt(1 + P->es * cp * cp * P->rone_es); sp = sin(P->phi0); - P->cosp0 = cos( phip0 = aasin(P->sinp0 = sp / P->c) ); + P->cosp0 = cos( phip0 = aasin(P->ctx, P->sinp0 = sp / P->c) ); sp *= P->e; P->K = log(tan(FORTPI + 0.5 * phip0)) - P->c * ( log(tan(FORTPI + 0.5 * P->phi0)) - P->hlf_e * diff --git a/src/PJ_stere.c b/src/PJ_stere.c index a31bf97b8..2ee63f539 100644 --- a/src/PJ_stere.c +++ b/src/PJ_stere.c @@ -226,12 +226,12 @@ setup(PJ *P) { /* general initialization */ return P; } ENTRY0(stere) - P->phits = pj_param(P->params, "tlat_ts").i ? - P->phits = pj_param(P->params, "rlat_ts").f : HALFPI; + P->phits = pj_param(P->ctx, P->params, "tlat_ts").i ? + P->phits = pj_param(P->ctx, P->params, "rlat_ts").f : HALFPI; ENDENTRY(setup(P)) ENTRY0(ups) /* International Ellipsoid */ - P->phi0 = pj_param(P->params, "bsouth").i ? - HALFPI: HALFPI; + P->phi0 = pj_param(P->ctx, P->params, "bsouth").i ? - HALFPI: HALFPI; if (!P->es) E_ERROR(-34); P->k0 = .994; P->x0 = 2000000.; diff --git a/src/PJ_sterea.c b/src/PJ_sterea.c index 5e709529d..7e52e15aa 100644 --- a/src/PJ_sterea.c +++ b/src/PJ_sterea.c @@ -4,7 +4,7 @@ ** Copyright (c) 2003 Gerald I. Evenden */ static const char -LIBPROJ_ID[] = "$Id: PJ_sterea.c 1504 2009-01-06 02:11:57Z warmerdam $"; +LIBPROJ_ID[] = "$Id: PJ_sterea.c 2022 2011-05-20 13:04:08Z warmerdam $"; /* ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the @@ -42,7 +42,7 @@ PROJ_HEAD(sterea, "Oblique Stereographic Alternative") FORWARD(e_forward); /* ellipsoid */ double cosc, sinc, cosl, k; - lp = pj_gauss(lp, P->en); + lp = pj_gauss(P->ctx, lp, P->en); sinc = sin(lp.phi); cosc = cos(lp.phi); cosl = cos(lp.lam); @@ -67,10 +67,13 @@ INVERSE(e_inverse); /* ellipsoid */ lp.phi = P->phic0; lp.lam = 0.; } - return(pj_inv_gauss(lp, P->en)); + return(pj_inv_gauss(P->ctx, lp, P->en)); } FREEUP; if (P) { if (P->en) free(P->en); free(P); } } -ENTRY0(sterea) +ENTRYA(sterea) + + P->en=0; +ENTRYX double R; if (!(P->en = pj_gauss_ini(P->e, P->phi0, &(P->phic0), &R))) E_ERROR_0; diff --git a/src/PJ_sts.c b/src/PJ_sts.c index f1557feba..c35d5cfcd 100644 --- a/src/PJ_sts.c +++ b/src/PJ_sts.c @@ -27,7 +27,7 @@ INVERSE(s_inverse); /* spheroid */ double c; xy.y /= P->C_y; - c = cos(lp.phi = P->tan_mode ? atan(xy.y) : aasin(xy.y)); + c = cos(lp.phi = P->tan_mode ? atan(xy.y) : aasin(P->ctx,xy.y)); lp.phi /= P->C_p; lp.lam = xy.x / (P->C_x * cos(lp.phi)); if (P->tan_mode) diff --git a/src/PJ_tmerc.c b/src/PJ_tmerc.c index 14cf2e8e5..3b1e0fb51 100644 --- a/src/PJ_tmerc.c +++ b/src/PJ_tmerc.c @@ -32,7 +32,7 @@ FORWARD(e_forward); /* ellipse */ { xy.x = HUGE_VAL; xy.y = HUGE_VAL; - pj_errno = -14; + pj_ctx_set_errno( P->ctx, -14 ); return xy; } @@ -70,7 +70,7 @@ FORWARD(s_forward); /* sphere */ { xy.x = HUGE_VAL; xy.y = HUGE_VAL; - pj_errno = -14; + pj_ctx_set_errno( P->ctx, -14 ); return xy; } @@ -89,7 +89,7 @@ FORWARD(s_forward); /* sphere */ INVERSE(e_inverse); /* ellipsoid */ double n, con, cosphi, d, ds, sinphi, t; - lp.phi = pj_inv_mlfn(P->ml0 + xy.y / P->k0, P->es, P->en); + lp.phi = pj_inv_mlfn(P->ctx, P->ml0 + xy.y / P->k0, P->es, P->en); if (fabs(lp.phi) >= HALFPI) { lp.phi = xy.y < 0. ? -HALFPI : HALFPI; lp.lam = 0.; @@ -157,10 +157,10 @@ ENTRY1(utm, en) int zone; if (!P->es) E_ERROR(-34); - P->y0 = pj_param(P->params, "bsouth").i ? 10000000. : 0.; + P->y0 = pj_param(P->ctx, P->params, "bsouth").i ? 10000000. : 0.; P->x0 = 500000.; - if (pj_param(P->params, "tzone").i) /* zone input ? */ - if ((zone = pj_param(P->params, "izone").i) > 0 && zone <= 60) + if (pj_param(P->ctx, P->params, "tzone").i) /* zone input ? */ + if ((zone = pj_param(P->ctx, P->params, "izone").i) > 0 && zone <= 60) --zone; else E_ERROR(-35) diff --git a/src/PJ_tpeqd.c b/src/PJ_tpeqd.c index b4e76aa0a..4ab5cf4ea 100644 --- a/src/PJ_tpeqd.c +++ b/src/PJ_tpeqd.c @@ -10,8 +10,8 @@ FORWARD(s_forward); /* sphere */ sp = sin(lp.phi); cp = cos(lp.phi); - z1 = aacos(P->sp1 * sp + P->cp1 * cp * cos(dl1 = lp.lam + P->dlam2)); - z2 = aacos(P->sp2 * sp + P->cp2 * cp * cos(dl2 = lp.lam - P->dlam2)); + z1 = aacos(P->ctx,P->sp1 * sp + P->cp1 * cp * cos(dl1 = lp.lam + P->dlam2)); + z2 = aacos(P->ctx,P->sp2 * sp + P->cp2 * cp * cos(dl2 = lp.lam - P->dlam2)); z1 *= z1; z2 *= z2; xy.x = P->r2z0 * (t = z1 - z2); @@ -29,13 +29,13 @@ INVERSE(s_inverse); /* sphere */ s = cz1 + cz2; d = cz1 - cz2; lp.lam = - atan2(d, (s * P->thz0)); - lp.phi = aacos(hypot(P->thz0 * s, d) * P->rhshz0); + lp.phi = aacos(P->ctx,hypot(P->thz0 * s, d) * P->rhshz0); if ( xy.y < 0. ) lp.phi = - lp.phi; /* lam--phi now in system relative to P1--P2 base equator */ sp = sin(lp.phi); cp = cos(lp.phi); - lp.phi = aasin(P->sa * sp + P->ca * cp * (s = cos(lp.lam -= P->lp))); + lp.phi = aasin(P->ctx,P->sa * sp + P->ca * cp * (s = cos(lp.lam -= P->lp))); lp.lam = atan2(cp * sin(lp.lam), P->sa * cp * s - P->ca * sp) + P->lamc; return lp; } @@ -44,10 +44,10 @@ ENTRY0(tpeqd) double lam_1, lam_2, phi_1, phi_2, A12, pp; /* get control point locations */ - phi_1 = pj_param(P->params, "rlat_1").f; - lam_1 = pj_param(P->params, "rlon_1").f; - phi_2 = pj_param(P->params, "rlat_2").f; - lam_2 = pj_param(P->params, "rlon_2").f; + phi_1 = pj_param(P->ctx, P->params, "rlat_1").f; + lam_1 = pj_param(P->ctx, P->params, "rlon_1").f; + phi_2 = pj_param(P->ctx, P->params, "rlat_2").f; + lam_2 = pj_param(P->ctx, P->params, "rlon_2").f; if (phi_1 == phi_2 && lam_1 == lam_2) E_ERROR(-25); P->lam0 = adjlon(0.5 * (lam_1 + lam_2)); P->dlam2 = adjlon(lam_2 - lam_1); @@ -58,11 +58,11 @@ ENTRY0(tpeqd) P->cs = P->cp1 * P->sp2; P->sc = P->sp1 * P->cp2; P->ccs = P->cp1 * P->cp2 * sin(P->dlam2); - P->z02 = aacos(P->sp1 * P->sp2 + P->cp1 * P->cp2 * cos(P->dlam2)); + P->z02 = aacos(P->ctx,P->sp1 * P->sp2 + P->cp1 * P->cp2 * cos(P->dlam2)); P->hz0 = .5 * P->z02; A12 = atan2(P->cp2 * sin(P->dlam2), P->cp1 * P->sp2 - P->sp1 * P->cp2 * cos(P->dlam2)); - P->ca = cos(pp = aasin(P->cp1 * sin(A12))); + P->ca = cos(pp = aasin(P->ctx,P->cp1 * sin(A12))); P->sa = sin(pp); P->lp = adjlon(atan2(P->cp1 * cos(A12), P->sp1) - P->hz0); P->dlam2 *= .5; diff --git a/src/PJ_urm5.c b/src/PJ_urm5.c index 70a5a1d64..6928bb349 100644 --- a/src/PJ_urm5.c +++ b/src/PJ_urm5.c @@ -6,7 +6,7 @@ PROJ_HEAD(urm5, "Urmaev V") "\n\tPCyl., Sph.\n\tn= q= alphi="; FORWARD(s_forward); /* spheroid */ double t; - t = lp.phi = aasin(P->n * sin(lp.phi)); + t = lp.phi = aasin(P->ctx,P->n * sin(lp.phi)); xy.x = P->m * lp.lam * cos(lp.phi); t *= t; xy.y = lp.phi * (1. + t * P->q3) * P->rmn; @@ -16,9 +16,9 @@ FREEUP; if (P) pj_dalloc(P); } ENTRY0(urm5) double alpha, t; - P->n = pj_param(P->params, "dn").f; - P->q3 = pj_param(P->params, "dq").f / 3.; - alpha = pj_param(P->params, "ralpha").f; + P->n = pj_param(P->ctx, P->params, "dn").f; + P->q3 = pj_param(P->ctx, P->params, "dq").f / 3.; + alpha = pj_param(P->ctx, P->params, "ralpha").f; t = P->n * sin(alpha); P->m = cos(alpha) / sqrt(1. - t * t); P->rmn = 1. / (P->m * P->n); diff --git a/src/PJ_urmfps.c b/src/PJ_urmfps.c index 4a4f31a9a..5c5918ae5 100644 --- a/src/PJ_urmfps.c +++ b/src/PJ_urmfps.c @@ -7,14 +7,14 @@ PROJ_HEAD(wag1, "Wagner I (Kavraisky VI)") "\n\tPCyl, Sph."; #define C_x 0.8773826753 #define Cy 1.139753528477 FORWARD(s_forward); /* sphere */ - lp.phi = aasin(P->n * sin(lp.phi)); + lp.phi = aasin(P->ctx,P->n * sin(lp.phi)); xy.x = C_x * lp.lam * cos(lp.phi); xy.y = P->C_y * lp.phi; return (xy); } INVERSE(s_inverse); /* sphere */ xy.y /= P->C_y; - lp.phi = aasin(sin(xy.y) / P->n); + lp.phi = aasin(P->ctx,sin(xy.y) / P->n); lp.lam = xy.x / (C_x * cos(xy.y)); return (lp); } @@ -28,8 +28,8 @@ setup(PJ *P) { return P; } ENTRY0(urmfps) - if (pj_param(P->params, "tn").i) { - P->n = pj_param(P->params, "dn").f; + if (pj_param(P->ctx, P->params, "tn").i) { + P->n = pj_param(P->ctx, P->params, "dn").f; if (P->n <= 0. || P->n > 1.) E_ERROR(-40) } else diff --git a/src/PJ_wag2.c b/src/PJ_wag2.c index 96fd5fcb1..f4942bb23 100644 --- a/src/PJ_wag2.c +++ b/src/PJ_wag2.c @@ -6,7 +6,7 @@ PROJ_HEAD(wag2, "Wagner II") "\n\tPCyl., Sph."; #define C_p1 0.88022 #define C_p2 0.88550 FORWARD(s_forward); /* spheroid */ - lp.phi = aasin(C_p1 * sin(C_p2 * lp.phi)); + lp.phi = aasin(P->ctx,C_p1 * sin(C_p2 * lp.phi)); xy.x = C_x * lp.lam * cos(lp.phi); xy.y = C_y * lp.phi; return (xy); @@ -14,7 +14,7 @@ FORWARD(s_forward); /* spheroid */ INVERSE(s_inverse); /* spheroid */ lp.phi = xy.y / C_y; lp.lam = xy.x / (C_x * cos(lp.phi)); - lp.phi = aasin(sin(lp.phi) / C_p1) / C_p2; + lp.phi = aasin(P->ctx,sin(lp.phi) / C_p1) / C_p2; return (lp); } FREEUP; if (P) pj_dalloc(P); } diff --git a/src/PJ_wag3.c b/src/PJ_wag3.c index fbab4c498..482e389c9 100644 --- a/src/PJ_wag3.c +++ b/src/PJ_wag3.c @@ -18,7 +18,7 @@ FREEUP; if (P) pj_dalloc(P); } ENTRY0(wag3) double ts; - ts = pj_param(P->params, "rlat_ts").f; + ts = pj_param(P->ctx, P->params, "rlat_ts").f; P->C_x = cos(ts) / cos(2.*ts/3.); P->es = 0.; P->inv = s_inverse; P->fwd = s_forward; ENDENTRY(P) diff --git a/src/PJ_wink1.c b/src/PJ_wink1.c index 214e6f4fc..dfb455e03 100644 --- a/src/PJ_wink1.c +++ b/src/PJ_wink1.c @@ -15,6 +15,6 @@ INVERSE(s_inverse); /* spheroid */ } FREEUP; if (P) pj_dalloc(P); } ENTRY0(wink1) - P->cosphi1 = cos(pj_param(P->params, "rlat_ts").f); + P->cosphi1 = cos(pj_param(P->ctx, P->params, "rlat_ts").f); P->es = 0.; P->inv = s_inverse; P->fwd = s_forward; ENDENTRY(P) diff --git a/src/PJ_wink2.c b/src/PJ_wink2.c index 8eace0094..388c790a3 100644 --- a/src/PJ_wink2.c +++ b/src/PJ_wink2.c @@ -29,6 +29,6 @@ FORWARD(s_forward); /* spheroid */ } FREEUP; if (P) pj_dalloc(P); } ENTRY0(wink2) - P->cosphi1 = cos(pj_param(P->params, "rlat_1").f); + P->cosphi1 = cos(pj_param(P->ctx, P->params, "rlat_1").f); P->es = 0.; P->inv = 0; P->fwd = s_forward; ENDENTRY(P) diff --git a/src/_geod.pyx b/src/_geod.pyx deleted file mode 100644 index 2de8f02c7..000000000 --- a/src/_geod.pyx +++ /dev/null @@ -1,175 +0,0 @@ -# Make changes to this file, not the c-wrappers that Pyrex generates. - -include "_pyproj.pxi" - -cdef class Geod: - cdef GEODESIC_T geodesic_t - cdef public object geodstring - cdef public object proj_version - cdef char *geodinitstring - - def __cinit__(self, geodstring): - cdef GEODESIC_T GEOD_T - # setup geod initialization string. - self.geodstring = geodstring - bytestr = _strencode(geodstring) - self.geodinitstring = bytestr - # initialize projection - self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] - if pj_errno != 0: - raise RuntimeError(pj_strerrno(pj_errno)) - self.proj_version = PJ_VERSION/100. - - def __reduce__(self): - """special method that allows pyproj.Geod instance to be pickled""" - return (self.__class__,(self.geodstring,)) - - def _fwd(self, object lons, object lats, object az, object dist, radians=False): - """ - forward transformation - determine longitude, latitude and back azimuth - of a terminus point given an initial point longitude and latitude, plus - forward azimuth and distance. - if radians=True, lons/lats are radians instead of degrees. - """ - cdef Py_ssize_t buflenlons, buflenlats, buflenaz, buflend, ndim, i - cdef double *lonsdata, *latsdata, *azdata, *distdata - cdef void *londata, *latdata, *azdat, *distdat - # if buffer api is supported, get pointer to data buffers. - if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0: - raise RuntimeError - if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: - raise RuntimeError - if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: - raise RuntimeError - if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0: - raise RuntimeError - # process data in buffer - if not buflenlons == buflenlats == buflenaz == buflend: - raise RuntimeError("Buffer lengths not the same") - ndim = buflenlons//_doublesize - lonsdata = londata - latsdata = latdata - azdata = azdat - distdata = distdat - for i from 0 <= i < ndim: - if radians: - self.geodesic_t.p1.v = lonsdata[i] - self.geodesic_t.p1.u = latsdata[i] - self.geodesic_t.ALPHA12 = azdata[i] - self.geodesic_t.DIST = distdata[i] - else: - self.geodesic_t.p1.v = _dg2rad*lonsdata[i] - self.geodesic_t.p1.u = _dg2rad*latsdata[i] - self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] - self.geodesic_t.DIST = distdata[i] - geod_pre(&self.geodesic_t) - if pj_errno != 0: - raise RuntimeError(pj_strerrno(pj_errno)) - geod_for(&self.geodesic_t) - if pj_errno != 0: - raise RuntimeError(pj_strerrno(pj_errno)) - # check for NaN. - if self.geodesic_t.ALPHA21 != self.geodesic_t.ALPHA21: - raise ValueError('undefined inverse geodesic (may be an antipodal point)') - if radians: - lonsdata[i] = self.geodesic_t.p2.v - latsdata[i] = self.geodesic_t.p2.u - azdata[i] = self.geodesic_t.ALPHA21 - else: - lonsdata[i] = _rad2dg*self.geodesic_t.p2.v - latsdata[i] = _rad2dg*self.geodesic_t.p2.u - azdata[i] = _rad2dg*self.geodesic_t.ALPHA21 - - def _inv(self, object lons1, object lats1, object lons2, object lats2, radians=False): - """ - inverse transformation - return forward and back azimuths, plus distance - between an initial and terminus lat/lon pair. - if radians=True, lons/lats are radians instead of degrees. - """ - cdef Py_ssize_t buflenlons, buflenlats, buflenaz, buflend, ndim, i - cdef double *lonsdata, *latsdata, *azdata, *distdata - cdef void *londata, *latdata, *azdat, *distdat - # if buffer api is supported, get pointer to data buffers. - if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0: - raise RuntimeError - if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: - raise RuntimeError - if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: - raise RuntimeError - if PyObject_AsWriteBuffer(lats2, &distdat, &buflend) <> 0: - raise RuntimeError - # process data in buffer - if not buflenlons == buflenlats == buflenaz == buflend: - raise RuntimeError("Buffer lengths not the same") - ndim = buflenlons//_doublesize - lonsdata = londata - latsdata = latdata - azdata = azdat - distdata = distdat - errmsg = 'undefined inverse geodesic (may be an antipodal point)' - for i from 0 <= i < ndim: - if radians: - self.geodesic_t.p1.v = lonsdata[i] - self.geodesic_t.p1.u = latsdata[i] - self.geodesic_t.p2.v = azdata[i] - self.geodesic_t.p2.u = distdata[i] - else: - self.geodesic_t.p1.v = _dg2rad*lonsdata[i] - self.geodesic_t.p1.u = _dg2rad*latsdata[i] - self.geodesic_t.p2.v = _dg2rad*azdata[i] - self.geodesic_t.p2.u = _dg2rad*distdata[i] - geod_inv(&self.geodesic_t) - if self.geodesic_t.DIST != self.geodesic_t.DIST: # check for NaN - raise ValueError('undefined inverse geodesic (may be an antipodal point)') - if pj_errno != 0: - raise RuntimeError(pj_strerrno(pj_errno)) - if radians: - lonsdata[i] = self.geodesic_t.ALPHA12 - latsdata[i] = self.geodesic_t.ALPHA21 - else: - lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 - latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 - azdata[i] = self.geodesic_t.DIST - - def _npts(self, double lon1, double lat1, double lon2, double lat2, int npts, radians=False): - """ - given initial and terminus lat/lon, find npts intermediate points.""" - cdef int i - cdef double del_s - if radians: - self.geodesic_t.p1.v = lon1 - self.geodesic_t.p1.u = lat1 - self.geodesic_t.p2.v = lon2 - self.geodesic_t.p2.u = lat2 - else: - self.geodesic_t.p1.v = _dg2rad*lon1 - self.geodesic_t.p1.u = _dg2rad*lat1 - self.geodesic_t.p2.v = _dg2rad*lon2 - self.geodesic_t.p2.u = _dg2rad*lat2 - # do inverse computation to set azimuths, distance. - geod_inv(&self.geodesic_t) - # set up some constants needed for forward computation. - geod_pre(&self.geodesic_t) - # distance increment. - del_s = self.geodesic_t.DIST/(npts+1) - # initialize output tuples. - lats = () - lons = () - # loop over intermediate points, compute lat/lons. - for i from 1 <= i < npts+1: - self.geodesic_t.DIST = i*del_s - geod_for(&self.geodesic_t) - if radians: - lats = lats + (self.geodesic_t.p2.u,) - lons = lons + (self.geodesic_t.p2.v,) - else: - lats = lats + (_rad2dg*self.geodesic_t.p2.u,) - lons = lons + (_rad2dg*self.geodesic_t.p2.v,) - return lons, lats - -cdef _strencode(pystr,encoding='ascii'): - # encode a string into bytes. If already bytes, do nothing. - try: - return pystr.encode(encoding) - except AttributeError: - return pystr # already bytes? diff --git a/src/_proj.c b/src/_proj.c index 6e8299535..c403343f3 100644 --- a/src/_proj.c +++ b/src/_proj.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.15.1 on Thu Oct 20 15:46:15 2011 */ +/* Generated by Cython 0.15.1 on Tue Dec 20 10:56:14 2011 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -232,9 +232,7 @@ #include #define __PYX_HAVE___proj #define __PYX_HAVE_API___proj -#include "stdlib.h" #include "math.h" -#include "geodesic.h" #include "proj_api.h" #ifdef _OPENMP #include @@ -319,14 +317,13 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "_proj.pyx", - "_pyproj.pxi", }; /*--- Type declarations ---*/ struct __pyx_obj_5_proj_Proj; struct __pyx_opt_args_5_proj__strencode; -/* "_proj.pyx":281 +/* "_proj.pyx":335 * yy[i] = yy[i]*_rad2dg * * cdef _strencode(pystr,encoding='ascii'): # <<<<<<<<<<<<<< @@ -338,16 +335,17 @@ struct __pyx_opt_args_5_proj__strencode { PyObject *encoding; }; -/* "_proj.pyx":13 +/* "_proj.pyx":51 * pj_set_searchpath(1, &searchpath) * * cdef class Proj: # <<<<<<<<<<<<<< * cdef projPJ projpj - * cdef public object proj_version + * cdef projCtx projctx */ struct __pyx_obj_5_proj_Proj { PyObject_HEAD projPJ projpj; + projCtx projctx; PyObject *proj_version; char *pjinitstring; PyObject *srs; @@ -462,6 +460,8 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ /* Module declarations from '_proj' */ static PyTypeObject *__pyx_ptype_5_proj_Proj = 0; +static double __pyx_v_5_proj__dg2rad; +static double __pyx_v_5_proj__rad2dg; static PyObject *__pyx_f_5_proj__strencode(PyObject *, struct __pyx_opt_args_5_proj__strencode *__pyx_optional_args); /*proto*/ #define __Pyx_MODULE_NAME "_proj" int __pyx_module_is_main__proj = 0; @@ -472,7 +472,7 @@ static PyObject *__pyx_builtin_AttributeError; static char __pyx_k_3[] = "Buffer lengths not the same"; static char __pyx_k_5[] = "projection undefined"; static char __pyx_k_15[] = "x,y and z must be same size"; -static char __pyx_k_17[] = "1.8.9"; +static char __pyx_k_17[] = "1.9.0"; static char __pyx_k__x[] = "x"; static char __pyx_k__y[] = "y"; static char __pyx_k__p1[] = "p1"; @@ -486,8 +486,6 @@ static char __pyx_k__math[] = "math"; static char __pyx_k___proj[] = "_proj"; static char __pyx_k__ascii[] = "ascii"; static char __pyx_k__encode[] = "encode"; -static char __pyx_k___dg2rad[] = "_dg2rad"; -static char __pyx_k___rad2dg[] = "_rad2dg"; static char __pyx_k__degrees[] = "degrees"; static char __pyx_k__radians[] = "radians"; static char __pyx_k____main__[] = "__main__"; @@ -512,10 +510,8 @@ static PyObject *__pyx_n_s____class__; static PyObject *__pyx_n_s____main__; static PyObject *__pyx_n_s____test__; static PyObject *__pyx_n_s____version__; -static PyObject *__pyx_n_s___dg2rad; static PyObject *__pyx_n_s___doublesize; static PyObject *__pyx_n_s___proj; -static PyObject *__pyx_n_s___rad2dg; static PyObject *__pyx_n_s___transform; static PyObject *__pyx_n_s__ascii; static PyObject *__pyx_n_s__degrees; @@ -549,8 +545,8 @@ static PyObject *__pyx_k_tuple_13; static PyObject *__pyx_k_tuple_14; static PyObject *__pyx_k_tuple_16; -/* "_proj.pyx":7 - * #c_numpy.import_array() +/* "_proj.pyx":45 + * int PyObject_AsWriteBuffer(object, void **rbuf, Py_ssize_t *len) * * def set_datapath(datapath): # <<<<<<<<<<<<<< * cdef char *searchpath @@ -572,29 +568,29 @@ static PyObject *__pyx_pf_5_proj_set_datapath(PyObject *__pyx_self, PyObject *__ __Pyx_RefNannySetupContext("set_datapath"); __pyx_self = __pyx_self; - /* "_proj.pyx":9 + /* "_proj.pyx":47 * def set_datapath(datapath): * cdef char *searchpath * bytestr = _strencode(datapath) # <<<<<<<<<<<<<< * searchpath = bytestr * pj_set_searchpath(1, &searchpath) */ - __pyx_t_1 = __pyx_f_5_proj__strencode(__pyx_v_datapath, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_f_5_proj__strencode(__pyx_v_datapath, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_bytestr = __pyx_t_1; __pyx_t_1 = 0; - /* "_proj.pyx":10 + /* "_proj.pyx":48 * cdef char *searchpath * bytestr = _strencode(datapath) * searchpath = bytestr # <<<<<<<<<<<<<< * pj_set_searchpath(1, &searchpath) * */ - __pyx_t_2 = PyBytes_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyBytes_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_searchpath = __pyx_t_2; - /* "_proj.pyx":11 + /* "_proj.pyx":49 * bytestr = _strencode(datapath) * searchpath = bytestr * pj_set_searchpath(1, &searchpath) # <<<<<<<<<<<<<< @@ -616,17 +612,18 @@ static PyObject *__pyx_pf_5_proj_set_datapath(PyObject *__pyx_self, PyObject *__ return __pyx_r; } -/* "_proj.pyx":19 +/* "_proj.pyx":58 * cdef public object srs * * def __cinit__(self, projstring): # <<<<<<<<<<<<<< * # setup proj initialization string. - * self.srs = projstring + * cdef int err */ static int __pyx_pf_5_proj_4Proj___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pf_5_proj_4Proj___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_projstring = 0; + int __pyx_v_err; PyObject *__pyx_v_bytestr = NULL; int __pyx_r; __Pyx_RefNannyDeclarations @@ -656,7 +653,7 @@ static int __pyx_pf_5_proj_4Proj___cinit__(PyObject *__pyx_v_self, PyObject *__p else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -667,16 +664,16 @@ static int __pyx_pf_5_proj_4Proj___cinit__(PyObject *__pyx_v_self, PyObject *__p } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_proj.Proj.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - /* "_proj.pyx":21 - * def __cinit__(self, projstring): + /* "_proj.pyx":61 * # setup proj initialization string. + * cdef int err * self.srs = projstring # <<<<<<<<<<<<<< * bytestr = _strencode(projstring) * self.pjinitstring = bytestr @@ -687,79 +684,97 @@ static int __pyx_pf_5_proj_4Proj___cinit__(PyObject *__pyx_v_self, PyObject *__p __Pyx_DECREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs); ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs = __pyx_v_projstring; - /* "_proj.pyx":22 - * # setup proj initialization string. + /* "_proj.pyx":62 + * cdef int err * self.srs = projstring * bytestr = _strencode(projstring) # <<<<<<<<<<<<<< * self.pjinitstring = bytestr * # initialize projection */ - __pyx_t_1 = __pyx_f_5_proj__strencode(__pyx_v_projstring, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_f_5_proj__strencode(__pyx_v_projstring, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_bytestr = __pyx_t_1; __pyx_t_1 = 0; - /* "_proj.pyx":23 + /* "_proj.pyx":63 * self.srs = projstring * bytestr = _strencode(projstring) * self.pjinitstring = bytestr # <<<<<<<<<<<<<< * # initialize projection - * self.projpj = pj_init_plus(self.pjinitstring) + * self.projctx = pj_ctx_alloc() */ - __pyx_t_2 = PyBytes_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyBytes_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->pjinitstring = __pyx_t_2; - /* "_proj.pyx":25 + /* "_proj.pyx":65 * self.pjinitstring = bytestr * # initialize projection - * self.projpj = pj_init_plus(self.pjinitstring) # <<<<<<<<<<<<<< - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) + * self.projctx = pj_ctx_alloc() # <<<<<<<<<<<<<< + * self.projpj = pj_init_plus_ctx(self.projctx, self.pjinitstring) + * err = pj_ctx_get_errno(self.projctx) */ - ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj = pj_init_plus(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->pjinitstring); + ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projctx = pj_ctx_alloc(); - /* "_proj.pyx":26 + /* "_proj.pyx":66 * # initialize projection - * self.projpj = pj_init_plus(self.pjinitstring) - * if pj_errno != 0: # <<<<<<<<<<<<<< - * raise RuntimeError(pj_strerrno(pj_errno)) + * self.projctx = pj_ctx_alloc() + * self.projpj = pj_init_plus_ctx(self.projctx, self.pjinitstring) # <<<<<<<<<<<<<< + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: + */ + ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj = pj_init_plus_ctx(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projctx, ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->pjinitstring); + + /* "_proj.pyx":67 + * self.projctx = pj_ctx_alloc() + * self.projpj = pj_init_plus_ctx(self.projctx, self.pjinitstring) + * err = pj_ctx_get_errno(self.projctx) # <<<<<<<<<<<<<< + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) + */ + __pyx_v_err = pj_ctx_get_errno(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projctx); + + /* "_proj.pyx":68 + * self.projpj = pj_init_plus_ctx(self.projctx, self.pjinitstring) + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: # <<<<<<<<<<<<<< + * raise RuntimeError(pj_strerrno(err)) * self.proj_version = PJ_VERSION/100. */ - __pyx_t_3 = (pj_errno != 0); + __pyx_t_3 = (__pyx_v_err != 0); if (__pyx_t_3) { - /* "_proj.pyx":27 - * self.projpj = pj_init_plus(self.pjinitstring) - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< + /* "_proj.pyx":69 + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) # <<<<<<<<<<<<<< * self.proj_version = PJ_VERSION/100. * */ - __pyx_t_1 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyBytes_FromString(pj_strerrno(__pyx_v_err)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_1)); __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } __pyx_L6:; - /* "_proj.pyx":28 - * if pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) + /* "_proj.pyx":70 + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) * self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<< * * def __dealloc__(self): */ - __pyx_t_1 = PyFloat_FromDouble((PJ_VERSION / 100.)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble((PJ_VERSION / 100.)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->proj_version); @@ -780,7 +795,7 @@ static int __pyx_pf_5_proj_4Proj___cinit__(PyObject *__pyx_v_self, PyObject *__p return __pyx_r; } -/* "_proj.pyx":30 +/* "_proj.pyx":72 * self.proj_version = PJ_VERSION/100. * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -793,20 +808,29 @@ static void __pyx_pf_5_proj_4Proj_1__dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__"); - /* "_proj.pyx":32 + /* "_proj.pyx":74 * def __dealloc__(self): * """destroy projection definition""" * pj_free(self.projpj) # <<<<<<<<<<<<<< + * pj_ctx_free(self.projctx) * - * def __reduce__(self): */ pj_free(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); + /* "_proj.pyx":75 + * """destroy projection definition""" + * pj_free(self.projpj) + * pj_ctx_free(self.projctx) # <<<<<<<<<<<<<< + * + * def __reduce__(self): + */ + pj_ctx_free(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projctx); + __Pyx_RefNannyFinishContext(); } -/* "_proj.pyx":34 - * pj_free(self.projpj) +/* "_proj.pyx":77 + * pj_ctx_free(self.projctx) * * def __reduce__(self): # <<<<<<<<<<<<<< * """special method that allows pyproj.Proj instance to be pickled""" @@ -826,7 +850,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_2__reduce__(PyObject *__pyx_v_self, CYTHO int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce__"); - /* "_proj.pyx":36 + /* "_proj.pyx":79 * def __reduce__(self): * """special method that allows pyproj.Proj instance to be pickled""" * return (self.__class__,(self.srs,)) # <<<<<<<<<<<<<< @@ -834,14 +858,14 @@ static PyObject *__pyx_pf_5_proj_4Proj_2__reduce__(PyObject *__pyx_v_self, CYTHO * def _fwd(self, object lons, object lats, radians=False, errcheck=False): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____class__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____class__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __Pyx_INCREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs); PyTuple_SET_ITEM(__pyx_t_2, 0, ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs); __Pyx_GIVEREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -867,7 +891,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_2__reduce__(PyObject *__pyx_v_self, CYTHO return __pyx_r; } -/* "_proj.pyx":38 +/* "_proj.pyx":81 * return (self.__class__,(self.srs,)) * * def _fwd(self, object lons, object lats, radians=False, errcheck=False): # <<<<<<<<<<<<<< @@ -892,6 +916,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ double *__pyx_v_latsdata; void *__pyx_v_londata; void *__pyx_v_latdata; + int __pyx_v_err; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -901,7 +926,6 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ Py_ssize_t __pyx_t_5; int __pyx_t_6; int __pyx_t_7; - double __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -931,7 +955,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lats); if (likely(values[1])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_fwd", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_fwd", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -945,7 +969,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_fwd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_fwd") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -964,15 +988,15 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_fwd", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_fwd", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_proj.Proj._fwd", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - /* "_proj.pyx":52 - * cdef void *londata, *latdata + /* "_proj.pyx":96 + * cdef int err * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: # <<<<<<<<<<<<<< * raise RuntimeError @@ -981,7 +1005,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lons, (&__pyx_v_londata), (&__pyx_v_buflenx)) != 0); if (__pyx_t_1) { - /* "_proj.pyx":53 + /* "_proj.pyx":97 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -989,12 +1013,12 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } __pyx_L6:; - /* "_proj.pyx":54 + /* "_proj.pyx":98 * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &bufleny) <> 0: # <<<<<<<<<<<<<< @@ -1004,7 +1028,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_lats, (&__pyx_v_latdata), (&__pyx_v_bufleny)) != 0); if (__pyx_t_1) { - /* "_proj.pyx":55 + /* "_proj.pyx":99 * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &bufleny) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1012,12 +1036,12 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ * if buflenx != bufleny: */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L7; } __pyx_L7:; - /* "_proj.pyx":57 + /* "_proj.pyx":101 * raise RuntimeError * # process data in buffer * if buflenx != bufleny: # <<<<<<<<<<<<<< @@ -1027,42 +1051,42 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (__pyx_v_buflenx != __pyx_v_bufleny); if (__pyx_t_1) { - /* "_proj.pyx":58 + /* "_proj.pyx":102 * # process data in buffer * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenx//_doublesize * lonsdata = londata */ - __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L8; } __pyx_L8:; - /* "_proj.pyx":59 + /* "_proj.pyx":103 * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx//_doublesize # <<<<<<<<<<<<<< * lonsdata = londata * latsdata = latdata */ - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_buflenx); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_buflenx); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_FloorDivide(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_FloorDivide(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_ndim = __pyx_t_5; - /* "_proj.pyx":60 + /* "_proj.pyx":104 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx//_doublesize * lonsdata = londata # <<<<<<<<<<<<<< @@ -1071,7 +1095,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_lonsdata = ((double *)__pyx_v_londata); - /* "_proj.pyx":61 + /* "_proj.pyx":105 * ndim = buflenx//_doublesize * lonsdata = londata * latsdata = latdata # <<<<<<<<<<<<<< @@ -1080,7 +1104,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_latsdata = ((double *)__pyx_v_latdata); - /* "_proj.pyx":62 + /* "_proj.pyx":106 * lonsdata = londata * latsdata = latdata * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< @@ -1090,7 +1114,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ __pyx_t_5 = __pyx_v_ndim; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { - /* "_proj.pyx":64 + /* "_proj.pyx":108 * for i from 0 <= i < ndim: * # if inputs are nan's, return big number. * if lonsdata[i] != lonsdata[i] or latsdata[i] != latsdata[i]: # <<<<<<<<<<<<<< @@ -1106,7 +1130,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ } if (__pyx_t_7) { - /* "_proj.pyx":65 + /* "_proj.pyx":109 * # if inputs are nan's, return big number. * if lonsdata[i] != lonsdata[i] or latsdata[i] != latsdata[i]: * lonsdata[i]=1.e30; latsdata[i]=1.e30 # <<<<<<<<<<<<<< @@ -1116,33 +1140,33 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ (__pyx_v_lonsdata[__pyx_v_i]) = 1.e30; (__pyx_v_latsdata[__pyx_v_i]) = 1.e30; - /* "_proj.pyx":66 + /* "_proj.pyx":110 * if lonsdata[i] != lonsdata[i] or latsdata[i] != latsdata[i]: * lonsdata[i]=1.e30; latsdata[i]=1.e30 * if errcheck: # <<<<<<<<<<<<<< * raise RuntimeError('projection undefined') * continue */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - /* "_proj.pyx":67 + /* "_proj.pyx":111 * lonsdata[i]=1.e30; latsdata[i]=1.e30 * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * continue * if radians: */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L12; } __pyx_L12:; - /* "_proj.pyx":68 + /* "_proj.pyx":112 * if errcheck: * raise RuntimeError('projection undefined') * continue # <<<<<<<<<<<<<< @@ -1154,17 +1178,17 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ } __pyx_L11:; - /* "_proj.pyx":69 + /* "_proj.pyx":113 * raise RuntimeError('projection undefined') * continue * if radians: # <<<<<<<<<<<<<< * projlonlatin.u = lonsdata[i] * projlonlatin.v = latsdata[i] */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - /* "_proj.pyx":70 + /* "_proj.pyx":114 * continue * if radians: * projlonlatin.u = lonsdata[i] # <<<<<<<<<<<<<< @@ -1173,7 +1197,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_projlonlatin.u = (__pyx_v_lonsdata[__pyx_v_i]); - /* "_proj.pyx":71 + /* "_proj.pyx":115 * if radians: * projlonlatin.u = lonsdata[i] * projlonlatin.v = latsdata[i] # <<<<<<<<<<<<<< @@ -1185,146 +1209,142 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ } /*else*/ { - /* "_proj.pyx":73 + /* "_proj.pyx":117 * projlonlatin.v = latsdata[i] * else: * projlonlatin.u = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_projlonlatin.u = __pyx_t_8; + __pyx_v_projlonlatin.u = (__pyx_v_5_proj__dg2rad * (__pyx_v_lonsdata[__pyx_v_i])); - /* "_proj.pyx":74 + /* "_proj.pyx":118 * else: * projlonlatin.u = _dg2rad*lonsdata[i] * projlonlatin.v = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< * projxyout = pj_fwd(projlonlatin,self.projpj) - * if errcheck and pj_errno != 0: + * if errcheck: */ - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_projlonlatin.v = __pyx_t_8; + __pyx_v_projlonlatin.v = (__pyx_v_5_proj__dg2rad * (__pyx_v_latsdata[__pyx_v_i])); } __pyx_L13:; - /* "_proj.pyx":75 + /* "_proj.pyx":119 * projlonlatin.u = _dg2rad*lonsdata[i] * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) # <<<<<<<<<<<<<< - * if errcheck and pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) + * if errcheck: + * err = pj_ctx_get_errno(self.projctx) */ __pyx_v_projxyout = pj_fwd(__pyx_v_projlonlatin, ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); - /* "_proj.pyx":76 + /* "_proj.pyx":120 * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) - * if errcheck and pj_errno != 0: # <<<<<<<<<<<<<< - * raise RuntimeError(pj_strerrno(pj_errno)) - * # since HUGE_VAL can be 'inf', + * if errcheck: # <<<<<<<<<<<<<< + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - __pyx_t_1 = (pj_errno != 0); - __pyx_t_6 = __pyx_t_1; - } else { - __pyx_t_6 = __pyx_t_7; - } - if (__pyx_t_6) { - /* "_proj.pyx":77 + /* "_proj.pyx":121 * projxyout = pj_fwd(projlonlatin,self.projpj) - * if errcheck and pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< + * if errcheck: + * err = pj_ctx_get_errno(self.projctx) # <<<<<<<<<<<<<< + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) + */ + __pyx_v_err = pj_ctx_get_errno(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projctx); + + /* "_proj.pyx":122 + * if errcheck: + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: # <<<<<<<<<<<<<< + * raise RuntimeError(pj_strerrno(err)) + * # since HUGE_VAL can be 'inf', + */ + __pyx_t_7 = (__pyx_v_err != 0); + if (__pyx_t_7) { + + /* "_proj.pyx":123 + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) # <<<<<<<<<<<<<< * # since HUGE_VAL can be 'inf', * # change it to a real (but very large) number. */ - __pyx_t_4 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); - __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyBytes_FromString(pj_strerrno(__pyx_v_err)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); + __pyx_t_4 = 0; + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L15; + } + __pyx_L15:; goto __pyx_L14; } __pyx_L14:; - /* "_proj.pyx":81 + /* "_proj.pyx":127 * # change it to a real (but very large) number. * # also check for NaNs. * if projxyout.u == HUGE_VAL or\ # <<<<<<<<<<<<<< * projxyout.u != projxyout.u: * if errcheck: */ - __pyx_t_6 = (__pyx_v_projxyout.u == HUGE_VAL); - if (!__pyx_t_6) { + __pyx_t_7 = (__pyx_v_projxyout.u == HUGE_VAL); + if (!__pyx_t_7) { - /* "_proj.pyx":82 + /* "_proj.pyx":128 * # also check for NaNs. * if projxyout.u == HUGE_VAL or\ * projxyout.u != projxyout.u: # <<<<<<<<<<<<<< * if errcheck: * raise RuntimeError('projection undefined') */ - __pyx_t_7 = (__pyx_v_projxyout.u != __pyx_v_projxyout.u); - __pyx_t_1 = __pyx_t_7; + __pyx_t_1 = (__pyx_v_projxyout.u != __pyx_v_projxyout.u); + __pyx_t_6 = __pyx_t_1; } else { - __pyx_t_1 = __pyx_t_6; + __pyx_t_6 = __pyx_t_7; } - if (__pyx_t_1) { + if (__pyx_t_6) { - /* "_proj.pyx":83 + /* "_proj.pyx":129 * if projxyout.u == HUGE_VAL or\ * projxyout.u != projxyout.u: * if errcheck: # <<<<<<<<<<<<<< * raise RuntimeError('projection undefined') * lonsdata[i] = 1.e30 */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_1) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_6) { - /* "_proj.pyx":84 + /* "_proj.pyx":130 * projxyout.u != projxyout.u: * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * lonsdata[i] = 1.e30 * else: */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L16; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L17; } - __pyx_L16:; + __pyx_L17:; - /* "_proj.pyx":85 + /* "_proj.pyx":131 * if errcheck: * raise RuntimeError('projection undefined') * lonsdata[i] = 1.e30 # <<<<<<<<<<<<<< @@ -1332,11 +1352,11 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ * lonsdata[i] = projxyout.u */ (__pyx_v_lonsdata[__pyx_v_i]) = 1.e30; - goto __pyx_L15; + goto __pyx_L16; } /*else*/ { - /* "_proj.pyx":87 + /* "_proj.pyx":133 * lonsdata[i] = 1.e30 * else: * lonsdata[i] = projxyout.u # <<<<<<<<<<<<<< @@ -1345,59 +1365,59 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ */ (__pyx_v_lonsdata[__pyx_v_i]) = __pyx_v_projxyout.u; } - __pyx_L15:; + __pyx_L16:; - /* "_proj.pyx":88 + /* "_proj.pyx":134 * else: * lonsdata[i] = projxyout.u * if projxyout.v == HUGE_VAL or\ # <<<<<<<<<<<<<< * projxyout.u != projxyout.u: * if errcheck: */ - __pyx_t_1 = (__pyx_v_projxyout.v == HUGE_VAL); - if (!__pyx_t_1) { + __pyx_t_6 = (__pyx_v_projxyout.v == HUGE_VAL); + if (!__pyx_t_6) { - /* "_proj.pyx":89 + /* "_proj.pyx":135 * lonsdata[i] = projxyout.u * if projxyout.v == HUGE_VAL or\ * projxyout.u != projxyout.u: # <<<<<<<<<<<<<< * if errcheck: * raise RuntimeError('projection undefined') */ - __pyx_t_6 = (__pyx_v_projxyout.u != __pyx_v_projxyout.u); - __pyx_t_7 = __pyx_t_6; + __pyx_t_7 = (__pyx_v_projxyout.u != __pyx_v_projxyout.u); + __pyx_t_1 = __pyx_t_7; } else { - __pyx_t_7 = __pyx_t_1; + __pyx_t_1 = __pyx_t_6; } - if (__pyx_t_7) { + if (__pyx_t_1) { - /* "_proj.pyx":90 + /* "_proj.pyx":136 * if projxyout.v == HUGE_VAL or\ * projxyout.u != projxyout.u: * if errcheck: # <<<<<<<<<<<<<< * raise RuntimeError('projection undefined') * latsdata[i] = 1.e30 */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_1) { - /* "_proj.pyx":91 + /* "_proj.pyx":137 * projxyout.u != projxyout.u: * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * latsdata[i] = 1.e30 * else: */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L18; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L19; } - __pyx_L18:; + __pyx_L19:; - /* "_proj.pyx":92 + /* "_proj.pyx":138 * if errcheck: * raise RuntimeError('projection undefined') * latsdata[i] = 1.e30 # <<<<<<<<<<<<<< @@ -1405,11 +1425,11 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ * latsdata[i] = projxyout.v */ (__pyx_v_latsdata[__pyx_v_i]) = 1.e30; - goto __pyx_L17; + goto __pyx_L18; } /*else*/ { - /* "_proj.pyx":94 + /* "_proj.pyx":140 * latsdata[i] = 1.e30 * else: * latsdata[i] = projxyout.v # <<<<<<<<<<<<<< @@ -1418,7 +1438,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ */ (__pyx_v_latsdata[__pyx_v_i]) = __pyx_v_projxyout.v; } - __pyx_L17:; + __pyx_L18:; __pyx_L9_continue:; } @@ -1436,7 +1456,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_3_fwd(PyObject *__pyx_v_self, PyObject *_ return __pyx_r; } -/* "_proj.pyx":96 +/* "_proj.pyx":142 * latsdata[i] = projxyout.v * * def _inv(self, object x, object y, radians=False, errcheck=False): # <<<<<<<<<<<<<< @@ -1461,6 +1481,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ void *__pyx_v_ydata; double *__pyx_v_xdatab; double *__pyx_v_ydatab; + int __pyx_v_err; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -1470,7 +1491,6 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ Py_ssize_t __pyx_t_5; int __pyx_t_6; int __pyx_t_7; - double __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -1500,7 +1520,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y); if (likely(values[1])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_inv", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_inv", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -1514,7 +1534,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_inv") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_inv") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -1533,14 +1553,14 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_inv", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_inv", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_proj.Proj._inv", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - /* "_proj.pyx":110 + /* "_proj.pyx":156 * cdef double *xdatab, *ydatab * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(x, &xdata, &buflenx) <> 0: # <<<<<<<<<<<<<< @@ -1550,7 +1570,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_x, (&__pyx_v_xdata), (&__pyx_v_buflenx)) != 0); if (__pyx_t_1) { - /* "_proj.pyx":111 + /* "_proj.pyx":157 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(x, &xdata, &buflenx) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1558,12 +1578,12 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } __pyx_L6:; - /* "_proj.pyx":112 + /* "_proj.pyx":158 * if PyObject_AsWriteBuffer(x, &xdata, &buflenx) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(y, &ydata, &bufleny) <> 0: # <<<<<<<<<<<<<< @@ -1573,7 +1593,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_y, (&__pyx_v_ydata), (&__pyx_v_bufleny)) != 0); if (__pyx_t_1) { - /* "_proj.pyx":113 + /* "_proj.pyx":159 * raise RuntimeError * if PyObject_AsWriteBuffer(y, &ydata, &bufleny) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1581,12 +1601,12 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ * # (for numpy/regular python arrays). */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L7; } __pyx_L7:; - /* "_proj.pyx":116 + /* "_proj.pyx":162 * # process data in buffer * # (for numpy/regular python arrays). * if buflenx != bufleny: # <<<<<<<<<<<<<< @@ -1596,42 +1616,42 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_1 = (__pyx_v_buflenx != __pyx_v_bufleny); if (__pyx_t_1) { - /* "_proj.pyx":117 + /* "_proj.pyx":163 * # (for numpy/regular python arrays). * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenx//_doublesize * xdatab = xdata */ - __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_11), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_11), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L8; } __pyx_L8:; - /* "_proj.pyx":118 + /* "_proj.pyx":164 * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx//_doublesize # <<<<<<<<<<<<<< * xdatab = xdata * ydatab = ydata */ - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_buflenx); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_buflenx); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___doublesize); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_FloorDivide(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_FloorDivide(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_ndim = __pyx_t_5; - /* "_proj.pyx":119 + /* "_proj.pyx":165 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx//_doublesize * xdatab = xdata # <<<<<<<<<<<<<< @@ -1640,7 +1660,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_xdatab = ((double *)__pyx_v_xdata); - /* "_proj.pyx":120 + /* "_proj.pyx":166 * ndim = buflenx//_doublesize * xdatab = xdata * ydatab = ydata # <<<<<<<<<<<<<< @@ -1649,7 +1669,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_ydatab = ((double *)__pyx_v_ydata); - /* "_proj.pyx":121 + /* "_proj.pyx":167 * xdatab = xdata * ydatab = ydata * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< @@ -1659,7 +1679,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ __pyx_t_5 = __pyx_v_ndim; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { - /* "_proj.pyx":123 + /* "_proj.pyx":169 * for i from 0 <= i < ndim: * # if inputs are nan's, return big number. * if xdatab[i] != xdatab[i] or ydatab[i] != ydatab[i]: # <<<<<<<<<<<<<< @@ -1675,7 +1695,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ } if (__pyx_t_7) { - /* "_proj.pyx":124 + /* "_proj.pyx":170 * # if inputs are nan's, return big number. * if xdatab[i] != xdatab[i] or ydatab[i] != ydatab[i]: * xdatab[i]=1.e30; ydatab[i]=1.e30 # <<<<<<<<<<<<<< @@ -1685,33 +1705,33 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ (__pyx_v_xdatab[__pyx_v_i]) = 1.e30; (__pyx_v_ydatab[__pyx_v_i]) = 1.e30; - /* "_proj.pyx":125 + /* "_proj.pyx":171 * if xdatab[i] != xdatab[i] or ydatab[i] != ydatab[i]: * xdatab[i]=1.e30; ydatab[i]=1.e30 * if errcheck: # <<<<<<<<<<<<<< * raise RuntimeError('projection undefined') * continue */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - /* "_proj.pyx":126 + /* "_proj.pyx":172 * xdatab[i]=1.e30; ydatab[i]=1.e30 * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * continue * projxyin.u = xdatab[i] */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L12; } __pyx_L12:; - /* "_proj.pyx":127 + /* "_proj.pyx":173 * if errcheck: * raise RuntimeError('projection undefined') * continue # <<<<<<<<<<<<<< @@ -1723,7 +1743,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ } __pyx_L11:; - /* "_proj.pyx":128 + /* "_proj.pyx":174 * raise RuntimeError('projection undefined') * continue * projxyin.u = xdatab[i] # <<<<<<<<<<<<<< @@ -1732,115 +1752,131 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ */ __pyx_v_projxyin.u = (__pyx_v_xdatab[__pyx_v_i]); - /* "_proj.pyx":129 + /* "_proj.pyx":175 * continue * projxyin.u = xdatab[i] * projxyin.v = ydatab[i] # <<<<<<<<<<<<<< * projlonlatout = pj_inv(projxyin,self.projpj) - * if errcheck and pj_errno != 0: + * if errcheck: */ __pyx_v_projxyin.v = (__pyx_v_ydatab[__pyx_v_i]); - /* "_proj.pyx":130 + /* "_proj.pyx":176 * projxyin.u = xdatab[i] * projxyin.v = ydatab[i] * projlonlatout = pj_inv(projxyin,self.projpj) # <<<<<<<<<<<<<< - * if errcheck and pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) + * if errcheck: + * err = pj_ctx_get_errno(self.projctx) */ __pyx_v_projlonlatout = pj_inv(__pyx_v_projxyin, ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); - /* "_proj.pyx":131 + /* "_proj.pyx":177 * projxyin.v = ydatab[i] * projlonlatout = pj_inv(projxyin,self.projpj) - * if errcheck and pj_errno != 0: # <<<<<<<<<<<<<< - * raise RuntimeError(pj_strerrno(pj_errno)) - * # since HUGE_VAL can be 'inf', + * if errcheck: # <<<<<<<<<<<<<< + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - __pyx_t_1 = (pj_errno != 0); - __pyx_t_6 = __pyx_t_1; - } else { - __pyx_t_6 = __pyx_t_7; - } - if (__pyx_t_6) { - /* "_proj.pyx":132 + /* "_proj.pyx":178 * projlonlatout = pj_inv(projxyin,self.projpj) - * if errcheck and pj_errno != 0: - * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< + * if errcheck: + * err = pj_ctx_get_errno(self.projctx) # <<<<<<<<<<<<<< + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) + */ + __pyx_v_err = pj_ctx_get_errno(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projctx); + + /* "_proj.pyx":179 + * if errcheck: + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: # <<<<<<<<<<<<<< + * raise RuntimeError(pj_strerrno(err)) + * # since HUGE_VAL can be 'inf', + */ + __pyx_t_7 = (__pyx_v_err != 0); + if (__pyx_t_7) { + + /* "_proj.pyx":180 + * err = pj_ctx_get_errno(self.projctx) + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) # <<<<<<<<<<<<<< * # since HUGE_VAL can be 'inf', * # change it to a real (but very large) number. */ - __pyx_t_4 = PyBytes_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(((PyObject *)__pyx_t_3)); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); - __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyBytes_FromString(pj_strerrno(__pyx_v_err)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_4)); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(((PyObject *)__pyx_t_3)); + PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); + __pyx_t_4 = 0; + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L14; + } + __pyx_L14:; goto __pyx_L13; } __pyx_L13:; - /* "_proj.pyx":136 + /* "_proj.pyx":184 * # change it to a real (but very large) number. * # also check for NaNs. * if projlonlatout.u == HUGE_VAL or \ # <<<<<<<<<<<<<< * projlonlatout.u != projlonlatout.u: * if errcheck: */ - __pyx_t_6 = (__pyx_v_projlonlatout.u == HUGE_VAL); - if (!__pyx_t_6) { + __pyx_t_7 = (__pyx_v_projlonlatout.u == HUGE_VAL); + if (!__pyx_t_7) { - /* "_proj.pyx":137 + /* "_proj.pyx":185 * # also check for NaNs. * if projlonlatout.u == HUGE_VAL or \ * projlonlatout.u != projlonlatout.u: # <<<<<<<<<<<<<< * if errcheck: * raise RuntimeError('projection undefined') */ - __pyx_t_7 = (__pyx_v_projlonlatout.u != __pyx_v_projlonlatout.u); - __pyx_t_1 = __pyx_t_7; + __pyx_t_1 = (__pyx_v_projlonlatout.u != __pyx_v_projlonlatout.u); + __pyx_t_6 = __pyx_t_1; } else { - __pyx_t_1 = __pyx_t_6; + __pyx_t_6 = __pyx_t_7; } - if (__pyx_t_1) { + if (__pyx_t_6) { - /* "_proj.pyx":138 + /* "_proj.pyx":186 * if projlonlatout.u == HUGE_VAL or \ * projlonlatout.u != projlonlatout.u: * if errcheck: # <<<<<<<<<<<<<< * raise RuntimeError('projection undefined') * xdatab[i] = 1.e30 */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_1) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_6) { - /* "_proj.pyx":139 + /* "_proj.pyx":187 * projlonlatout.u != projlonlatout.u: * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * xdatab[i] = 1.e30 * elif radians: */ - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L15; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L16; } - __pyx_L15:; + __pyx_L16:; - /* "_proj.pyx":140 + /* "_proj.pyx":188 * if errcheck: * raise RuntimeError('projection undefined') * xdatab[i] = 1.e30 # <<<<<<<<<<<<<< @@ -1848,20 +1884,20 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ * xdatab[i] = projlonlatout.u */ (__pyx_v_xdatab[__pyx_v_i]) = 1.e30; - goto __pyx_L14; + goto __pyx_L15; } - /* "_proj.pyx":141 + /* "_proj.pyx":189 * raise RuntimeError('projection undefined') * xdatab[i] = 1.e30 * elif radians: # <<<<<<<<<<<<<< * xdatab[i] = projlonlatout.u * else: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_1) { + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_6) { - /* "_proj.pyx":142 + /* "_proj.pyx":190 * xdatab[i] = 1.e30 * elif radians: * xdatab[i] = projlonlatout.u # <<<<<<<<<<<<<< @@ -1869,82 +1905,72 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ * xdatab[i] = _rad2dg*projlonlatout.u */ (__pyx_v_xdatab[__pyx_v_i]) = __pyx_v_projlonlatout.u; - goto __pyx_L14; + goto __pyx_L15; } /*else*/ { - /* "_proj.pyx":144 + /* "_proj.pyx":192 * xdatab[i] = projlonlatout.u * else: * xdatab[i] = _rad2dg*projlonlatout.u # <<<<<<<<<<<<<< * if projlonlatout.v == HUGE_VAL or \ * projlonlatout.v != projlonlatout.v: */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_projlonlatout.u); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - (__pyx_v_xdatab[__pyx_v_i]) = __pyx_t_8; + (__pyx_v_xdatab[__pyx_v_i]) = (__pyx_v_5_proj__rad2dg * __pyx_v_projlonlatout.u); } - __pyx_L14:; + __pyx_L15:; - /* "_proj.pyx":145 + /* "_proj.pyx":193 * else: * xdatab[i] = _rad2dg*projlonlatout.u * if projlonlatout.v == HUGE_VAL or \ # <<<<<<<<<<<<<< * projlonlatout.v != projlonlatout.v: * if errcheck: */ - __pyx_t_1 = (__pyx_v_projlonlatout.v == HUGE_VAL); - if (!__pyx_t_1) { + __pyx_t_6 = (__pyx_v_projlonlatout.v == HUGE_VAL); + if (!__pyx_t_6) { - /* "_proj.pyx":146 + /* "_proj.pyx":194 * xdatab[i] = _rad2dg*projlonlatout.u * if projlonlatout.v == HUGE_VAL or \ * projlonlatout.v != projlonlatout.v: # <<<<<<<<<<<<<< * if errcheck: * raise RuntimeError('projection undefined') */ - __pyx_t_6 = (__pyx_v_projlonlatout.v != __pyx_v_projlonlatout.v); - __pyx_t_7 = __pyx_t_6; + __pyx_t_7 = (__pyx_v_projlonlatout.v != __pyx_v_projlonlatout.v); + __pyx_t_1 = __pyx_t_7; } else { - __pyx_t_7 = __pyx_t_1; + __pyx_t_1 = __pyx_t_6; } - if (__pyx_t_7) { + if (__pyx_t_1) { - /* "_proj.pyx":147 + /* "_proj.pyx":195 * if projlonlatout.v == HUGE_VAL or \ * projlonlatout.v != projlonlatout.v: * if errcheck: # <<<<<<<<<<<<<< * raise RuntimeError('projection undefined') * ydatab[i] = 1.e30 */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_errcheck); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_1) { - /* "_proj.pyx":148 + /* "_proj.pyx":196 * projlonlatout.v != projlonlatout.v: * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * ydatab[i] = 1.e30 * elif radians: */ - __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_14), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - goto __pyx_L17; + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_14), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L18; } - __pyx_L17:; + __pyx_L18:; - /* "_proj.pyx":149 + /* "_proj.pyx":197 * if errcheck: * raise RuntimeError('projection undefined') * ydatab[i] = 1.e30 # <<<<<<<<<<<<<< @@ -1952,20 +1978,20 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ * ydatab[i] = projlonlatout.v */ (__pyx_v_ydatab[__pyx_v_i]) = 1.e30; - goto __pyx_L16; + goto __pyx_L17; } - /* "_proj.pyx":150 + /* "_proj.pyx":198 * raise RuntimeError('projection undefined') * ydatab[i] = 1.e30 * elif radians: # <<<<<<<<<<<<<< * ydatab[i] = projlonlatout.v * else: */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__pyx_t_1) { - /* "_proj.pyx":151 + /* "_proj.pyx":199 * ydatab[i] = 1.e30 * elif radians: * ydatab[i] = projlonlatout.v # <<<<<<<<<<<<<< @@ -1973,30 +1999,20 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ * ydatab[i] = _rad2dg*projlonlatout.v */ (__pyx_v_ydatab[__pyx_v_i]) = __pyx_v_projlonlatout.v; - goto __pyx_L16; + goto __pyx_L17; } /*else*/ { - /* "_proj.pyx":153 + /* "_proj.pyx":201 * ydatab[i] = projlonlatout.v * else: * ydatab[i] = _rad2dg*projlonlatout.v # <<<<<<<<<<<<<< * * # def _fwdn(self, c_numpy.ndarray lonlat, radians=False, errcheck=False): */ - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_projlonlatout.v); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - (__pyx_v_ydatab[__pyx_v_i]) = __pyx_t_8; + (__pyx_v_ydatab[__pyx_v_i]) = (__pyx_v_5_proj__rad2dg * __pyx_v_projlonlatout.v); } - __pyx_L16:; + __pyx_L17:; __pyx_L9_continue:; } @@ -2014,7 +2030,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_4_inv(PyObject *__pyx_v_self, PyObject *_ return __pyx_r; } -/* "_proj.pyx":227 +/* "_proj.pyx":280 * # llptr[i].v = _rad2dg*projlonlatout.v * * def is_latlong(self): # <<<<<<<<<<<<<< @@ -2033,7 +2049,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_5is_latlong(PyObject *__pyx_v_self, CYTHO int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_latlong"); - /* "_proj.pyx":230 + /* "_proj.pyx":283 * # returns True if projection in geographic (lon/lat) coordinates * cdef int i * i = pj_is_latlong(self.projpj) # <<<<<<<<<<<<<< @@ -2042,7 +2058,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_5is_latlong(PyObject *__pyx_v_self, CYTHO */ __pyx_v_i = pj_is_latlong(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); - /* "_proj.pyx":231 + /* "_proj.pyx":284 * cdef int i * i = pj_is_latlong(self.projpj) * if i: # <<<<<<<<<<<<<< @@ -2051,7 +2067,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_5is_latlong(PyObject *__pyx_v_self, CYTHO */ if (__pyx_v_i) { - /* "_proj.pyx":232 + /* "_proj.pyx":285 * i = pj_is_latlong(self.projpj) * if i: * return True # <<<<<<<<<<<<<< @@ -2059,7 +2075,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_5is_latlong(PyObject *__pyx_v_self, CYTHO * return False */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -2068,7 +2084,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_5is_latlong(PyObject *__pyx_v_self, CYTHO } /*else*/ { - /* "_proj.pyx":234 + /* "_proj.pyx":287 * return True * else: * return False # <<<<<<<<<<<<<< @@ -2076,7 +2092,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_5is_latlong(PyObject *__pyx_v_self, CYTHO * def is_geocent(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -2096,7 +2112,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_5is_latlong(PyObject *__pyx_v_self, CYTHO return __pyx_r; } -/* "_proj.pyx":236 +/* "_proj.pyx":289 * return False * * def is_geocent(self): # <<<<<<<<<<<<<< @@ -2115,7 +2131,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_6is_geocent(PyObject *__pyx_v_self, CYTHO int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_geocent"); - /* "_proj.pyx":239 + /* "_proj.pyx":292 * # returns True if projection in geocentric (x/y) coordinates * cdef int i * i = pj_is_geocent(self.projpj) # <<<<<<<<<<<<<< @@ -2124,7 +2140,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_6is_geocent(PyObject *__pyx_v_self, CYTHO */ __pyx_v_i = pj_is_geocent(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); - /* "_proj.pyx":240 + /* "_proj.pyx":293 * cdef int i * i = pj_is_geocent(self.projpj) * if i: # <<<<<<<<<<<<<< @@ -2133,7 +2149,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_6is_geocent(PyObject *__pyx_v_self, CYTHO */ if (__pyx_v_i) { - /* "_proj.pyx":241 + /* "_proj.pyx":294 * i = pj_is_geocent(self.projpj) * if i: * return True # <<<<<<<<<<<<<< @@ -2141,7 +2157,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_6is_geocent(PyObject *__pyx_v_self, CYTHO * return False */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -2150,7 +2166,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_6is_geocent(PyObject *__pyx_v_self, CYTHO } /*else*/ { - /* "_proj.pyx":243 + /* "_proj.pyx":296 * return True * else: * return False # <<<<<<<<<<<<<< @@ -2158,7 +2174,7 @@ static PyObject *__pyx_pf_5_proj_4Proj_6is_geocent(PyObject *__pyx_v_self, CYTHO * def _transform(Proj p1, Proj p2, inx, iny, inz, radians): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -2178,9 +2194,9 @@ static PyObject *__pyx_pf_5_proj_4Proj_6is_geocent(PyObject *__pyx_v_self, CYTHO return __pyx_r; } -/* "_proj.pyx":15 - * cdef class Proj: +/* "_proj.pyx":54 * cdef projPJ projpj + * cdef projCtx projctx * cdef public object proj_version # <<<<<<<<<<<<<< * cdef char *pjinitstring * cdef public object srs @@ -2235,7 +2251,7 @@ static int __pyx_pf_5_proj_4Proj_12proj_version_2__del__(PyObject *__pyx_v_self) return __pyx_r; } -/* "_proj.pyx":17 +/* "_proj.pyx":56 * cdef public object proj_version * cdef char *pjinitstring * cdef public object srs # <<<<<<<<<<<<<< @@ -2292,7 +2308,7 @@ static int __pyx_pf_5_proj_4Proj_3srs_2__del__(PyObject *__pyx_v_self) { return __pyx_r; } -/* "_proj.pyx":245 +/* "_proj.pyx":298 * return False * * def _transform(Proj p1, Proj p2, inx, iny, inz, radians): # <<<<<<<<<<<<<< @@ -2320,7 +2336,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p Py_ssize_t __pyx_v_buflenz; Py_ssize_t __pyx_v_npts; Py_ssize_t __pyx_v_i; - int __pyx_v_ierr; + int __pyx_v_err; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -2329,8 +2345,6 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p PyObject *__pyx_t_4 = NULL; int __pyx_t_5; Py_ssize_t __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - double __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -2361,35 +2375,35 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__p2); if (likely(values[1])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inx); if (likely(values[2])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__iny); if (likely(values[3])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inz); if (likely(values[4])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__radians); if (likely(values[5])) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_transform") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "_transform") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 6) { goto __pyx_L5_argtuple_error; @@ -2410,18 +2424,18 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("_transform", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("_proj._transform", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_p1), __pyx_ptype_5_proj_Proj, 1, "p1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_p2), __pyx_ptype_5_proj_Proj, 1, "p2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_p1), __pyx_ptype_5_proj_Proj, 1, "p1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_p2), __pyx_ptype_5_proj_Proj, 1, "p2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "_proj.pyx":250 - * cdef double *xx, *yy, *zz + /* "_proj.pyx":304 * cdef Py_ssize_t buflenx, bufleny, buflenz, npts, i + * cdef int err * if PyObject_AsWriteBuffer(inx, &xdata, &buflenx) <> 0: # <<<<<<<<<<<<<< * raise RuntimeError * if PyObject_AsWriteBuffer(iny, &ydata, &bufleny) <> 0: @@ -2429,20 +2443,20 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_inx, (&__pyx_v_xdata), (&__pyx_v_buflenx)) != 0); if (__pyx_t_1) { - /* "_proj.pyx":251 - * cdef Py_ssize_t buflenx, bufleny, buflenz, npts, i + /* "_proj.pyx":305 + * cdef int err * if PyObject_AsWriteBuffer(inx, &xdata, &buflenx) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< * if PyObject_AsWriteBuffer(iny, &ydata, &bufleny) <> 0: * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } __pyx_L6:; - /* "_proj.pyx":252 + /* "_proj.pyx":306 * if PyObject_AsWriteBuffer(inx, &xdata, &buflenx) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(iny, &ydata, &bufleny) <> 0: # <<<<<<<<<<<<<< @@ -2452,7 +2466,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_iny, (&__pyx_v_ydata), (&__pyx_v_bufleny)) != 0); if (__pyx_t_1) { - /* "_proj.pyx":253 + /* "_proj.pyx":307 * raise RuntimeError * if PyObject_AsWriteBuffer(iny, &ydata, &bufleny) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -2460,12 +2474,12 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p * if PyObject_AsWriteBuffer(inz, &zdata, &buflenz) <> 0: */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L7; } __pyx_L7:; - /* "_proj.pyx":254 + /* "_proj.pyx":308 * if PyObject_AsWriteBuffer(iny, &ydata, &bufleny) <> 0: * raise RuntimeError * if inz is not None: # <<<<<<<<<<<<<< @@ -2475,7 +2489,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_t_1 = (__pyx_v_inz != Py_None); if (__pyx_t_1) { - /* "_proj.pyx":255 + /* "_proj.pyx":309 * raise RuntimeError * if inz is not None: * if PyObject_AsWriteBuffer(inz, &zdata, &buflenz) <> 0: # <<<<<<<<<<<<<< @@ -2485,7 +2499,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_t_1 = (PyObject_AsWriteBuffer(__pyx_v_inz, (&__pyx_v_zdata), (&__pyx_v_buflenz)) != 0); if (__pyx_t_1) { - /* "_proj.pyx":256 + /* "_proj.pyx":310 * if inz is not None: * if PyObject_AsWriteBuffer(inz, &zdata, &buflenz) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -2493,7 +2507,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p * buflenz = bufleny */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L9; } __pyx_L9:; @@ -2501,7 +2515,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p } /*else*/ { - /* "_proj.pyx":258 + /* "_proj.pyx":312 * raise RuntimeError * else: * buflenz = bufleny # <<<<<<<<<<<<<< @@ -2512,7 +2526,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p } __pyx_L8:; - /* "_proj.pyx":259 + /* "_proj.pyx":313 * else: * buflenz = bufleny * if not (buflenx == bufleny == buflenz): # <<<<<<<<<<<<<< @@ -2526,23 +2540,23 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { - /* "_proj.pyx":260 + /* "_proj.pyx":314 * buflenz = bufleny * if not (buflenx == bufleny == buflenz): * raise RuntimeError('x,y and z must be same size') # <<<<<<<<<<<<<< * xx = xdata * yy = ydata */ - __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L10; } __pyx_L10:; - /* "_proj.pyx":261 + /* "_proj.pyx":315 * if not (buflenx == bufleny == buflenz): * raise RuntimeError('x,y and z must be same size') * xx = xdata # <<<<<<<<<<<<<< @@ -2551,7 +2565,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p */ __pyx_v_xx = ((double *)__pyx_v_xdata); - /* "_proj.pyx":262 + /* "_proj.pyx":316 * raise RuntimeError('x,y and z must be same size') * xx = xdata * yy = ydata # <<<<<<<<<<<<<< @@ -2560,7 +2574,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p */ __pyx_v_yy = ((double *)__pyx_v_ydata); - /* "_proj.pyx":263 + /* "_proj.pyx":317 * xx = xdata * yy = ydata * if inz is not None: # <<<<<<<<<<<<<< @@ -2570,7 +2584,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_t_2 = (__pyx_v_inz != Py_None); if (__pyx_t_2) { - /* "_proj.pyx":264 + /* "_proj.pyx":318 * yy = ydata * if inz is not None: * zz = zdata # <<<<<<<<<<<<<< @@ -2582,7 +2596,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p } __pyx_L11:; - /* "_proj.pyx":265 + /* "_proj.pyx":319 * if inz is not None: * zz = zdata * npts = buflenx/8 # <<<<<<<<<<<<<< @@ -2591,22 +2605,22 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p */ __pyx_v_npts = __Pyx_div_Py_ssize_t(__pyx_v_buflenx, 8); - /* "_proj.pyx":266 + /* "_proj.pyx":320 * zz = zdata * npts = buflenx/8 * if not radians and p1.is_latlong(): # <<<<<<<<<<<<<< * for i from 0 <= i < npts: * xx[i] = xx[i]*_dg2rad */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = (!__pyx_t_2); if (__pyx_t_1) { - __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_p1), __pyx_n_s__is_latlong); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_p1), __pyx_n_s__is_latlong); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __pyx_t_2; } else { @@ -2614,7 +2628,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p } if (__pyx_t_5) { - /* "_proj.pyx":267 + /* "_proj.pyx":321 * npts = buflenx/8 * if not radians and p1.is_latlong(): * for i from 0 <= i < npts: # <<<<<<<<<<<<<< @@ -2624,131 +2638,111 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_t_6 = __pyx_v_npts; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) { - /* "_proj.pyx":268 + /* "_proj.pyx":322 * if not radians and p1.is_latlong(): * for i from 0 <= i < npts: * xx[i] = xx[i]*_dg2rad # <<<<<<<<<<<<<< * yy[i] = yy[i]*_dg2rad * if inz is not None: */ - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_xx[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - (__pyx_v_xx[__pyx_v_i]) = __pyx_t_8; + (__pyx_v_xx[__pyx_v_i]) = ((__pyx_v_xx[__pyx_v_i]) * __pyx_v_5_proj__dg2rad); - /* "_proj.pyx":269 + /* "_proj.pyx":323 * for i from 0 <= i < npts: * xx[i] = xx[i]*_dg2rad * yy[i] = yy[i]*_dg2rad # <<<<<<<<<<<<<< * if inz is not None: - * ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) + * err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) */ - __pyx_t_7 = PyFloat_FromDouble((__pyx_v_yy[__pyx_v_i])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s___dg2rad); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - (__pyx_v_yy[__pyx_v_i]) = __pyx_t_8; + (__pyx_v_yy[__pyx_v_i]) = ((__pyx_v_yy[__pyx_v_i]) * __pyx_v_5_proj__dg2rad); } goto __pyx_L12; } __pyx_L12:; - /* "_proj.pyx":270 + /* "_proj.pyx":324 * xx[i] = xx[i]*_dg2rad * yy[i] = yy[i]*_dg2rad * if inz is not None: # <<<<<<<<<<<<<< - * ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) + * err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) * else: */ __pyx_t_5 = (__pyx_v_inz != Py_None); if (__pyx_t_5) { - /* "_proj.pyx":271 + /* "_proj.pyx":325 * yy[i] = yy[i]*_dg2rad * if inz is not None: - * ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) # <<<<<<<<<<<<<< + * err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) # <<<<<<<<<<<<<< * else: - * ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) + * err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) */ - __pyx_v_ierr = pj_transform(__pyx_v_p1->projpj, __pyx_v_p2->projpj, __pyx_v_npts, 0, __pyx_v_xx, __pyx_v_yy, __pyx_v_zz); + __pyx_v_err = pj_transform(__pyx_v_p1->projpj, __pyx_v_p2->projpj, __pyx_v_npts, 0, __pyx_v_xx, __pyx_v_yy, __pyx_v_zz); goto __pyx_L15; } /*else*/ { - /* "_proj.pyx":273 - * ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) + /* "_proj.pyx":327 + * err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) * else: - * ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) # <<<<<<<<<<<<<< - * if ierr != 0: - * raise RuntimeError(pj_strerrno(ierr)) + * err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) # <<<<<<<<<<<<<< + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) */ - __pyx_v_ierr = pj_transform(__pyx_v_p1->projpj, __pyx_v_p2->projpj, __pyx_v_npts, 0, __pyx_v_xx, __pyx_v_yy, NULL); + __pyx_v_err = pj_transform(__pyx_v_p1->projpj, __pyx_v_p2->projpj, __pyx_v_npts, 0, __pyx_v_xx, __pyx_v_yy, NULL); } __pyx_L15:; - /* "_proj.pyx":274 + /* "_proj.pyx":328 * else: - * ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) - * if ierr != 0: # <<<<<<<<<<<<<< - * raise RuntimeError(pj_strerrno(ierr)) + * err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) + * if err != 0: # <<<<<<<<<<<<<< + * raise RuntimeError(pj_strerrno(err)) * if not radians and p2.is_latlong(): */ - __pyx_t_5 = (__pyx_v_ierr != 0); + __pyx_t_5 = (__pyx_v_err != 0); if (__pyx_t_5) { - /* "_proj.pyx":275 - * ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) - * if ierr != 0: - * raise RuntimeError(pj_strerrno(ierr)) # <<<<<<<<<<<<<< + /* "_proj.pyx":329 + * err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) # <<<<<<<<<<<<<< * if not radians and p2.is_latlong(): * for i from 0 <= i < npts: */ - __pyx_t_4 = PyBytes_FromString(pj_strerrno(__pyx_v_ierr)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyBytes_FromString(pj_strerrno(__pyx_v_err)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; - __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L16; } __pyx_L16:; - /* "_proj.pyx":276 - * if ierr != 0: - * raise RuntimeError(pj_strerrno(ierr)) + /* "_proj.pyx":330 + * if err != 0: + * raise RuntimeError(pj_strerrno(err)) * if not radians and p2.is_latlong(): # <<<<<<<<<<<<<< * for i from 0 <= i < npts: * xx[i] = xx[i]*_rad2dg */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = (!__pyx_t_5); if (__pyx_t_1) { - __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_p2), __pyx_n_s__is_latlong); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_p2), __pyx_n_s__is_latlong); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_5; } else { @@ -2756,8 +2750,8 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p } if (__pyx_t_2) { - /* "_proj.pyx":277 - * raise RuntimeError(pj_strerrno(ierr)) + /* "_proj.pyx":331 + * raise RuntimeError(pj_strerrno(err)) * if not radians and p2.is_latlong(): * for i from 0 <= i < npts: # <<<<<<<<<<<<<< * xx[i] = xx[i]*_rad2dg @@ -2766,43 +2760,23 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_t_6 = __pyx_v_npts; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) { - /* "_proj.pyx":278 + /* "_proj.pyx":332 * if not radians and p2.is_latlong(): * for i from 0 <= i < npts: * xx[i] = xx[i]*_rad2dg # <<<<<<<<<<<<<< * yy[i] = yy[i]*_rad2dg * */ - __pyx_t_3 = PyFloat_FromDouble((__pyx_v_xx[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - (__pyx_v_xx[__pyx_v_i]) = __pyx_t_8; + (__pyx_v_xx[__pyx_v_i]) = ((__pyx_v_xx[__pyx_v_i]) * __pyx_v_5_proj__rad2dg); - /* "_proj.pyx":279 + /* "_proj.pyx":333 * for i from 0 <= i < npts: * xx[i] = xx[i]*_rad2dg * yy[i] = yy[i]*_rad2dg # <<<<<<<<<<<<<< * * cdef _strencode(pystr,encoding='ascii'): */ - __pyx_t_7 = PyFloat_FromDouble((__pyx_v_yy[__pyx_v_i])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___rad2dg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - (__pyx_v_yy[__pyx_v_i]) = __pyx_t_8; + (__pyx_v_yy[__pyx_v_i]) = ((__pyx_v_yy[__pyx_v_i]) * __pyx_v_5_proj__rad2dg); } goto __pyx_L17; } @@ -2813,7 +2787,6 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("_proj._transform", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -2822,7 +2795,7 @@ static PyObject *__pyx_pf_5_proj_1_transform(PyObject *__pyx_self, PyObject *__p return __pyx_r; } -/* "_proj.pyx":281 +/* "_proj.pyx":335 * yy[i] = yy[i]*_rad2dg * * cdef _strencode(pystr,encoding='ascii'): # <<<<<<<<<<<<<< @@ -2851,7 +2824,7 @@ static PyObject *__pyx_f_5_proj__strencode(PyObject *__pyx_v_pystr, struct __pyx } } - /* "_proj.pyx":283 + /* "_proj.pyx":337 * cdef _strencode(pystr,encoding='ascii'): * # encode a string into bytes. If already bytes, do nothing. * try: # <<<<<<<<<<<<<< @@ -2865,7 +2838,7 @@ static PyObject *__pyx_f_5_proj__strencode(PyObject *__pyx_v_pystr, struct __pyx __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "_proj.pyx":284 + /* "_proj.pyx":338 * # encode a string into bytes. If already bytes, do nothing. * try: * return pystr.encode(encoding) # <<<<<<<<<<<<<< @@ -2873,14 +2846,14 @@ static PyObject *__pyx_f_5_proj__strencode(PyObject *__pyx_v_pystr, struct __pyx * return pystr # already bytes? */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = PyObject_GetAttr(__pyx_v_pystr, __pyx_n_s__encode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_4 = PyObject_GetAttr(__pyx_v_pystr, __pyx_n_s__encode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_5)); __Pyx_INCREF(__pyx_v_encoding); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_encoding); __Pyx_GIVEREF(__pyx_v_encoding); - __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; @@ -2903,7 +2876,7 @@ static PyObject *__pyx_f_5_proj__strencode(PyObject *__pyx_v_pystr, struct __pyx __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "_proj.pyx":285 + /* "_proj.pyx":339 * try: * return pystr.encode(encoding) * except AttributeError: # <<<<<<<<<<<<<< @@ -2912,12 +2885,12 @@ static PyObject *__pyx_f_5_proj__strencode(PyObject *__pyx_v_pystr, struct __pyx __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError); if (__pyx_t_7) { __Pyx_AddTraceback("_proj._strencode", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4); - /* "_proj.pyx":286 + /* "_proj.pyx":340 * return pystr.encode(encoding) * except AttributeError: * return pystr # already bytes? # <<<<<<<<<<<<<< @@ -3245,10 +3218,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, {&__pyx_n_s____version__, __pyx_k____version__, sizeof(__pyx_k____version__), 0, 0, 1, 1}, - {&__pyx_n_s___dg2rad, __pyx_k___dg2rad, sizeof(__pyx_k___dg2rad), 0, 0, 1, 1}, {&__pyx_n_s___doublesize, __pyx_k___doublesize, sizeof(__pyx_k___doublesize), 0, 0, 1, 1}, {&__pyx_n_s___proj, __pyx_k___proj, sizeof(__pyx_k___proj), 0, 0, 1, 1}, - {&__pyx_n_s___rad2dg, __pyx_k___rad2dg, sizeof(__pyx_k___rad2dg), 0, 0, 1, 1}, {&__pyx_n_s___transform, __pyx_k___transform, sizeof(__pyx_k___transform), 0, 0, 1, 1}, {&__pyx_n_s__ascii, __pyx_k__ascii, sizeof(__pyx_k__ascii), 0, 0, 1, 1}, {&__pyx_n_s__degrees, __pyx_k__degrees, sizeof(__pyx_k__degrees), 0, 0, 1, 1}, @@ -3271,8 +3242,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_AttributeError = __Pyx_GetName(__pyx_b, __pyx_n_s__AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_AttributeError = __Pyx_GetName(__pyx_b, __pyx_n_s__AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; @@ -3282,126 +3253,126 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants"); - /* "_proj.pyx":58 + /* "_proj.pyx":102 * # process data in buffer * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenx//_doublesize * lonsdata = londata */ - __pyx_k_tuple_4 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_4 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_4)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_3)); PyTuple_SET_ITEM(__pyx_k_tuple_4, 0, ((PyObject *)__pyx_kp_s_3)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4)); - /* "_proj.pyx":67 + /* "_proj.pyx":111 * lonsdata[i]=1.e30; latsdata[i]=1.e30 * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * continue * if radians: */ - __pyx_k_tuple_6 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_6 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_6)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_5)); PyTuple_SET_ITEM(__pyx_k_tuple_6, 0, ((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6)); - /* "_proj.pyx":84 + /* "_proj.pyx":130 * projxyout.u != projxyout.u: * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * lonsdata[i] = 1.e30 * else: */ - __pyx_k_tuple_7 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_7 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_7)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_5)); PyTuple_SET_ITEM(__pyx_k_tuple_7, 0, ((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7)); - /* "_proj.pyx":91 + /* "_proj.pyx":137 * projxyout.u != projxyout.u: * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * latsdata[i] = 1.e30 * else: */ - __pyx_k_tuple_8 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_8 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_8)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_5)); PyTuple_SET_ITEM(__pyx_k_tuple_8, 0, ((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8)); - /* "_proj.pyx":117 + /* "_proj.pyx":163 * # (for numpy/regular python arrays). * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenx//_doublesize * xdatab = xdata */ - __pyx_k_tuple_11 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_11 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_11)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_3)); PyTuple_SET_ITEM(__pyx_k_tuple_11, 0, ((PyObject *)__pyx_kp_s_3)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11)); - /* "_proj.pyx":126 + /* "_proj.pyx":172 * xdatab[i]=1.e30; ydatab[i]=1.e30 * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * continue * projxyin.u = xdatab[i] */ - __pyx_k_tuple_12 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_12 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_12)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_5)); PyTuple_SET_ITEM(__pyx_k_tuple_12, 0, ((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12)); - /* "_proj.pyx":139 + /* "_proj.pyx":187 * projlonlatout.u != projlonlatout.u: * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * xdatab[i] = 1.e30 * elif radians: */ - __pyx_k_tuple_13 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_13 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_13)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_5)); PyTuple_SET_ITEM(__pyx_k_tuple_13, 0, ((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13)); - /* "_proj.pyx":148 + /* "_proj.pyx":196 * projlonlatout.v != projlonlatout.v: * if errcheck: * raise RuntimeError('projection undefined') # <<<<<<<<<<<<<< * ydatab[i] = 1.e30 * elif radians: */ - __pyx_k_tuple_14 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_14 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_14)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_5)); PyTuple_SET_ITEM(__pyx_k_tuple_14, 0, ((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14)); - /* "_proj.pyx":260 + /* "_proj.pyx":314 * buflenz = bufleny * if not (buflenx == bufleny == buflenz): * raise RuntimeError('x,y and z must be same size') # <<<<<<<<<<<<<< * xx = xdata * yy = ydata */ - __pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_16)); __Pyx_INCREF(((PyObject *)__pyx_kp_s_15)); PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, ((PyObject *)__pyx_kp_s_15)); @@ -3432,6 +3403,7 @@ PyMODINIT_FUNC PyInit__proj(void) PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; + double __pyx_t_4; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -3482,161 +3454,165 @@ PyMODINIT_FUNC PyInit__proj(void) /*--- Variable export code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ - if (PyType_Ready(&__pyx_type_5_proj_Proj) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_SetAttrString(__pyx_m, "Proj", (PyObject *)&__pyx_type_5_proj_Proj) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type_5_proj_Proj) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetAttrString(__pyx_m, "Proj", (PyObject *)&__pyx_type_5_proj_Proj) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_5_proj_Proj = &__pyx_type_5_proj_Proj; /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":1 + /* "_proj.pyx":4 + * #c_numpy.import_array() + * * import math # <<<<<<<<<<<<<< * - * _dg2rad = math.radians(1.) + * cdef double _dg2rad, _rad2dg */ - __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__math), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__math), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__math, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s__math, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":3 - * import math + /* "_proj.pyx":8 + * cdef double _dg2rad, _rad2dg * * _dg2rad = math.radians(1.) # <<<<<<<<<<<<<< * _rad2dg = math.degrees(1.) * _doublesize = sizeof(double) */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__math); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__math); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__radians); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__radians); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; - if (PyObject_SetAttr(__pyx_m, __pyx_n_s___dg2rad, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_5_proj__dg2rad = __pyx_t_4; - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":4 + /* "_proj.pyx":9 * * _dg2rad = math.radians(1.) * _rad2dg = math.degrees(1.) # <<<<<<<<<<<<<< * _doublesize = sizeof(double) - * __version__ = "1.8.9" + * __version__ = "1.9.0" */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__math); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__math); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__degrees); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__degrees); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(1.); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - if (PyObject_SetAttr(__pyx_m, __pyx_n_s___rad2dg, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_5_proj__rad2dg = __pyx_t_4; - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":5 + /* "_proj.pyx":10 * _dg2rad = math.radians(1.) * _rad2dg = math.degrees(1.) * _doublesize = sizeof(double) # <<<<<<<<<<<<<< - * __version__ = "1.8.9" + * __version__ = "1.9.0" * */ - __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(double))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(double))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s___doublesize, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s___doublesize, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "/Users/jwhitaker/python/basemap/src/_pyproj.pxi":6 + /* "_proj.pyx":11 * _rad2dg = math.degrees(1.) * _doublesize = sizeof(double) - * __version__ = "1.8.9" # <<<<<<<<<<<<<< + * __version__ = "1.9.0" # <<<<<<<<<<<<<< * - * cdef extern from "stdlib.h": + * cdef extern from "math.h": */ - if (PyObject_SetAttr(__pyx_m, __pyx_n_s____version__, ((PyObject *)__pyx_kp_s_17)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s____version__, ((PyObject *)__pyx_kp_s_17)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "_proj.pyx":7 - * #c_numpy.import_array() + /* "_proj.pyx":45 + * int PyObject_AsWriteBuffer(object, void **rbuf, Py_ssize_t *len) * * def set_datapath(datapath): # <<<<<<<<<<<<<< * cdef char *searchpath * bytestr = _strencode(datapath) */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5_proj_set_datapath, NULL, __pyx_n_s___proj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5_proj_set_datapath, NULL, __pyx_n_s___proj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_datapath, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_datapath, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "_proj.pyx":38 + /* "_proj.pyx":81 * return (self.__class__,(self.srs,)) * * def _fwd(self, object lons, object lats, radians=False, errcheck=False): # <<<<<<<<<<<<<< * """ * forward transformation - lons,lats to x,y (done in place). */ - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_k_1 = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_k_2 = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - /* "_proj.pyx":96 + /* "_proj.pyx":142 * latsdata[i] = projxyout.v * * def _inv(self, object x, object y, radians=False, errcheck=False): # <<<<<<<<<<<<<< * """ * inverse transformation - x,y to lons,lats (done in place). */ - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_k_9 = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_k_10 = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - /* "_proj.pyx":245 + /* "_proj.pyx":298 * return False * * def _transform(Proj p1, Proj p2, inx, iny, inz, radians): # <<<<<<<<<<<<<< * # private function to call pj_transform * cdef void *xdata, *ydata, *zdata */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5_proj_1_transform, NULL, __pyx_n_s___proj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5_proj_1_transform, NULL, __pyx_n_s___proj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s___transform, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttr(__pyx_m, __pyx_n_s___transform, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_proj.pyx":1 - * # Make changes to this file, not the c-wrappers that Pyrex generates. # <<<<<<<<<<<<<< + * #cimport c_numpy # <<<<<<<<<<<<<< + * #c_numpy.import_array() * - * include "_pyproj.pxi" */ __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); diff --git a/src/_proj.pyx b/src/_proj.pyx index c21270b3f..baecb4809 100644 --- a/src/_proj.pyx +++ b/src/_proj.pyx @@ -1,35 +1,78 @@ -# Make changes to this file, not the c-wrappers that Pyrex generates. - -include "_pyproj.pxi" #cimport c_numpy #c_numpy.import_array() +import math + +cdef double _dg2rad, _rad2dg + +_dg2rad = math.radians(1.) +_rad2dg = math.degrees(1.) +_doublesize = sizeof(double) +__version__ = "1.9.0" + +cdef extern from "math.h": + cdef enum: + HUGE_VAL + FP_NAN + +cdef extern from "proj_api.h": + ctypedef struct projUV: + double u + double v + ctypedef void *projPJ + ctypedef void *projCtx + projPJ pj_init_plus(char *) + projPJ pj_init_plus_ctx(projCtx, char *) + projUV pj_fwd(projUV, projPJ) + projUV pj_inv(projUV, projPJ) + int pj_transform(projPJ src, projPJ dst, long point_count, int point_offset, + double *x, double *y, double *z) + int pj_is_latlong(projPJ) + int pj_is_geocent(projPJ) + char *pj_strerrno(int) + void pj_ctx_free( projCtx ) + int pj_ctx_get_errno( projCtx ) + projCtx pj_ctx_alloc() + projCtx pj_get_default_ctx() + void pj_free(projPJ) + void pj_set_searchpath ( int count, char **path ) + cdef enum: + PJ_VERSION + +cdef extern from "Python.h": + int PyObject_AsWriteBuffer(object, void **rbuf, Py_ssize_t *len) + def set_datapath(datapath): cdef char *searchpath bytestr = _strencode(datapath) searchpath = bytestr pj_set_searchpath(1, &searchpath) - + cdef class Proj: cdef projPJ projpj + cdef projCtx projctx cdef public object proj_version cdef char *pjinitstring cdef public object srs def __cinit__(self, projstring): # setup proj initialization string. + cdef int err self.srs = projstring bytestr = _strencode(projstring) self.pjinitstring = bytestr # initialize projection - self.projpj = pj_init_plus(self.pjinitstring) - if pj_errno != 0: - raise RuntimeError(pj_strerrno(pj_errno)) + self.projctx = pj_ctx_alloc() + self.projpj = pj_init_plus_ctx(self.projctx, self.pjinitstring) + err = pj_ctx_get_errno(self.projctx) + if err != 0: + raise RuntimeError(pj_strerrno(err)) self.proj_version = PJ_VERSION/100. def __dealloc__(self): """destroy projection definition""" pj_free(self.projpj) + pj_ctx_free(self.projctx) def __reduce__(self): """special method that allows pyproj.Proj instance to be pickled""" @@ -48,6 +91,7 @@ cdef class Proj: cdef double u, v cdef double *lonsdata, *latsdata cdef void *londata, *latdata + cdef int err # if buffer api is supported, get pointer to data buffers. if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: raise RuntimeError @@ -73,8 +117,10 @@ cdef class Proj: projlonlatin.u = _dg2rad*lonsdata[i] projlonlatin.v = _dg2rad*latsdata[i] projxyout = pj_fwd(projlonlatin,self.projpj) - if errcheck and pj_errno != 0: - raise RuntimeError(pj_strerrno(pj_errno)) + if errcheck: + err = pj_ctx_get_errno(self.projctx) + if err != 0: + raise RuntimeError(pj_strerrno(err)) # since HUGE_VAL can be 'inf', # change it to a real (but very large) number. # also check for NaNs. @@ -128,8 +174,10 @@ cdef class Proj: projxyin.u = xdatab[i] projxyin.v = ydatab[i] projlonlatout = pj_inv(projxyin,self.projpj) - if errcheck and pj_errno != 0: - raise RuntimeError(pj_strerrno(pj_errno)) + if errcheck: + err = pj_ctx_get_errno(self.projctx) + if err != 0: + raise RuntimeError(pj_strerrno(err)) # since HUGE_VAL can be 'inf', # change it to a real (but very large) number. # also check for NaNs. @@ -165,6 +213,7 @@ cdef class Proj: # """ # cdef projUV projxyout, projlonlatin # cdef projUV *llptr +# cdef int err # cdef Py_ssize_t npts, i # npts = c_numpy.PyArray_SIZE(lonlat)//2 # llptr = lonlat.data @@ -176,8 +225,10 @@ cdef class Proj: # projlonlatin.v = _dg2rad*llptr[i].v # projxyout = pj_fwd(projlonlatin,self.projpj) -# if errcheck and pj_errno != 0: -# raise RuntimeError(pj_strerrno(pj_errno)) +# if errcheck: +# err = pj_ctx_get_errno(self.projctx) +# if err != 0: +# raise RuntimeError(pj_strerrno(err)) # # since HUGE_VAL can be 'inf', # # change it to a real (but very large) number. # if projxyout.u == HUGE_VAL: @@ -207,8 +258,10 @@ cdef class Proj: # for i from 0 <= i < npts: # projxyin = llptr[i] # projlonlatout = pj_inv(projxyin, self.projpj) -# if errcheck and pj_errno != 0: -# raise RuntimeError(pj_strerrno(pj_errno)) +# if errcheck: +# err = pj_ctx_get_errno(self.projctx) +# if err != 0: +# raise RuntimeError(pj_strerrno(err)) # # since HUGE_VAL can be 'inf', # # change it to a real (but very large) number. # if projlonlatout.u == HUGE_VAL: @@ -247,6 +300,7 @@ def _transform(Proj p1, Proj p2, inx, iny, inz, radians): cdef void *xdata, *ydata, *zdata cdef double *xx, *yy, *zz cdef Py_ssize_t buflenx, bufleny, buflenz, npts, i + cdef int err if PyObject_AsWriteBuffer(inx, &xdata, &buflenx) <> 0: raise RuntimeError if PyObject_AsWriteBuffer(iny, &ydata, &bufleny) <> 0: @@ -268,11 +322,11 @@ def _transform(Proj p1, Proj p2, inx, iny, inz, radians): xx[i] = xx[i]*_dg2rad yy[i] = yy[i]*_dg2rad if inz is not None: - ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) + err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, zz) else: - ierr = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) - if ierr != 0: - raise RuntimeError(pj_strerrno(ierr)) + err = pj_transform(p1.projpj, p2.projpj, npts, 0, xx, yy, NULL) + if err != 0: + raise RuntimeError(pj_strerrno(err)) if not radians and p2.is_latlong(): for i from 0 <= i < npts: xx[i] = xx[i]*_rad2dg diff --git a/src/_pyproj.pxi b/src/_pyproj.pxi deleted file mode 100644 index 0a3ca11bf..000000000 --- a/src/_pyproj.pxi +++ /dev/null @@ -1,59 +0,0 @@ -import math - -_dg2rad = math.radians(1.) -_rad2dg = math.degrees(1.) -_doublesize = sizeof(double) -__version__ = "1.8.9" - -cdef extern from "stdlib.h": - ctypedef long size_t - void *malloc(size_t size) - void free(void *ptr) - -cdef extern from "math.h": - cdef enum: - HUGE_VAL - FP_NAN - -cdef extern from "geodesic.h": - ctypedef struct projUV: - double u - double v - ctypedef struct GEODESIC_T: - double A - projUV p1, p2 - double ALPHA12 - double ALPHA21 - double DIST - double ONEF, FLAT, FLAT2, FLAT4, FLAT64 - int ELLIPSE - double FR_METER, TO_METER, del_alpha - int n_alpha, n_S - double th1,costh1,sinth1,sina12,cosa12,M,N,c1,c2,D,P,s1 - int merid, signS - GEODESIC_T *GEOD_init_plus(char *args, GEODESIC_T *g) - void geod_for(GEODESIC_T *g) - void geod_pre(GEODESIC_T *g) - int geod_inv(GEODESIC_T *g) - -cdef extern from "proj_api.h": - ctypedef double *projPJ - projPJ pj_init_plus(char *) - projUV pj_fwd(projUV, projPJ) - projUV pj_inv(projUV, projPJ) - int pj_transform(projPJ src, projPJ dst, long point_count, int point_offset, - double *x, double *y, double *z) - int pj_is_latlong(projPJ) - int pj_is_geocent(projPJ) - char *pj_strerrno(int) - void pj_free(projPJ) - void pj_set_searchpath ( int count, char **path ) - cdef extern int pj_errno - cdef enum: - PJ_VERSION - -#cdef extern from "pycompat.h": -# ctypedef int Py_ssize_t - -cdef extern from "Python.h": - int PyObject_AsWriteBuffer(object, void **rbuf, Py_ssize_t *len) diff --git a/src/aasincos.c b/src/aasincos.c index 460590e44..6f39478e7 100644 --- a/src/aasincos.c +++ b/src/aasincos.c @@ -3,24 +3,26 @@ #define ONE_TOL 1.00000000000001 #define TOL 0.000000001 #define ATOL 1e-50 + double -aasin(double v) { +aasin(projCtx ctx,double v) { double av; - + if ((av = fabs(v)) >= 1.) { if (av > ONE_TOL) - pj_errno = -19; + pj_ctx_set_errno( ctx, -19 ); return (v < 0. ? -HALFPI : HALFPI); } return asin(v); } + double -aacos(double v) { +aacos(projCtx ctx, double v) { double av; if ((av = fabs(v)) >= 1.) { if (av > ONE_TOL) - pj_errno = -19; + pj_ctx_set_errno( ctx, -19 ); return (v < 0. ? PI : 0.); } return acos(v); diff --git a/src/biveval.c b/src/biveval.c index 40f2af41b..59021ee57 100644 --- a/src/biveval.c +++ b/src/biveval.c @@ -2,75 +2,77 @@ # include # define NEAR_ONE 1.00001 static double ceval(struct PW_COEF *C, int n, projUV w, projUV w2) { - double d=0, dd=0, vd, vdd, tmp, *c; - int j; + double d=0, dd=0, vd, vdd, tmp, *c; + int j; - for (C += n ; n-- ; --C ) { - if (j = C->m) { - vd = vdd = 0.; - for (c = C->c + --j; j ; --j ) { - vd = w2.v * (tmp = vd) - vdd + *c--; - vdd = tmp; - } - d = w2.u * (tmp = d) - dd + w.v * vd - vdd + 0.5 * *c; - } else - d = w2.u * (tmp = d) - dd; - dd = tmp; - } - if (j = C->m) { - vd = vdd = 0.; - for (c = C->c + --j; j ; --j ) { - vd = w2.v * (tmp = vd) - vdd + *c--; - vdd = tmp; - } - return (w.u * d - dd + 0.5 * ( w.v * vd - vdd + 0.5 * *c )); - } else - return (w.u * d - dd); + for (C += n ; n-- ; --C ) { + if ( (j = C->m) != 0) { + vd = vdd = 0.; + for (c = C->c + --j; j ; --j ) { + vd = w2.v * (tmp = vd) - vdd + *c--; + vdd = tmp; + } + d = w2.u * (tmp = d) - dd + w.v * vd - vdd + 0.5 * *c; + } else + d = w2.u * (tmp = d) - dd; + dd = tmp; + } + if ( (j = C->m) != 0 ) { + vd = vdd = 0.; + for (c = C->c + --j; j ; --j ) { + vd = w2.v * (tmp = vd) - vdd + *c--; + vdd = tmp; + } + return (w.u * d - dd + 0.5 * ( w.v * vd - vdd + 0.5 * *c )); + } else + return (w.u * d - dd); } - projUV /* bivariate Chebyshev polynomial entry point */ + +projUV /* bivariate Chebyshev polynomial entry point */ bcheval(projUV in, Tseries *T) { - projUV w2, w; - projUV out; - /* scale to +-1 */ - w.u = ( in.u + in.u - T->a.u ) * T->b.u; - w.v = ( in.v + in.v - T->a.v ) * T->b.v; - if (fabs(w.u) > NEAR_ONE || fabs(w.v) > NEAR_ONE) { - out.u = out.v = HUGE_VAL; - pj_errno = -36; - } else { /* double evaluation */ - w2.u = w.u + w.u; - w2.v = w.v + w.v; - out.u = ceval(T->cu, T->mu, w, w2); - out.v = ceval(T->cv, T->mv, w, w2); - } - return out; + projUV w2, w; + projUV out; + /* scale to +-1 */ + w.u = ( in.u + in.u - T->a.u ) * T->b.u; + w.v = ( in.v + in.v - T->a.v ) * T->b.v; + if (fabs(w.u) > NEAR_ONE || fabs(w.v) > NEAR_ONE) { + out.u = out.v = HUGE_VAL; + pj_errno = -36; + } else { /* double evaluation */ + w2.u = w.u + w.u; + w2.v = w.v + w.v; + out.u = ceval(T->cu, T->mu, w, w2); + out.v = ceval(T->cv, T->mv, w, w2); + } + return out; } - projUV /* bivariate power polynomial entry point */ + +projUV /* bivariate power polynomial entry point */ bpseval(projUV in, Tseries *T) { - projUV out; - double *c, row; - int i, m; + projUV out; + double *c, row; + int i, m; - out.u = out.v = 0.; - for (i = T->mu; i >= 0; --i) { - row = 0.; - if (m = T->cu[i].m) { - c = T->cu[i].c + m; - while (m--) - row = *--c + in.v * row; - } - out.u = row + in.u * out.u; - } - for (i = T->mv; i >= 0; --i) { - row = 0.; - if (m = T->cv[i].m) { - c = T->cv[i].c + m; - while (m--) - row = *--c + in.v * row; - } - out.v = row + in.u * out.v; - } - return out; + out.u = out.v = 0.; + for (i = T->mu; i >= 0; --i) { + row = 0.; + if ((m = T->cu[i].m) != 0) { + c = T->cu[i].c + m; + while (m--) + row = *--c + in.v * row; + } + out.u = row + in.u * out.u; + } + for (i = T->mv; i >= 0; --i) { + row = 0.; + if ((m = T->cv[i].m) != 0) { + c = T->cv[i].c + m; + while (m--) + row = *--c + in.v * row; + } + out.v = row + in.u * out.v; + } + return out; } projUV /* general entry point selecting evaluation mode */ diff --git a/src/dmstor.c b/src/dmstor.c index 1cc99f627..f1da53793 100644 --- a/src/dmstor.c +++ b/src/dmstor.c @@ -17,6 +17,11 @@ vm[] = { }; double dmstor(const char *is, char **rs) { + return dmstor_ctx( pj_get_default_ctx(), is, rs ); +} + + double +dmstor_ctx(projCtx ctx, const char *is, char **rs) { int sign, n, nl; char *p, *s, work[MAX_WORK]; double v, tv; @@ -46,7 +51,7 @@ dmstor(const char *is, char **rs) { n = 2; break; case 'r': case 'R': if (nl) { - pj_errno = -16; + pj_ctx_set_errno( ctx, -16 ); return HUGE_VAL; } ++s; @@ -58,7 +63,7 @@ dmstor(const char *is, char **rs) { continue; } if (n < nl) { - pj_errno = -16; + pj_ctx_set_errno( ctx, -16 ); return HUGE_VAL; } v += tv * vm[n]; diff --git a/src/emess.h b/src/emess.h index 6724a0652..4106e11da 100644 --- a/src/emess.h +++ b/src/emess.h @@ -2,10 +2,6 @@ #ifndef EMESS_H #define EMESS_H -#ifndef lint -static char EMESS_H_ID[] = "@(#)emess.h 4.1 93/03/08 GIE REL"; -#endif - struct EMESS { char *File_name, /* input file name */ *Prog_name; /* name of program */ diff --git a/src/geod.c b/src/geod.c deleted file mode 100644 index 2bdb803f7..000000000 --- a/src/geod.c +++ /dev/null @@ -1,245 +0,0 @@ -/* <<<< Geodesic filter program >>>> */ -# include "projects.h" -# include "geodesic.h" -# include "emess.h" -# include -# include -# include - -# define MAXLINE 200 -# define MAX_PARGS 50 -# define TAB putchar('\t') - static int -fullout = 0, /* output full set of geodesic values */ -tag = '#', /* beginning of line tag character */ -pos_azi = 0, /* output azimuths as positive values */ -inverse = 0; /* != 0 then inverse geodesic */ - static char -*oform = (char *)0, /* output format for decimal degrees */ -*osform = "%.3f", /* output format for S */ -pline[50], /* work string */ -*usage = -"%s\nusage: %s [ -afFIptTwW [args] ] [ +opts[=arg] ] [ files ]\n"; - - -static GEODESIC_T Geodesic; -static GEODESIC_T *GEODESIC = &Geodesic; - -static void -printLL(double p, double l) { - if (oform) { - (void)printf(oform, p * RAD_TO_DEG); TAB; - (void)printf(oform, l * RAD_TO_DEG); - } else { - (void)fputs(rtodms(pline, p, 'N', 'S'),stdout); TAB; - (void)fputs(rtodms(pline, l, 'E', 'W'),stdout); - } -} - - -static void -do_arc(void) { - double az; - - printLL(GEODESIC->p2.u, GEODESIC->p2.v); putchar('\n'); - for (az = GEODESIC->ALPHA12; GEODESIC->n_alpha--; ) { - GEODESIC->ALPHA12 = az = adjlon(az + GEODESIC->del_alpha); - geod_pre(GEODESIC); - geod_for(GEODESIC); - printLL(GEODESIC->p2.u, GEODESIC->p2.v); putchar('\n'); - } -} - -static void /* generate intermediate geodesic coordinates */ -do_geod(void) { - double phil, laml, del_S; - - phil = GEODESIC->p2.u; - laml = GEODESIC->p2.v; - printLL(GEODESIC->p1.u, GEODESIC->p1.v); putchar('\n'); - for ( GEODESIC->DIST = del_S = GEODESIC->DIST / GEODESIC->n_S; --(GEODESIC->n_S); GEODESIC->DIST += del_S) { - geod_for(GEODESIC); - printLL(GEODESIC->p2.u, GEODESIC->p2.v); putchar('\n'); - } - printLL(phil, laml); putchar('\n'); -} - void static /* file processing function */ -process(FILE *fid) { - char line[MAXLINE+3], *s; - - for (;;) { - ++emess_dat.File_line; - if (!(s = fgets(line, MAXLINE, fid))) - break; - if (!strchr(s, '\n')) { /* overlong line */ - int c; - strcat(s, "\n"); - /* gobble up to newline */ - while ((c = fgetc(fid)) != EOF && c != '\n') ; - } - if (*s == tag) { - fputs(line, stdout); - continue; - } - GEODESIC->p1.u = dmstor(s, &s); - GEODESIC->p1.v = dmstor(s, &s); - if (inverse) { - GEODESIC->p2.u = dmstor(s, &s); - GEODESIC->p2.v = dmstor(s, &s); - geod_inv(GEODESIC); - } else { - GEODESIC->ALPHA12 = dmstor(s, &s); - GEODESIC->DIST = strtod(s, &s) * GEODESIC->TO_METER; - geod_pre(GEODESIC); - geod_for(GEODESIC); - } - if (!*s && (s > line)) --s; /* assumed we gobbled \n */ - if (pos_azi) { - if (GEODESIC->ALPHA12 < 0.) GEODESIC->ALPHA12 += TWOPI; - if (GEODESIC->ALPHA21 < 0.) GEODESIC->ALPHA21 += TWOPI; - } - if (fullout) { - printLL(GEODESIC->p1.u, GEODESIC->p1.v); TAB; - printLL(GEODESIC->p2.u, GEODESIC->p2.v); TAB; - if (oform) { - (void)printf(oform, GEODESIC->ALPHA12 * RAD_TO_DEG); TAB; - (void)printf(oform, GEODESIC->ALPHA21 * RAD_TO_DEG); TAB; - (void)printf(osform, GEODESIC->DIST * GEODESIC->FR_METER); - } else { - (void)fputs(rtodms(pline, GEODESIC->ALPHA12, 0, 0), stdout); TAB; - (void)fputs(rtodms(pline, GEODESIC->ALPHA21, 0, 0), stdout); TAB; - (void)printf(osform, GEODESIC->DIST * GEODESIC->FR_METER); - } - } else if (inverse) - if (oform) { - (void)printf(oform, GEODESIC->ALPHA12 * RAD_TO_DEG); TAB; - (void)printf(oform, GEODESIC->ALPHA21 * RAD_TO_DEG); TAB; - (void)printf(osform, GEODESIC->DIST * GEODESIC->FR_METER); - } else { - (void)fputs(rtodms(pline, GEODESIC->ALPHA12, 0, 0), stdout); TAB; - (void)fputs(rtodms(pline, GEODESIC->ALPHA21, 0, 0), stdout); TAB; - (void)printf(osform, GEODESIC->DIST * GEODESIC->FR_METER); - } - else { - printLL(GEODESIC->p2.u, GEODESIC->p2.v); TAB; - if (oform) - (void)printf(oform, GEODESIC->ALPHA21 * RAD_TO_DEG); - else - (void)fputs(rtodms(pline, GEODESIC->ALPHA21, 0, 0), stdout); - } - (void)fputs(s, stdout); - } -} - -static char *pargv[MAX_PARGS]; -static int pargc = 0; - -int main(int argc, char **argv) { - char *arg, **eargv = argv, *strnchr(); - FILE *fid; - static int eargc = 0, c; - - if (emess_dat.Prog_name = strrchr(*argv,'/')) ++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 'a': /* output full set of values */ - fullout = 1; - continue; - case 'I': /* alt. inverse spec. */ - inverse = 1; - continue; - case 't': /* set col. one char */ - if (arg[1]) tag = *++arg; - else emess(1,"missing -t col. 1 tag"); - continue; - case 'W': /* specify seconds precision */ - case 'w': /* -W for constant field width */ - if ((c = arg[1]) && 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) -noargument: emess(1,"missing argument for -%c",*arg); - oform = *++argv; - continue; - case 'F': /* alternate output format degrees or xy */ - if (--argc <= 0) goto noargument; - osform = *++argv; - continue; - case 'l': - if (!arg[1] || arg[1] == 'e') { /* list of ellipsoids */ - struct PJ_ELLPS *le; - - for (le=pj_get_ellps_ref(); le->id ; ++le) - (void)printf("%9s %-16s %-16s %s\n", - le->id, le->major, le->ell, le->name); - } else if (arg[1] == 'u') { /* list of units */ - struct PJ_UNITS *lu; - - for (lu = pj_get_units_ref();lu->id ; ++lu) - (void)printf("%12s %-20s %s\n", - lu->id, lu->to_meter, lu->name); - } else - emess(1,"invalid list option: l%c",arg[1]); - exit( 0 ); - case 'p': /* output azimuths as positive */ - pos_azi = 1; - continue; - default: - emess(1, "invalid option: -%c",*arg); - break; - } - break; - } else if (**argv == '+') /* + argument */ - if (pargc < MAX_PARGS) - pargv[pargc++] = *argv + 1; - else - emess(1,"overflowed + argument table"); - else /* assumed to be input file name(s) */ - eargv[eargc++] = *argv; - } - /* done with parameter and control input */ - GEOD_init(pargc, pargv, GEODESIC); /* setup projection */ - if ((GEODESIC->n_alpha || GEODESIC->n_S) && eargc) - emess(1,"files specified for arc/geodesic mode"); - if (GEODESIC->n_alpha) - do_arc(); - else if (GEODESIC->n_S) - do_geod(); - else { /* process input file list */ - if (eargc == 0) /* if no specific files force sysin */ - eargv[eargc++] = "-"; - for ( ; eargc-- ; ++eargv) { - if (**eargv == '-') { - fid = stdin; - emess_dat.File_name = ""; - } else { - if ((fid = fopen(*eargv, "r")) == NULL) { - emess(-2, *eargv, "input file"); - continue; - } - emess_dat.File_name = *eargv; - } - emess_dat.File_line = 0; - process(fid); - (void)fclose(fid); - emess_dat.File_name = (char *)0; - } - } - exit(0); /* normal completion */ -} diff --git a/src/geod_for.c b/src/geod_for.c deleted file mode 100644 index 510636b79..000000000 --- a/src/geod_for.c +++ /dev/null @@ -1,110 +0,0 @@ -# include "projects.h" -# include "geodesic.h" -# define MERI_TOL 1e-9 - - -// input: al12, ELLIPSE, ONEF, phi1, FLAT, FLAT4 -// output: al12 (ajusting) and!!! double s1, D, P, c1, M, N, cosa12, sina12, sinth1, costh1, th1, int signS, merid - -void -geod_pre(GEODESIC_T *GEODESIC) { - GEODESIC->ALPHA12 = adjlon(GEODESIC->ALPHA12); /* reduce to +- 0-PI */ - GEODESIC->signS = fabs(GEODESIC->ALPHA12) > HALFPI ? 1 : 0; - GEODESIC->th1 = GEODESIC->ELLIPSE ? atan(GEODESIC->ONEF * tan(GEODESIC->p1.u)) : GEODESIC->p1.u; - GEODESIC->costh1 = cos(GEODESIC->th1); - GEODESIC->sinth1 = sin(GEODESIC->th1); - if ((GEODESIC->merid = fabs(GEODESIC->sina12 = sin(GEODESIC->ALPHA12)) < MERI_TOL)) { - GEODESIC->sina12 = 0.; - GEODESIC->cosa12 = fabs(GEODESIC->ALPHA12) < HALFPI ? 1. : -1.; - GEODESIC->M = 0.; - } else { - GEODESIC->cosa12 = cos(GEODESIC->ALPHA12); - GEODESIC->M = GEODESIC->costh1 * GEODESIC->sina12; - } - GEODESIC->N = GEODESIC->costh1 * GEODESIC->cosa12; - if (GEODESIC->ELLIPSE) { - if (GEODESIC->merid) { - GEODESIC->c1 = 0.; - GEODESIC->c2 = GEODESIC->FLAT4; - GEODESIC->D = 1. - GEODESIC->c2; - GEODESIC->D *= GEODESIC->D; - GEODESIC->P = GEODESIC->c2 / GEODESIC->D; - } else { - GEODESIC->c1 = GEODESIC->FLAT * GEODESIC->M; - GEODESIC->c2 = GEODESIC->FLAT4 * (1. - GEODESIC->M * GEODESIC->M); - GEODESIC->D = (1. - GEODESIC->c2)*(1. - GEODESIC->c2 - GEODESIC->c1 * GEODESIC->M); - GEODESIC->P = (1. + .5 * GEODESIC->c1 * GEODESIC->M) * GEODESIC->c2 / GEODESIC->D; - } - } - if (GEODESIC->merid) GEODESIC->s1 = HALFPI - GEODESIC->th1; - else { - GEODESIC->s1 = (fabs(GEODESIC->M) >= 1.) ? 0. : acos(GEODESIC->M); - GEODESIC->s1 = GEODESIC->sinth1 / sin(GEODESIC->s1); - GEODESIC->s1 = (fabs(GEODESIC->s1) >= 1.) ? 0. : acos(GEODESIC->s1); - } -} - -// input: ELLIPSE, DIST, A and!!! D, signS, s1 -// output: - -void -geod_for(GEODESIC_T *GEODESIC) { - double d,sind,u,V,X,ds,cosds,sinds,ss = 0,de; - - if (GEODESIC->ELLIPSE) { - d = GEODESIC->DIST / (GEODESIC->D * GEODESIC->A); - if (GEODESIC->signS) d = -d; - u = 2. * (GEODESIC->s1 - d); - V = cos(u + d); - X = GEODESIC->c2 * GEODESIC->c2 * (sind = sin(d)) * cos(d) * (2. * V * V - 1.); - ds = d + X - 2. * GEODESIC->P * V * (1. - 2. * GEODESIC->P * cos(u)) * sind; - ss = GEODESIC->s1 + GEODESIC->s1 - ds; - } else { - ds = GEODESIC->DIST / GEODESIC->A; - if (GEODESIC->signS) ds = - ds; - } - cosds = cos(ds); - sinds = sin(ds); - if (GEODESIC->signS) sinds = - sinds; - GEODESIC->ALPHA21 = GEODESIC->N * cosds - GEODESIC->sinth1 * sinds; - if (GEODESIC->merid) { - GEODESIC->p2.u = atan( tan(HALFPI + GEODESIC->s1 - ds) / GEODESIC->ONEF); - if (GEODESIC->ALPHA21 > 0.) { - GEODESIC->ALPHA21 = PI; - if (GEODESIC->signS) - de = PI; - else { - GEODESIC->p2.u = - GEODESIC->p2.u; - de = 0.; - } - } else { - GEODESIC->ALPHA21 = 0.; - if (GEODESIC->signS) { - GEODESIC->p2.u = - GEODESIC->p2.u; - de = 0; - } else - de = PI; - } - } else { - GEODESIC->ALPHA21 = atan(GEODESIC->M / GEODESIC->ALPHA21); - if (GEODESIC->ALPHA21 > 0) - GEODESIC->ALPHA21 += PI; - if (GEODESIC->ALPHA12 < 0.) - GEODESIC->ALPHA21 -= PI; - GEODESIC->ALPHA21 = adjlon(GEODESIC->ALPHA21); - GEODESIC->p2.u = atan(-(GEODESIC->sinth1 * cosds + GEODESIC->N * sinds) * sin(GEODESIC->ALPHA21) / - (GEODESIC->ELLIPSE ? GEODESIC->ONEF * GEODESIC->M : GEODESIC->M)); - de = atan2(sinds * GEODESIC->sina12 , - (GEODESIC->costh1 * cosds - GEODESIC->sinth1 * sinds * GEODESIC->cosa12)); - if (GEODESIC->ELLIPSE) - { - if (GEODESIC->signS) - de += GEODESIC->c1 * ((1. - GEODESIC->c2) * ds + - GEODESIC->c2 * sinds * cos(ss)); - else - de -= GEODESIC->c1 * ((1. - GEODESIC->c2) * ds - - GEODESIC->c2 * sinds * cos(ss)); - } - } - GEODESIC->p2.v = adjlon( GEODESIC->p1.v + de ); -} diff --git a/src/geod_inv.c b/src/geod_inv.c deleted file mode 100644 index 61c818515..000000000 --- a/src/geod_inv.c +++ /dev/null @@ -1,59 +0,0 @@ -# include "projects.h" -# include "geodesic.h" -# define DTOL 1e-12 - -int -geod_inv(GEODESIC_T *GEODESIC) -{ - double th1,th2,thm,dthm,dlamm,dlam,sindlamm,costhm,sinthm,cosdthm, - sindthm,L,E,cosd,d,X,Y,T,sind,tandlammp,u,v,D,A,B; - - if (GEODESIC->ELLIPSE) { - th1 = atan(GEODESIC->ONEF * tan(GEODESIC->p1.u)); - th2 = atan(GEODESIC->ONEF * tan(GEODESIC->p2.u)); - } else { - th1 = GEODESIC->p1.u; - th2 = GEODESIC->p2.u; - } - thm = .5 * (th1 + th2); - dthm = .5 * (th2 - th1); - dlamm = .5 * ( dlam = adjlon(GEODESIC->p2.v - GEODESIC->p1.v) ); - if (fabs(dlam) < DTOL && fabs(dthm) < DTOL) { - GEODESIC->ALPHA12 = GEODESIC->ALPHA21 = GEODESIC->DIST = 0.; - return -1; - } - sindlamm = sin(dlamm); - costhm = cos(thm); sinthm = sin(thm); - cosdthm = cos(dthm); sindthm = sin(dthm); - L = sindthm * sindthm + (cosdthm * cosdthm - sinthm * sinthm) - * sindlamm * sindlamm; - d = acos(cosd = 1 - L - L); - if (GEODESIC->ELLIPSE) { - E = cosd + cosd; - sind = sin( d ); - Y = sinthm * cosdthm; - Y *= (Y + Y) / (1. - L); - T = sindthm * costhm; - T *= (T + T) / L; - X = Y + T; - Y -= T; - T = d / sind; - D = 4. * T * T; - A = D * E; - B = D + D; - GEODESIC->DIST = GEODESIC->A * sind * (T - GEODESIC->FLAT4 * (T * X - Y) + - GEODESIC->FLAT64 * (X * (A + (T - .5 * (A - E)) * X) - - Y * (B + E * Y) + D * X * Y)); - tandlammp = tan(.5 * (dlam - .25 * (Y + Y - E * (4. - X)) * - (GEODESIC->FLAT2 * T + GEODESIC->FLAT64 * (32. * T - (20. * T - A) - * X - (B + 4.) * Y)) * tan(dlam))); - } else { - GEODESIC->DIST = GEODESIC->A * d; - tandlammp = tan(dlamm); - } - u = atan2(sindthm , (tandlammp * costhm)); - v = atan2(cosdthm , (tandlammp * sinthm)); - GEODESIC->ALPHA12 = adjlon(TWOPI + v - u); - GEODESIC->ALPHA21 = adjlon(TWOPI - v - u); - return 0; -} diff --git a/src/geod_set.c b/src/geod_set.c deleted file mode 100644 index a190391be..000000000 --- a/src/geod_set.c +++ /dev/null @@ -1,135 +0,0 @@ - -#define _IN_GEOD_SET - -#include -#include -#include "projects.h" -#include "geodesic.h" -#include "emess.h" - -GEODESIC_T * -GEOD_init(int argc, char **argv, GEODESIC_T *GEODESIC) -{ - paralist *start = 0, *curr = 0; - double es; - char *name; - int i; - - - if(0 == GEODESIC) - { - GEODESIC = malloc(sizeof(GEODESIC_T)); - } - memset(GEODESIC, 0, sizeof(GEODESIC_T)); - - /* put arguments into internal linked list */ - if (argc <= 0) - emess(1, "no arguments in initialization list"); - for (i = 0; i < argc; ++i) - if (i) - curr = curr->next = pj_mkparam(argv[i]); - else - start = curr = pj_mkparam(argv[i]); - /* set elliptical parameters */ - if (pj_ell_set(start, &GEODESIC->A, &es)) emess(1,"ellipse setup failure"); - /* set units */ - if ((name = pj_param(start, "sunits").s)) { - char *s; - struct PJ_UNITS *unit_list = pj_get_units_ref(); - for (i = 0; (s = unit_list[i].id) && strcmp(name, s) ; ++i) ; - if (!s) - emess(1,"%s unknown unit conversion id", name); - GEODESIC->FR_METER = 1. / (GEODESIC->TO_METER = atof(unit_list[i].to_meter)); - } else - GEODESIC->TO_METER = GEODESIC->FR_METER = 1.; - if ((GEODESIC->ELLIPSE = (es != 0.))) { - GEODESIC->ONEF = sqrt(1. - es); - GEODESIC->FLAT = 1 - GEODESIC->ONEF; - GEODESIC->FLAT2 = GEODESIC->FLAT/2; - GEODESIC->FLAT4 = GEODESIC->FLAT/4; - GEODESIC->FLAT64 = GEODESIC->FLAT*GEODESIC->FLAT/64; - } else { - GEODESIC->ONEF = 1.; - GEODESIC->FLAT = GEODESIC->FLAT2 = GEODESIC->FLAT4 = GEODESIC->FLAT64 = 0.; - } - /* check if line or arc mode */ - if (pj_param(start, "tlat_1").i) { - double del_S; -#undef f - - GEODESIC->p1.u = pj_param(start, "rlat_1").f; - GEODESIC->p1.v = pj_param(start, "rlon_1").f; - if (pj_param(start, "tlat_2").i) { - GEODESIC->p2.u = pj_param(start, "rlat_2").f; - GEODESIC->p2.v = pj_param(start, "rlon_2").f; - geod_inv(GEODESIC); - geod_pre(GEODESIC); - } else if ((GEODESIC->DIST = pj_param(start, "dS").f)) { - GEODESIC->ALPHA12 = pj_param(start, "rA").f; - geod_pre(GEODESIC); - geod_for(GEODESIC); - } else emess(1,"incomplete geodesic/arc info"); - if ((GEODESIC->n_alpha = pj_param(start, "in_A").i) > 0) { - if (!(GEODESIC->del_alpha = pj_param(start, "rdel_A").f)) - emess(1,"del azimuth == 0"); - } else if ((del_S = fabs(pj_param(start, "ddel_S").f))) { - GEODESIC->n_S = GEODESIC->DIST / del_S + .5; - } else if ((GEODESIC->n_S = pj_param(start, "in_S").i) <= 0) - emess(1,"no interval divisor selected"); - } - /* free up linked list */ - for ( ; start; start = curr) { - curr = start->next; - pj_dalloc(start); - } - return GEODESIC; -} - -GEODESIC_T *GEOD_init_plus(const char *definition, GEODESIC_T *geod) -{ -#define MAX_ARG 200 - char *argv[MAX_ARG]; - char *defn_copy; - int argc = 0, i; - GEODESIC_T *ret_geod; - - /* make a copy that we can manipulate */ - defn_copy = strdup(definition); - - /* split into arguments based on '+' and trim white space */ - - for( i = 0; defn_copy[i] != '\0'; i++ ) - { - switch( defn_copy[i] ) - { - case '+': - if( i == 0 || defn_copy[i-1] == '\0' ) - { - if( argc+1 == MAX_ARG ) - { - //pj_errno = -44; - return NULL; - } - - argv[argc++] = defn_copy + i + 1; - } - break; - - case ' ': - case '\t': - case '\n': - defn_copy[i] = '\0'; - break; - - default: - /* do nothing */; - } - } - - /* perform actual initialization */ - ret_geod = GEOD_init(argc, argv, geod); - - free( defn_copy ); - return ret_geod; -} - diff --git a/src/geodesic.h b/src/geodesic.h index 2a9ff60cd..f87554f9a 100644 --- a/src/geodesic.h +++ b/src/geodesic.h @@ -1,5 +1,6 @@ #ifndef __GEODESIC_H__ #define __GEODESIC_H__ +#endif #include "projects.h" @@ -19,35 +20,29 @@ extern "C" { typedef struct geodesic { double A; - - projUV p1, p2; - - double ALPHA12; - double ALPHA21; - + + projUV p1, p2; + + double ALPHA12; + double ALPHA21; + double DIST; double ONEF, FLAT, FLAT2, FLAT4, FLAT64; int ELLIPSE; - double FR_METER, TO_METER, del_alpha; - int n_alpha, n_S; - + double FR_METER, TO_METER, del_alpha; + int n_alpha, n_S; + + + double th1,costh1,sinth1,sina12,cosa12,M,N,c1,c2,D,P,s1; + int merid, signS; + } GEODESIC_T; - double th1,costh1,sinth1,sina12,cosa12,M,N,c1,c2,D,P,s1; - int merid, signS; -} GEODESIC_T; - - GEODESIC_T *GEOD_init(int, char **, GEODESIC_T *g); GEODESIC_T *GEOD_init_plus(const char *args, GEODESIC_T *g); void geod_for(GEODESIC_T *g); void geod_pre(GEODESIC_T *g); int geod_inv(GEODESIC_T *g); - - #ifdef __cplusplus } #endif - -#endif // __GEODESIC_H__ - diff --git a/src/hypot.c b/src/hypot.c new file mode 100644 index 000000000..822c4595f --- /dev/null +++ b/src/hypot.c @@ -0,0 +1,36 @@ +/* hypot - sqrt(x * x + y * y) +** +** Because this was omitted from the ANSI standards, this version +** is included for those systems that do not include hypot as an +** extension to libm.a. Note: GNU version was not used because it +** was not properly coded to minimize potential overflow. +** +** The proper technique for determining hypot is to factor out the +** larger of the two terms, thus leaving a possible case of float +** overflow when max(x,y)*sqrt(2) > max machine value. This allows +** a wider range of numbers than the alternative of the sum of the +** squares < max machine value. For an Intel x87 IEEE double of +** approximately 1.8e308, only argument values > 1.27e308 are at +** risk of causing overflow. Whereas, not using this method limits +** the range to values less that 9.5e153 --- a considerable reduction +** in range! +*/ +extern double sqrt(double); + double +hypot(double x, double y) { + if ( x < 0.) + x = -x; + else if (x == 0.) + return (y < 0. ? -y : y); + if (y < 0.) + y = -y; + else if (y == 0.) + return (x); + if ( x < y ) { + x /= y; + return ( y * sqrt( 1. + x * x ) ); + } else { + y /= x; + return ( x * sqrt( 1. + y * y ) ); + } +} diff --git a/src/mk_cheby.c b/src/mk_cheby.c index b30190046..57ca092d0 100644 --- a/src/mk_cheby.c +++ b/src/mk_cheby.c @@ -91,14 +91,14 @@ mk_cheby(projUV a, projUV b, double res, projUV *resid, projUV (*func)(projUV), if (ncu[j]) nru = j + 1; /* update row max */ if (ncv[j]) nrv = j + 1; } - if (T = makeT(nru, nrv)) { + if ((T = makeT(nru, nrv)) != NULL ) { T->a = a; T->b = b; T->mu = nru - 1; T->mv = nrv - 1; T->power = 1; for (i = 0; i < nru; ++i) /* store coefficient rows for u */ - if (T->cu[i].m = ncu[i]) + if ((T->cu[i].m = ncu[i]) != 0) if ((p = T->cu[i].c = (double *)pj_malloc(sizeof(double) * ncu[i]))) for (j = 0; j < ncu[i]; ++j) @@ -106,7 +106,7 @@ mk_cheby(projUV a, projUV b, double res, projUV *resid, projUV (*func)(projUV), else goto error; for (i = 0; i < nrv; ++i) /* same for v */ - if (T->cv[i].m = ncv[i]) + if ((T->cv[i].m = ncv[i]) != 0) if ((p = T->cv[i].c = (double *)pj_malloc(sizeof(double) * ncv[i]))) for (j = 0; j < ncv[i]; ++j) @@ -114,7 +114,7 @@ mk_cheby(projUV a, projUV b, double res, projUV *resid, projUV (*func)(projUV), else goto error; } - } else if (T = makeT(nru, nrv)) { + } else if ((T = makeT(nru, nrv)) != NULL) { /* else make returned Chebyshev coefficient structure */ T->mu = nru - 1; /* save row degree */ T->mv = nrv - 1; @@ -124,7 +124,7 @@ mk_cheby(projUV a, projUV b, double res, projUV *resid, projUV (*func)(projUV), T->b.v = 1. / (b.v - a.v); T->power = 0; for (i = 0; i < nru; ++i) /* store coefficient rows for u */ - if (T->cu[i].m = ncu[i]) + if ((T->cu[i].m = ncu[i]) != 0) if ((p = T->cu[i].c = (double *)pj_malloc(sizeof(double) * ncu[i]))) for (j = 0; j < ncu[i]; ++j) @@ -132,7 +132,7 @@ mk_cheby(projUV a, projUV b, double res, projUV *resid, projUV (*func)(projUV), else goto error; for (i = 0; i < nrv; ++i) /* same for v */ - if (T->cv[i].m = ncv[i]) + if ((T->cv[i].m = ncv[i]) != 0) if ((p = T->cv[i].c = (double *)pj_malloc(sizeof(double) * ncv[i]))) for (j = 0; j < ncv[i]; ++j) diff --git a/src/nad_init.c b/src/nad_init.c index ec74a9c9c..fe4e063e3 100644 --- a/src/nad_init.c +++ b/src/nad_init.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: nad_init.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: nad_init.c 2121 2011-11-22 22:51:47Z warmerdam $ * * Project: PROJ.4 * Purpose: Load datum shift files into memory. @@ -44,19 +44,124 @@ # include #endif /* _WIN32_WCE */ +/************************************************************************/ +/* swap_words() */ +/* */ +/* Convert the byte order of the given word(s) in place. */ +/************************************************************************/ + +static int byte_order_test = 1; +#define IS_LSB (((unsigned char *) (&byte_order_test))[0] == 1) + +static void swap_words( void *data_in, int word_size, int word_count ) + +{ + int word; + unsigned char *data = (unsigned char *) data_in; + + for( word = 0; word < word_count; word++ ) + { + int i; + + for( i = 0; i < word_size/2; i++ ) + { + int t; + + t = data[i]; + data[i] = data[word_size-i-1]; + data[word_size-i-1] = t; + } + + data += word_size; + } +} + /************************************************************************/ /* nad_ctable_load() */ /* */ /* Load the data portion of a ctable formatted grid. */ /************************************************************************/ -int nad_ctable_load( struct CTABLE *ct, FILE *fid ) +int nad_ctable_load( projCtx ctx, struct CTABLE *ct, FILE *fid ) { int a_size; fseek( fid, sizeof(struct CTABLE), SEEK_SET ); + /* read all the actual shift values */ + a_size = ct->lim.lam * ct->lim.phi; + ct->cvs = (FLP *) pj_malloc(sizeof(FLP) * a_size); + if( ct->cvs == NULL + || fread(ct->cvs, sizeof(FLP), a_size, fid) != a_size ) + { + pj_dalloc( ct->cvs ); + ct->cvs = NULL; + + pj_log( ctx, PJ_LOG_ERROR, + "ctable loading failed on fread() - binary incompatible?\n" ); + pj_ctx_set_errno( ctx, -38 ); + return 0; + } + + return 1; +} + +/************************************************************************/ +/* nad_ctable_init() */ +/* */ +/* Read the header portion of a "ctable" format grid. */ +/************************************************************************/ + +struct CTABLE *nad_ctable_init( projCtx ctx, FILE * fid ) +{ + struct CTABLE *ct; + int id_end; + + /* read the table header */ + ct = (struct CTABLE *) pj_malloc(sizeof(struct CTABLE)); + if( ct == NULL + || fread( ct, sizeof(struct CTABLE), 1, fid ) != 1 ) + { + pj_ctx_set_errno( ctx, -38 ); + return NULL; + } + + /* do some minimal validation to ensure the structure isn't corrupt */ + if( ct->lim.lam < 1 || ct->lim.lam > 100000 + || ct->lim.phi < 1 || ct->lim.phi > 100000 ) + { + pj_ctx_set_errno( ctx, -38 ); + return NULL; + } + + /* trim white space and newlines off id */ + for( id_end = strlen(ct->id)-1; id_end > 0; id_end-- ) + { + if( ct->id[id_end] == '\n' || ct->id[id_end] == ' ' ) + ct->id[id_end] = '\0'; + else + break; + } + + ct->cvs = NULL; + + return ct; +} + +/************************************************************************/ +/* nad_ctable2_load() */ +/* */ +/* Load the data portion of a ctable2 formatted grid. */ +/************************************************************************/ + +int nad_ctable2_load( projCtx ctx, struct CTABLE *ct, FILE *fid ) + +{ + int a_size; + + fseek( fid, 160, SEEK_SET ); + /* read all the actual shift values */ a_size = ct->lim.lam * ct->lim.phi; ct->cvs = (FLP *) pj_malloc(sizeof(FLP) * a_size); @@ -72,38 +177,70 @@ int nad_ctable_load( struct CTABLE *ct, FILE *fid ) "ctable loading failed on fread() - binary incompatible?\n" ); } - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } + if( !IS_LSB ) + { + swap_words( ct->cvs, 4, a_size * 2 ); + } + return 1; } /************************************************************************/ -/* nad_ctable_init() */ +/* nad_ctable2_init() */ /* */ -/* Read the header portion of a "ctable" format grid. */ +/* Read the header portion of a "ctable2" format grid. */ /************************************************************************/ -struct CTABLE *nad_ctable_init( FILE * fid ) +struct CTABLE *nad_ctable2_init( projCtx ctx, FILE * fid ) { struct CTABLE *ct; int id_end; + char header[160]; + + if( fread( header, sizeof(header), 1, fid ) != 1 ) + { + pj_ctx_set_errno( ctx, -38 ); + return NULL; + } + + if( !IS_LSB ) + { + swap_words( header + 96, 8, 4 ); + swap_words( header + 128, 4, 2 ); + } + + if( strncmp(header,"CTABLE V2",9) != 0 ) + { + pj_log( ctx, PJ_LOG_ERROR, "ctable2 - wrong header!" ); + pj_ctx_set_errno( ctx, -38 ); + return NULL; + } /* read the table header */ ct = (struct CTABLE *) pj_malloc(sizeof(struct CTABLE)); - if( ct == NULL - || fread( ct, sizeof(struct CTABLE), 1, fid ) != 1 ) + if( ct == NULL ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return NULL; } + memcpy( ct->id, header + 16, 80 ); + memcpy( &ct->ll.lam, header + 96, 8 ); + memcpy( &ct->ll.phi, header + 104, 8 ); + memcpy( &ct->del.lam, header + 112, 8 ); + memcpy( &ct->del.phi, header + 120, 8 ); + memcpy( &ct->lim.lam, header + 128, 4 ); + memcpy( &ct->lim.phi, header + 132, 4 ); + /* do some minimal validation to ensure the structure isn't corrupt */ if( ct->lim.lam < 1 || ct->lim.lam > 100000 || ct->lim.phi < 1 || ct->lim.phi > 100000 ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return NULL; } @@ -127,28 +264,26 @@ struct CTABLE *nad_ctable_init( FILE * fid ) /* Read a datum shift file in any of the supported binary formats. */ /************************************************************************/ -struct CTABLE *nad_init(char *name) +struct CTABLE *nad_init(projCtx ctx, char *name) { char fname[MAX_PATH_FILENAME+1]; struct CTABLE *ct; FILE *fid; - char header[512]; - errno = pj_errno = 0; + ctx->last_errno = 0; /* -------------------------------------------------------------------- */ /* Open the file using the usual search rules. */ /* -------------------------------------------------------------------- */ strcpy(fname, name); - if (!(fid = pj_open_lib(fname, "rb"))) { - pj_errno = errno; + if (!(fid = pj_open_lib(ctx, fname, "rb"))) { return 0; } - - ct = nad_ctable_init( fid ); + + ct = nad_ctable_init( ctx, fid ); if( ct != NULL ) { - if( !nad_ctable_load( ct, fid ) ) + if( !nad_ctable_load( ctx, ct, fid ) ) { nad_free( ct ); ct = NULL; diff --git a/src/pj_apply_gridshift.c b/src/pj_apply_gridshift.c index 9ccfee391..9ff4efe92 100644 --- a/src/pj_apply_gridshift.c +++ b/src/pj_apply_gridshift.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_apply_gridshift.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: pj_apply_gridshift.c 1856 2010-06-11 03:26:04Z warmerdam $ * * Project: PROJ.4 * Purpose: Apply datum shifts based on grid shift files (normally NAD27 to @@ -38,24 +38,91 @@ /************************************************************************/ /* pj_apply_gridshift() */ +/* */ +/* This is the externally callable interface - part of the */ +/* public API - though it is not used internally any more and I */ +/* doubt it is used by any other applications. But we preserve */ +/* it to honour our public api. */ /************************************************************************/ -int pj_apply_gridshift( const char *nadgrids, int inverse, +int pj_apply_gridshift( projCtx ctx, const char *nadgrids, int inverse, long point_count, int point_offset, double *x, double *y, double *z ) { - int grid_count = 0; - PJ_GRIDINFO **tables; + PJ_GRIDINFO **gridlist; + int grid_count; + int ret; + + gridlist = pj_gridlist_from_nadgrids( ctx, nadgrids, &grid_count ); + + if( gridlist == NULL || grid_count == 0 ) + return ctx->last_errno; + + ret = pj_apply_gridshift_3( ctx, gridlist, grid_count, inverse, + point_count, point_offset, x, y, z ); + + /* + ** Note this frees the array of grid list pointers, but not the grids + ** which is as intended. The grids themselves live on. + */ + pj_dalloc( gridlist ); + + return ret; +} + +/************************************************************************/ +/* pj_apply_gridshift_2() */ +/* */ +/* This implmentation takes uses the gridlist from a coordinate */ +/* system definition. If the gridlist has not yet been */ +/* populated in the coordinate system definition we set it up */ +/* now. */ +/************************************************************************/ + +int pj_apply_gridshift_2( PJ *defn, int inverse, + long point_count, int point_offset, + double *x, double *y, double *z ) + +{ + if( defn->gridlist == NULL ) + { + defn->gridlist = + pj_gridlist_from_nadgrids( pj_get_ctx( defn ), + pj_param(defn->ctx, defn->params,"snadgrids").s, + &(defn->gridlist_count) ); + + if( defn->gridlist == NULL || defn->gridlist_count == 0 ) + return defn->ctx->last_errno; + } + + return pj_apply_gridshift_3( pj_get_ctx( defn ), + defn->gridlist, defn->gridlist_count, inverse, + point_count, point_offset, x, y, z ); +} + + +/************************************************************************/ +/* pj_apply_gridshift_3() */ +/* */ +/* This is the real workhorse, given a gridlist. */ +/************************************************************************/ + +int pj_apply_gridshift_3( projCtx ctx, PJ_GRIDINFO **tables, int grid_count, + int inverse, long point_count, int point_offset, + double *x, double *y, double *z ) + +{ int i; - int debug_flag = getenv( "PROJ_DEBUG" ) != NULL; static int debug_count = 0; - pj_errno = 0; - - tables = pj_gridlist_from_nadgrids( nadgrids, &grid_count); if( tables == NULL || grid_count == 0 ) - return pj_errno; + { + pj_ctx_set_errno( ctx, -38); + return -38; + } + + ctx->last_errno = 0; for( i = 0; i < point_count; i++ ) { @@ -106,38 +173,45 @@ int pj_apply_gridshift( const char *nadgrids, int inverse, } /* load the grid shift info if we don't have it. */ - if( ct->cvs == NULL && !pj_gridinfo_load( gi ) ) + if( ct->cvs == NULL && !pj_gridinfo_load( ctx, gi ) ) { - pj_errno = -38; - return pj_errno; + pj_ctx_set_errno( ctx, -38 ); + return -38; } output = nad_cvt( input, inverse, ct ); if( output.lam != HUGE_VAL ) { - if( debug_flag && debug_count++ < 20 ) - fprintf( stderr, - "pj_apply_gridshift(): used %s\n", - ct->id ); + if( debug_count++ < 20 ) + pj_log( ctx, PJ_LOG_DEBUG_MINOR, + "pj_apply_gridshift(): used %s", ct->id ); break; } } if( output.lam == HUGE_VAL ) { - if( debug_flag ) + if( ctx->debug_level >= PJ_LOG_DEBUG_MAJOR ) { - fprintf( stderr, - "pj_apply_gridshift(): failed to find a grid shift table for\n" - " location (%.7fdW,%.7fdN)\n", - x[io] * RAD_TO_DEG, - y[io] * RAD_TO_DEG ); - fprintf( stderr, - " tried: %s\n", nadgrids ); + pj_log( ctx, PJ_LOG_DEBUG_MAJOR, + "pj_apply_gridshift(): failed to find a grid shift table for\n" + " location (%.7fdW,%.7fdN)", + x[io] * RAD_TO_DEG, + y[io] * RAD_TO_DEG ); + for( itable = 0; itable < grid_count; itable++ ) + { + PJ_GRIDINFO *gi = tables[itable]; + if( itable == 0 ) + pj_log( ctx, PJ_LOG_DEBUG_MAJOR, + " tried: %s", gi->gridname ); + else + pj_log( ctx, PJ_LOG_DEBUG_MAJOR, + ",%s", gi->gridname ); + } } - - pj_errno = -38; - return pj_errno; + + pj_ctx_set_errno( ctx, PJD_ERR_GRID_AREA ); + return PJD_ERR_GRID_AREA; } else { diff --git a/src/pj_apply_vgridshift.c b/src/pj_apply_vgridshift.c new file mode 100644 index 000000000..1570d7ff3 --- /dev/null +++ b/src/pj_apply_vgridshift.c @@ -0,0 +1,208 @@ +/****************************************************************************** + * $Id: pj_apply_gridshift.c 1831 2010-03-16 12:44:36Z warmerdam $ + * + * Project: PROJ.4 + * Purpose: Apply vertical datum shifts based on grid shift files, normally + * geoid grids mapping WGS84 to NAVD88 or something similar. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 2010, 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. + *****************************************************************************/ + +#define PJ_LIB__ + +#include +#include +#include + +/************************************************************************/ +/* pj_apply_vgridshift() */ +/* */ +/* This implmentation takes uses the gridlist from a coordinate */ +/* system definition. If the gridlist has not yet been */ +/* populated in the coordinate system definition we set it up */ +/* now. */ +/************************************************************************/ + +int pj_apply_vgridshift( PJ *defn, const char *listname, + PJ_GRIDINFO ***gridlist_p, + int *gridlist_count_p, + int inverse, + long point_count, int point_offset, + double *x, double *y, double *z ) + +{ + int i; + static int debug_count = 0; + PJ_GRIDINFO **tables; + + if( *gridlist_p == NULL ) + { + *gridlist_p = + pj_gridlist_from_nadgrids( pj_get_ctx(defn), + pj_param(defn->ctx,defn->params,listname).s, + gridlist_count_p ); + + if( *gridlist_p == NULL || *gridlist_count_p == 0 ) + return defn->ctx->last_errno; + } + + if( *gridlist_count_p == 0 ) + { + pj_ctx_set_errno( defn->ctx, -38); + return -38; + } + + tables = *gridlist_p; + defn->ctx->last_errno = 0; + + for( i = 0; i < point_count; i++ ) + { + long io = i * point_offset; + LP input; + int itable; + double value = HUGE_VAL; + + input.phi = y[io]; + input.lam = x[io]; + + /* keep trying till we find a table that works */ + for( itable = 0; itable < *gridlist_count_p; itable++ ) + { + PJ_GRIDINFO *gi = tables[itable]; + struct CTABLE *ct = gi->ct; + double grid_x, grid_y; + int grid_ix, grid_iy; + float *cvs; + + /* skip tables that don't match our point at all. */ + if( ct->ll.phi > input.phi || ct->ll.lam > input.lam + || ct->ll.phi + (ct->lim.phi-1) * ct->del.phi < input.phi + || ct->ll.lam + (ct->lim.lam-1) * ct->del.lam < input.lam ) + continue; + + /* If we have child nodes, check to see if any of them apply. */ + if( gi->child != NULL ) + { + PJ_GRIDINFO *child; + + for( child = gi->child; child != NULL; child = child->next ) + { + struct CTABLE *ct1 = child->ct; + + if( ct1->ll.phi > input.phi || ct1->ll.lam > input.lam + || ct1->ll.phi+(ct1->lim.phi-1)*ct1->del.phi < input.phi + || ct1->ll.lam+(ct1->lim.lam-1)*ct1->del.lam < input.lam) + continue; + + break; + } + + /* we found a more refined child node to use */ + if( child != NULL ) + { + gi = child; + ct = child->ct; + } + } + + /* load the grid shift info if we don't have it. */ + if( ct->cvs == NULL && !pj_gridinfo_load( pj_get_ctx(defn), gi ) ) + { + pj_ctx_set_errno( defn->ctx, -38 ); + return -38; + } + + /* Interpolation a location within the grid */ + grid_x = (input.lam - ct->ll.lam) / ct->del.lam; + grid_y = (input.phi - ct->ll.phi) / ct->del.phi; + grid_ix = (int) floor(grid_x); + grid_iy = (int) floor(grid_y); + grid_x -= grid_ix; + grid_y -= grid_iy; + + cvs = (float *) ct->cvs; + value = cvs[grid_ix + grid_iy * ct->lim.lam] + * (1.0-grid_x) * (1.0-grid_y) + + cvs[grid_ix + 1 + grid_iy * ct->lim.lam] + * (grid_x) * (1.0-grid_y) + + cvs[grid_ix + (grid_iy+1) * ct->lim.lam] + * (1.0-grid_x) * (grid_y) + + cvs[grid_ix + 1 + (grid_iy+1) * ct->lim.lam] + * (grid_x) * (grid_y); + + if( value > 1000 || value < -1000 ) /* nodata? */ + value = HUGE_VAL; + else + { + if( inverse ) + z[io] -= value; + else + z[io] += value; + } + + if( value != HUGE_VAL ) + { + if( debug_count++ < 20 ) + pj_log( defn->ctx, PJ_LOG_DEBUG_MINOR, + "pj_apply_gridshift(): used %s", + ct->id ); + break; + } + } + + if( value == HUGE_VAL ) + { + char gridlist[3000]; + + pj_log( defn->ctx, PJ_LOG_DEBUG_MAJOR, + "pj_apply_vgridshift(): failed to find a grid shift table for\n" + " location (%.7fdW,%.7fdN)", + x[io] * RAD_TO_DEG, + y[io] * RAD_TO_DEG ); + + gridlist[0] = '\0'; + for( itable = 0; itable < *gridlist_count_p; itable++ ) + { + PJ_GRIDINFO *gi = tables[itable]; + if( strlen(gridlist) + strlen(gi->gridname) > sizeof(gridlist)-100 ) + { + strcat( gridlist, "..." ); + break; + } + + if( itable == 0 ) + sprintf( gridlist, " tried: %s", gi->gridname ); + else + sprintf( gridlist+strlen(gridlist), ",%s", gi->gridname ); + } + pj_log( defn->ctx, PJ_LOG_DEBUG_MAJOR, + "%s", gridlist ); + + pj_ctx_set_errno( defn->ctx, PJD_ERR_GRID_AREA ); + return PJD_ERR_GRID_AREA; + } + } + + return 0; +} + diff --git a/src/pj_auth.c b/src/pj_auth.c index 599b8f77d..35178418b 100644 --- a/src/pj_auth.c +++ b/src/pj_auth.c @@ -1,17 +1,17 @@ /* determine latitude from authalic latitude */ #include -# define P00 .33333333333333333333 -# define P01 .17222222222222222222 -# define P02 .10257936507936507936 -# define P10 .06388888888888888888 -# define P11 .06640211640211640211 -# define P20 .01641501294219154443 +# define P00 .33333333333333333333 /* 1 / 3 */ +# define P01 .17222222222222222222 /* 31 / 180 */ +# define P02 .10257936507936507937 /* 517 / 5040 */ +# define P10 .06388888888888888888 /* 23 / 360 */ +# define P11 .06640211640211640212 /* 251 / 3780 */ +# define P20 .01677689594356261023 /* 761 / 45360 */ #define APA_SIZE 3 double * pj_authset(double es) { double t, *APA; - if (APA = (double *)pj_malloc(APA_SIZE * sizeof(double))) { + if ((APA = (double *)pj_malloc(APA_SIZE * sizeof(double))) != NULL) { APA[0] = es * P00; t = es * es; APA[0] += t * P01; diff --git a/src/pj_ctx.c b/src/pj_ctx.c new file mode 100644 index 000000000..a9dc7ab80 --- /dev/null +++ b/src/pj_ctx.c @@ -0,0 +1,179 @@ +/****************************************************************************** + * $Id$ + * + * Project: PROJ.4 + * Purpose: Implementation of the projCtx thread context object. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 2010, 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 + +PJ_CVSID("$Id$"); + +static projCtx_t default_context; +static int default_context_initialized = 0; + +/************************************************************************/ +/* pj_get_ctx() */ +/************************************************************************/ + +projCtx pj_get_ctx( projPJ pj ) + +{ + return pj->ctx; +} + +/************************************************************************/ +/* pj_set_ctx() */ +/* */ +/* Note we do not deallocate the old context! */ +/************************************************************************/ + +void pj_set_ctx( projPJ pj, projCtx ctx ) + +{ + pj->ctx = ctx; +} + +/************************************************************************/ +/* pj_get_default_ctx() */ +/************************************************************************/ + +projCtx pj_get_default_ctx() + +{ + pj_acquire_lock(); + + if( !default_context_initialized ) + { + default_context_initialized = 1; + default_context.last_errno = 0; + default_context.debug_level = PJ_LOG_NONE; + default_context.logger = pj_stderr_logger; + default_context.app_data = NULL; + + if( getenv("PROJ_DEBUG") != NULL ) + { + if( atoi(getenv("PROJ_DEBUG")) > 0 ) + default_context.debug_level = atoi(getenv("PROJ_DEBUG")); + else + default_context.debug_level = PJ_LOG_DEBUG_MINOR; + } + } + + pj_release_lock(); + + return &default_context; +} + +/************************************************************************/ +/* pj_ctx_alloc() */ +/************************************************************************/ + +projCtx pj_ctx_alloc() + +{ + projCtx ctx = (projCtx_t *) malloc(sizeof(projCtx_t)); + memcpy( ctx, pj_get_default_ctx(), sizeof(projCtx_t) ); + ctx->last_errno = 0; + + return ctx; +} + +/************************************************************************/ +/* pj_ctx_free() */ +/************************************************************************/ + +void pj_ctx_free( projCtx ctx ) + +{ + free( ctx ); +} + +/************************************************************************/ +/* pj_ctx_get_errno() */ +/************************************************************************/ + +int pj_ctx_get_errno( projCtx ctx ) + +{ + return ctx->last_errno; +} + +/************************************************************************/ +/* pj_ctx_set_errno() */ +/* */ +/* Also sets the global errno. */ +/************************************************************************/ + +void pj_ctx_set_errno( projCtx ctx, int new_errno ) + +{ + ctx->last_errno = new_errno; + if( new_errno != 0 ) + pj_errno = new_errno; +} + +/************************************************************************/ +/* pj_ctx_set_debug() */ +/************************************************************************/ + +void pj_ctx_set_debug( projCtx ctx, int new_debug ) + +{ + ctx->debug_level = new_debug; +} + +/************************************************************************/ +/* pj_ctx_set_logger() */ +/************************************************************************/ + +void pj_ctx_set_logger( projCtx ctx, void (*new_logger)(void*,int,const char*) ) + +{ + ctx->logger = new_logger; +} + +/************************************************************************/ +/* pj_ctx_set_app_data() */ +/************************************************************************/ + +void pj_ctx_set_app_data( projCtx ctx, void *new_app_data ) + +{ + ctx->app_data = new_app_data; +} + +/************************************************************************/ +/* pj_ctx_get_app_data() */ +/************************************************************************/ + +void *pj_ctx_get_app_data( projCtx ctx ) + +{ + return ctx->app_data; +} + + diff --git a/src/pj_datum_set.c b/src/pj_datum_set.c index c2b8e1bbb..2f24990d7 100644 --- a/src/pj_datum_set.c +++ b/src/pj_datum_set.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_datum_set.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: pj_datum_set.c 1856 2010-06-11 03:26:04Z warmerdam $ * * Project: PROJ.4 * Purpose: Apply datum definition to PJ structure from initialization string. @@ -37,7 +37,7 @@ /* pj_datum_set() */ /************************************************************************/ -int pj_datum_set(paralist *pl, PJ *projdef) +int pj_datum_set(projCtx ctx, paralist *pl, PJ *projdef) { const char *name, *towgs84, *nadgrids; @@ -54,7 +54,7 @@ int pj_datum_set(paralist *pl, PJ *projdef) /* definition will last into the pj_ell_set() function called */ /* after this one. */ /* -------------------------------------------------------------------- */ - if( (name = pj_param(pl,"sdatum").s) != NULL ) + if( (name = pj_param(ctx, pl,"sdatum").s) != NULL ) { paralist *curr; const char *s; @@ -66,7 +66,7 @@ int pj_datum_set(paralist *pl, PJ *projdef) /* find the datum definition */ for (i = 0; (s = pj_datums[i].id) && strcmp(name, s) ; ++i) {} - if (!s) { pj_errno = -9; return 1; } + if (!s) { pj_ctx_set_errno(ctx, -9); return 1; } if( pj_datums[i].ellipse_id && strlen(pj_datums[i].ellipse_id) > 0 ) { @@ -84,7 +84,7 @@ int pj_datum_set(paralist *pl, PJ *projdef) /* -------------------------------------------------------------------- */ /* Check for nadgrids parameter. */ /* -------------------------------------------------------------------- */ - if( (nadgrids = pj_param(pl,"snadgrids").s) != NULL ) + if( (nadgrids = pj_param(ctx, pl,"snadgrids").s) != NULL ) { /* We don't actually save the value separately. It will continue to exist int he param list for use in pj_apply_gridshift.c */ @@ -95,7 +95,7 @@ int pj_datum_set(paralist *pl, PJ *projdef) /* -------------------------------------------------------------------- */ /* Check for towgs84 parameter. */ /* -------------------------------------------------------------------- */ - else if( (towgs84 = pj_param(pl,"stowgs84").s) != NULL ) + else if( (towgs84 = pj_param(ctx, pl,"stowgs84").s) != NULL ) { int parm_count = 0; const char *s; diff --git a/src/pj_datums.c b/src/pj_datums.c index be0bb8b07..973cc05bf 100644 --- a/src/pj_datums.c +++ b/src/pj_datums.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_datums.c 1558 2009-04-02 18:25:58Z warmerdam $ + * $Id: pj_datums.c 2085 2011-08-07 22:17:18Z warmerdam $ * * Project: PROJ.4 * Purpose: Built in datum list. @@ -48,7 +48,7 @@ C_NAMESPACE_VAR struct PJ_DATUMS pj_datums[] = { "NAD27", "nadgrids=@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat", "clrk66", "North_American_Datum_1927", -"potsdam", "towgs84=606.0,23.0,413.0", "bessel", "Potsdam Rauenberg 1950 DHDN", +"potsdam", "towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7", "bessel", "Potsdam Rauenberg 1950 DHDN", "carthage", "towgs84=-263.0,6.0,431.0", "clark80", "Carthage 1934 Tunisia", "hermannskogel", "towgs84=653.0,-212.0,449.0", "bessel", "Hermannskogel", "ire65", "towgs84=482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", "mod_airy", "Ireland 1965", diff --git a/src/pj_ell_set.c b/src/pj_ell_set.c index 989701ece..c0d4adcb1 100644 --- a/src/pj_ell_set.c +++ b/src/pj_ell_set.c @@ -7,76 +7,79 @@ #define RV4 .06944444444444444444 /* 5/72 */ #define RV6 .04243827160493827160 /* 55/1296 */ int /* initialize geographic shape parameters */ -pj_ell_set(paralist *pl, double *a, double *es) { +pj_ell_set(projCtx ctx, paralist *pl, double *a, double *es) { int i; double b=0.0, e; char *name; paralist *start = 0, *curr; - /* check for varying forms of ellipsoid input */ + /* clear any previous error */ + pj_ctx_set_errno(ctx,0); + + /* check for varying forms of ellipsoid input */ *a = *es = 0.; /* R takes precedence */ - if (pj_param(pl, "tR").i) - *a = pj_param(pl, "dR").f; + if (pj_param(NULL, pl, "tR").i) + *a = pj_param(NULL,pl, "dR").f; else { /* probable elliptical figure */ /* check if ellps present and temporarily append its values to pl */ - if (name = pj_param(pl, "sellps").s) { + if ((name = pj_param(NULL,pl, "sellps").s) != NULL) { char *s; for (start = pl; start && start->next ; start = start->next) ; curr = start; for (i = 0; (s = pj_ellps[i].id) && strcmp(name, s) ; ++i) ; - if (!s) { pj_errno = -9; return 1; } + if (!s) { pj_ctx_set_errno( ctx, -9); return 1; } curr = curr->next = pj_mkparam(pj_ellps[i].major); curr = curr->next = pj_mkparam(pj_ellps[i].ell); } - *a = pj_param(pl, "da").f; - if (pj_param(pl, "tes").i) /* eccentricity squared */ - *es = pj_param(pl, "des").f; - else if (pj_param(pl, "te").i) { /* eccentricity */ - e = pj_param(pl, "de").f; + *a = pj_param(NULL,pl, "da").f; + if (pj_param(NULL,pl, "tes").i) /* eccentricity squared */ + *es = pj_param(NULL,pl, "des").f; + else if (pj_param(NULL,pl, "te").i) { /* eccentricity */ + e = pj_param(NULL,pl, "de").f; *es = e * e; - } else if (pj_param(pl, "trf").i) { /* recip flattening */ - *es = pj_param(pl, "drf").f; + } else if (pj_param(NULL,pl, "trf").i) { /* recip flattening */ + *es = pj_param(NULL,pl, "drf").f; if (!*es) { - pj_errno = -10; + pj_ctx_set_errno( ctx, -10); goto bomb; } *es = 1./ *es; *es = *es * (2. - *es); - } else if (pj_param(pl, "tf").i) { /* flattening */ - *es = pj_param(pl, "df").f; + } else if (pj_param(NULL,pl, "tf").i) { /* flattening */ + *es = pj_param(NULL,pl, "df").f; *es = *es * (2. - *es); - } else if (pj_param(pl, "tb").i) { /* minor axis */ - b = pj_param(pl, "db").f; + } else if (pj_param(NULL,pl, "tb").i) { /* minor axis */ + b = pj_param(NULL,pl, "db").f; *es = 1. - (b * b) / (*a * *a); } /* else *es == 0. and sphere of radius *a */ if (!b) b = *a * sqrt(1. - *es); /* following options turn ellipsoid into equivalent sphere */ - if (pj_param(pl, "bR_A").i) { /* sphere--area of ellipsoid */ + if (pj_param(NULL,pl, "bR_A").i) { /* sphere--area of ellipsoid */ *a *= 1. - *es * (SIXTH + *es * (RA4 + *es * RA6)); *es = 0.; - } else if (pj_param(pl, "bR_V").i) { /* sphere--vol. of ellipsoid */ + } else if (pj_param(NULL,pl, "bR_V").i) { /* sphere--vol. of ellipsoid */ *a *= 1. - *es * (SIXTH + *es * (RV4 + *es * RV6)); *es = 0.; - } else if (pj_param(pl, "bR_a").i) { /* sphere--arithmetic mean */ + } else if (pj_param(NULL,pl, "bR_a").i) { /* sphere--arithmetic mean */ *a = .5 * (*a + b); *es = 0.; - } else if (pj_param(pl, "bR_g").i) { /* sphere--geometric mean */ + } else if (pj_param(NULL,pl, "bR_g").i) { /* sphere--geometric mean */ *a = sqrt(*a * b); *es = 0.; - } else if (pj_param(pl, "bR_h").i) { /* sphere--harmonic mean */ + } else if (pj_param(NULL,pl, "bR_h").i) { /* sphere--harmonic mean */ *a = 2. * *a * b / (*a + b); *es = 0.; - } else if ((i = pj_param(pl, "tR_lat_a").i) || /* sphere--arith. */ - pj_param(pl, "tR_lat_g").i) { /* or geom. mean at latitude */ + } else if ((i = pj_param(NULL,pl, "tR_lat_a").i) || /* sphere--arith. */ + pj_param(NULL,pl, "tR_lat_g").i) { /* or geom. mean at latitude */ double tmp; - tmp = sin(pj_param(pl, i ? "rR_lat_a" : "rR_lat_g").f); + tmp = sin(pj_param(NULL,pl, i ? "rR_lat_a" : "rR_lat_g").f); if (fabs(tmp) > HALFPI) { - pj_errno = -11; + pj_ctx_set_errno(ctx,-11); goto bomb; } tmp = 1. - *es * tmp * tmp; @@ -90,13 +93,13 @@ pj_ell_set(paralist *pl, double *a, double *es) { pj_dalloc(start->next); start->next = 0; } - if (pj_errno) + if (ctx->last_errno) return 1; } /* some remaining checks */ if (*es < 0.) - { pj_errno = -12; return 1; } + { pj_ctx_set_errno( ctx, -12); return 1; } if (*a <= 0.) - { pj_errno = -13; return 1; } + { pj_ctx_set_errno( ctx, -13); return 1; } return 0; } diff --git a/src/pj_factors.c b/src/pj_factors.c index ee48cfb70..6a4db92ec 100644 --- a/src/pj_factors.c +++ b/src/pj_factors.c @@ -13,10 +13,12 @@ pj_factors(LP lp, PJ *P, double h, struct FACTORS *fac) { /* check for forward and latitude or longitude overange */ if ((t = fabs(lp.phi)-HALFPI) > EPS || fabs(lp.lam) > 10.) { - pj_errno = -14; + pj_ctx_set_errno( P->ctx, -14); return 1; } else { /* proceed */ errno = pj_errno = 0; + P->ctx->last_errno = 0; + if (h < EPS) h = DEFAULT_H; if (fabs(lp.phi) > (HALFPI - h)) @@ -70,7 +72,7 @@ pj_factors(LP lp, PJ *P, double h, struct FACTORS *fac) { fac->s = (fac->der.y_p * fac->der.x_l - fac->der.x_p * fac->der.y_l) * r / cosphi; /* meridian-parallel angle theta prime */ - fac->thetap = aasin(fac->s / (fac->h * fac->k)); + fac->thetap = aasin(P->ctx,fac->s / (fac->h * fac->k)); /* Tissot ellips axis */ t = fac->k * fac->k + fac->h * fac->h; fac->a = sqrt(t + 2. * fac->s); @@ -78,7 +80,7 @@ pj_factors(LP lp, PJ *P, double h, struct FACTORS *fac) { fac->b = 0.5 * (fac->a - t); fac->a = 0.5 * (fac->a + t); /* omega */ - fac->omega = 2. * aasin((fac->a - fac->b)/(fac->a + fac->b)); + fac->omega = 2. * aasin(P->ctx,(fac->a - fac->b)/(fac->a + fac->b)); } return 0; } diff --git a/src/pj_fwd.c b/src/pj_fwd.c index 880a93198..b70b42401 100644 --- a/src/pj_fwd.c +++ b/src/pj_fwd.c @@ -11,9 +11,12 @@ pj_fwd(LP lp, PJ *P) { /* check for forward and latitude or longitude overange */ if ((t = fabs(lp.phi)-HALFPI) > EPS || fabs(lp.lam) > 10.) { xy.x = xy.y = HUGE_VAL; - pj_errno = -14; + pj_ctx_set_errno( P->ctx, -14); } else { /* proceed with projection */ - errno = pj_errno = 0; + P->ctx->last_errno = 0; + pj_errno = 0; + errno = 0; + if (fabs(t) <= EPS) lp.phi = lp.phi < 0. ? -HALFPI : HALFPI; else if (P->geoc) @@ -22,7 +25,7 @@ pj_fwd(LP lp, PJ *P) { if (!P->over) lp.lam = adjlon(lp.lam); /* adjust del longitude */ xy = (*P->fwd)(lp, P); /* project */ - if (pj_errno || (pj_errno = errno)) + if ( P->ctx->last_errno ) xy.x = xy.y = HUGE_VAL; /* adjust for major axis and easting/northings */ else { diff --git a/src/pj_gauss.c b/src/pj_gauss.c index ac794f20c..1d2e2ab10 100644 --- a/src/pj_gauss.c +++ b/src/pj_gauss.c @@ -4,7 +4,7 @@ ** Copyright (c) 2003 Gerald I. Evenden */ static const char -LIBPROJ_ID[] = "$Id: pj_gauss.c 1504 2009-01-06 02:11:57Z warmerdam $"; +LIBPROJ_ID[] = "$Id: pj_gauss.c 1856 2010-06-11 03:26:04Z warmerdam $"; /* ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the @@ -64,7 +64,7 @@ pj_gauss_ini(double e, double phi0, double *chi, double *rc) { return ((void *)en); } LP -pj_gauss(LP elp, const void *en) { +pj_gauss(projCtx ctx, LP elp, const void *en) { LP slp; slp.phi = 2. * atan( EN->K * @@ -74,7 +74,7 @@ pj_gauss(LP elp, const void *en) { return(slp); } LP -pj_inv_gauss(LP slp, const void *en) { +pj_inv_gauss(projCtx ctx, LP slp, const void *en) { LP elp; double num; int i; @@ -89,6 +89,6 @@ pj_inv_gauss(LP slp, const void *en) { } /* convergence failed */ if (!i) - pj_errno = -17; + pj_ctx_set_errno( ctx, -17 ); return (elp); } diff --git a/src/pj_gridinfo.c b/src/pj_gridinfo.c index 7a4612f1f..920c54736 100644 --- a/src/pj_gridinfo.c +++ b/src/pj_gridinfo.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_gridinfo.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: pj_gridinfo.c 2121 2011-11-22 22:51:47Z warmerdam $ * * Project: PROJ.4 * Purpose: Functions for handling individual PJ_GRIDINFO's. Includes @@ -80,7 +80,7 @@ static void swap_words( unsigned char *data, int word_size, int word_count ) /* pj_gridinfo_free() */ /************************************************************************/ -void pj_gridinfo_free( PJ_GRIDINFO *gi ) +void pj_gridinfo_free( projCtx ctx, PJ_GRIDINFO *gi ) { if( gi == NULL ) @@ -93,7 +93,7 @@ void pj_gridinfo_free( PJ_GRIDINFO *gi ) for( child = gi->child; child != NULL; child=next) { next=child->next; - pj_gridinfo_free( child ); + pj_gridinfo_free( ctx, child ); } } @@ -115,30 +115,52 @@ void pj_gridinfo_free( PJ_GRIDINFO *gi ) /* stuff are loaded by pj_gridinfo_init(). */ /************************************************************************/ -int pj_gridinfo_load( PJ_GRIDINFO *gi ) +int pj_gridinfo_load( projCtx ctx, PJ_GRIDINFO *gi ) { if( gi == NULL || gi->ct == NULL ) return 0; /* -------------------------------------------------------------------- */ -/* ctable is currently loaded on initialization though there is */ -/* no real reason not to support delayed loading for it as well. */ +/* Original platform specific CTable format. */ /* -------------------------------------------------------------------- */ if( strcmp(gi->format,"ctable") == 0 ) { FILE *fid; int result; - fid = pj_open_lib( gi->filename, "rb" ); + fid = pj_open_lib( ctx, gi->filename, "rb" ); if( fid == NULL ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } - result = nad_ctable_load( gi->ct, fid ); + result = nad_ctable_load( ctx, gi->ct, fid ); + + fclose( fid ); + + return result; + } + +/* -------------------------------------------------------------------- */ +/* CTable2 format. */ +/* -------------------------------------------------------------------- */ + else if( strcmp(gi->format,"ctable2") == 0 ) + { + FILE *fid; + int result; + + fid = pj_open_lib( ctx, gi->filename, "rb" ); + + if( fid == NULL ) + { + pj_ctx_set_errno( ctx, -38 ); + return 0; + } + + result = nad_ctable2_load( ctx, gi->ct, fid ); fclose( fid ); @@ -158,11 +180,11 @@ int pj_gridinfo_load( PJ_GRIDINFO *gi ) int row; FILE *fid; - fid = pj_open_lib( gi->filename, "rb" ); + fid = pj_open_lib( ctx, gi->filename, "rb" ); if( fid == NULL ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -172,7 +194,7 @@ int pj_gridinfo_load( PJ_GRIDINFO *gi ) gi->ct->cvs = (FLP *) pj_malloc(gi->ct->lim.lam*gi->ct->lim.phi*sizeof(FLP)); if( row_buf == NULL || gi->ct->cvs == NULL ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -187,7 +209,7 @@ int pj_gridinfo_load( PJ_GRIDINFO *gi ) { pj_dalloc( row_buf ); pj_dalloc( gi->ct->cvs ); - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -227,16 +249,14 @@ int pj_gridinfo_load( PJ_GRIDINFO *gi ) int row; FILE *fid; - if( getenv("PROJ_DEBUG") != NULL ) - { - fprintf( stderr, "NTv2 - loading grid %s\n", gi->ct->id ); - } + pj_log( ctx, PJ_LOG_DEBUG_MINOR, + "NTv2 - loading grid %s", gi->ct->id ); - fid = pj_open_lib( gi->filename, "rb" ); + fid = pj_open_lib( ctx, gi->filename, "rb" ); if( fid == NULL ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -246,7 +266,7 @@ int pj_gridinfo_load( PJ_GRIDINFO *gi ) gi->ct->cvs = (FLP *) pj_malloc(gi->ct->lim.lam*gi->ct->lim.phi*sizeof(FLP)); if( row_buf == NULL || gi->ct->cvs == NULL ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -262,7 +282,7 @@ int pj_gridinfo_load( PJ_GRIDINFO *gi ) pj_dalloc( row_buf ); pj_dalloc( gi->ct->cvs ); gi->ct->cvs = NULL; - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -291,6 +311,45 @@ int pj_gridinfo_load( PJ_GRIDINFO *gi ) return 1; } +/* -------------------------------------------------------------------- */ +/* GTX format. */ +/* -------------------------------------------------------------------- */ + else if( strcmp(gi->format,"gtx") == 0 ) + { + int words = gi->ct->lim.lam * gi->ct->lim.phi; + FILE *fid; + + fid = pj_open_lib( ctx, gi->filename, "rb" ); + + if( fid == NULL ) + { + pj_ctx_set_errno( ctx, -38 ); + return 0; + } + + fseek( fid, gi->grid_offset, SEEK_SET ); + + gi->ct->cvs = (FLP *) pj_malloc(words*sizeof(float)); + if( gi->ct->cvs == NULL ) + { + pj_ctx_set_errno( ctx, -38 ); + return 0; + } + + if( fread( gi->ct->cvs, sizeof(float), words, fid ) != words ) + { + pj_dalloc( gi->ct->cvs ); + gi->ct->cvs = NULL; + return 0; + } + + if( IS_LSB ) + swap_words( (unsigned char *) gi->ct->cvs, 4, words ); + + fclose( fid ); + return 1; + } + else { return 0; @@ -303,7 +362,7 @@ int pj_gridinfo_load( PJ_GRIDINFO *gi ) /* Load a ntv2 (.gsb) file. */ /************************************************************************/ -static int pj_gridinfo_init_ntv2( FILE *fid, PJ_GRIDINFO *gilist ) +static int pj_gridinfo_init_ntv2( projCtx ctx, FILE *fid, PJ_GRIDINFO *gilist ) { unsigned char header[11*16]; @@ -313,9 +372,9 @@ static int pj_gridinfo_init_ntv2( FILE *fid, PJ_GRIDINFO *gilist ) assert( sizeof(double) == 8 ); if( sizeof(int) != 4 || sizeof(double) != 8 ) { - fprintf( stderr, - "basic types of inappropraiate size in pj_gridinfo_init_ntv2()\n" ); - pj_errno = -38; + pj_log( ctx, PJ_LOG_ERROR, + "basic types of inappropraiate size in pj_gridinfo_init_ntv2()" ); + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -324,7 +383,7 @@ static int pj_gridinfo_init_ntv2( FILE *fid, PJ_GRIDINFO *gilist ) /* -------------------------------------------------------------------- */ if( fread( header, sizeof(header), 1, fid ) != 1 ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -362,13 +421,13 @@ static int pj_gridinfo_init_ntv2( FILE *fid, PJ_GRIDINFO *gilist ) /* -------------------------------------------------------------------- */ if( fread( header, sizeof(header), 1, fid ) != 1 ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } if( strncmp((const char *) header,"SUB_NAME",8) != 0 ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -405,14 +464,13 @@ static int pj_gridinfo_init_ntv2( FILE *fid, PJ_GRIDINFO *gilist ) ct->lim.lam = (int) (fabs(ur.lam-ct->ll.lam)/ct->del.lam + 0.5) + 1; ct->lim.phi = (int) (fabs(ur.phi-ct->ll.phi)/ct->del.phi + 0.5) + 1; - if( getenv("PROJ_DEBUG") != NULL ) - fprintf( stderr, - "NTv2 %s %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)\n", - ct->id, - ct->lim.lam, ct->lim.phi, - ct->ll.lam/3600.0, ct->ll.phi/3600.0, - ur.lam/3600.0, ur.phi/3600.0 ); - + pj_log( ctx, PJ_LOG_DEBUG_MINOR, + "NTv2 %s %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)\n", + ct->id, + ct->lim.lam, ct->lim.phi, + ct->ll.lam/3600.0, ct->ll.phi/3600.0, + ur.lam/3600.0, ur.phi/3600.0 ); + ct->ll.lam *= DEG_TO_RAD/3600.0; ct->ll.phi *= DEG_TO_RAD/3600.0; ct->del.lam *= DEG_TO_RAD/3600.0; @@ -421,11 +479,11 @@ static int pj_gridinfo_init_ntv2( FILE *fid, PJ_GRIDINFO *gilist ) memcpy( &gs_count, header + 8 + 16*10, 4 ); if( gs_count != ct->lim.lam * ct->lim.phi ) { - fprintf( stderr, - "GS_COUNT(%d) does not match expected cells (%dx%d=%d)\n", - gs_count, ct->lim.lam, ct->lim.phi, - ct->lim.lam * ct->lim.phi ); - pj_errno = -38; + pj_log( ctx, PJ_LOG_ERROR, + "GS_COUNT(%d) does not match expected cells (%dx%d=%d)\n", + gs_count, ct->lim.lam, ct->lim.phi, + ct->lim.lam * ct->lim.phi ); + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -476,10 +534,10 @@ static int pj_gridinfo_init_ntv2( FILE *fid, PJ_GRIDINFO *gilist ) if( gp == NULL ) { - if( getenv("PROJ_DEBUG") != NULL ) - fprintf( stderr, "pj_gridinfo_init_ntv2(): " - "failed to find parent %8.8s for %s.\n", - (const char *) header+24, gi->ct->id ); + pj_log( ctx, PJ_LOG_ERROR, + "pj_gridinfo_init_ntv2(): " + "failed to find parent %8.8s for %s.\n", + (const char *) header+24, gi->ct->id ); for( lnk = gp; lnk->next != NULL; lnk = lnk->next ) {} lnk->next = gi; @@ -510,7 +568,7 @@ static int pj_gridinfo_init_ntv2( FILE *fid, PJ_GRIDINFO *gilist ) /* Load an NTv1 style Canadian grid shift file. */ /************************************************************************/ -static int pj_gridinfo_init_ntv1( FILE * fid, PJ_GRIDINFO *gi ) +static int pj_gridinfo_init_ntv1( projCtx ctx, FILE * fid, PJ_GRIDINFO *gi ) { unsigned char header[176]; @@ -521,9 +579,9 @@ static int pj_gridinfo_init_ntv1( FILE * fid, PJ_GRIDINFO *gi ) assert( sizeof(double) == 8 ); if( sizeof(int) != 4 || sizeof(double) != 8 ) { - fprintf( stderr, - "basic types of inappropraiate size in nad_load_ntv1()\n" ); - pj_errno = -38; + pj_log( ctx, PJ_LOG_ERROR, + "basic types of inappropraiate size in nad_load_ntv1()" ); + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -532,7 +590,7 @@ static int pj_gridinfo_init_ntv1( FILE * fid, PJ_GRIDINFO *gi ) /* -------------------------------------------------------------------- */ if( fread( header, sizeof(header), 1, fid ) != 1 ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -552,8 +610,9 @@ static int pj_gridinfo_init_ntv1( FILE * fid, PJ_GRIDINFO *gi ) if( *((int *) (header+8)) != 12 ) { - pj_errno = -38; - printf("NTv1 grid shift file has wrong record count, corrupt?\n"); + pj_log( ctx, PJ_LOG_ERROR, + "NTv1 grid shift file has wrong record count, corrupt?" ); + pj_ctx_set_errno( ctx, -38 ); return 0; } @@ -572,11 +631,10 @@ static int pj_gridinfo_init_ntv1( FILE * fid, PJ_GRIDINFO *gi ) ct->lim.lam = (int) (fabs(ur.lam-ct->ll.lam)/ct->del.lam + 0.5) + 1; ct->lim.phi = (int) (fabs(ur.phi-ct->ll.phi)/ct->del.phi + 0.5) + 1; - if( getenv("PROJ_DEBUG") != NULL ) - fprintf( stderr, - "NTv1 %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)\n", - ct->lim.lam, ct->lim.phi, - ct->ll.lam, ct->ll.phi, ur.lam, ur.phi ); + pj_log( ctx, PJ_LOG_DEBUG_MINOR, + "NTv1 %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)", + ct->lim.lam, ct->lim.phi, + ct->ll.lam, ct->ll.phi, ur.lam, ur.phi ); ct->ll.lam *= DEG_TO_RAD; ct->ll.phi *= DEG_TO_RAD; @@ -591,6 +649,109 @@ static int pj_gridinfo_init_ntv1( FILE * fid, PJ_GRIDINFO *gi ) return 1; } +/************************************************************************/ +/* pj_gridinfo_init_gtx() */ +/* */ +/* Load a NOAA .gtx vertical datum shift file. */ +/************************************************************************/ + +static int pj_gridinfo_init_gtx( projCtx ctx, FILE * fid, PJ_GRIDINFO *gi ) + +{ + unsigned char header[40]; + struct CTABLE *ct; + double xorigin,yorigin,xstep,ystep; + int rows, columns; + + assert( sizeof(int) == 4 ); + assert( sizeof(double) == 8 ); + if( sizeof(int) != 4 || sizeof(double) != 8 ) + { + pj_log( ctx, PJ_LOG_ERROR, + "basic types of inappropraiate size in nad_load_gtx()" ); + pj_ctx_set_errno( ctx, -38 ); + return 0; + } + +/* -------------------------------------------------------------------- */ +/* Read the header. */ +/* -------------------------------------------------------------------- */ + if( fread( header, sizeof(header), 1, fid ) != 1 ) + { + pj_ctx_set_errno( ctx, -38 ); + return 0; + } + +/* -------------------------------------------------------------------- */ +/* Regularize fields of interest and extract. */ +/* -------------------------------------------------------------------- */ + if( IS_LSB ) + { + swap_words( header+0, 8, 4 ); + swap_words( header+32, 4, 2 ); + } + + memcpy( &yorigin, header+0, 8 ); + memcpy( &xorigin, header+8, 8 ); + memcpy( &ystep, header+16, 8 ); + memcpy( &xstep, header+24, 8 ); + + memcpy( &rows, header+32, 4 ); + memcpy( &columns, header+36, 4 ); + + if( xorigin < -360 || xorigin > 360 + || yorigin < -90 || yorigin > 90 ) + { + pj_log( ctx, PJ_LOG_ERROR, + "gtx file header has invalid extents, corrupt?"); + pj_ctx_set_errno( ctx, -38 ); + return 0; + } + +/* -------------------------------------------------------------------- */ +/* Fill in CTABLE structure. */ +/* -------------------------------------------------------------------- */ + ct = (struct CTABLE *) pj_malloc(sizeof(struct CTABLE)); + strcpy( ct->id, "GTX Vertical Grid Shift File" ); + + ct->ll.lam = xorigin; + ct->ll.phi = yorigin; + ct->del.lam = xstep; + ct->del.phi = ystep; + ct->lim.lam = columns; + ct->lim.phi = rows; + + /* some GTX files come in 0-360 and we shift them back into the + expected -180 to 180 range if possible. This does not solve + problems with grids spanning the dateline. */ + if( ct->ll.lam >= 180.0 ) + ct->ll.lam -= 360.0; + + if( ct->ll.lam >= 0.0 && ct->ll.lam + ct->del.lam * ct->lim.lam > 180.0 ) + { + pj_log( ctx, PJ_LOG_DEBUG_MAJOR, + "This GTX spans the dateline! This will cause problems." ); + } + + pj_log( ctx, PJ_LOG_DEBUG_MINOR, + "GTX %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)", + ct->lim.lam, ct->lim.phi, + ct->ll.lam, ct->ll.phi, + ct->ll.lam + (columns-1)*xstep, ct->ll.phi + (rows-1)*ystep); + + ct->ll.lam *= DEG_TO_RAD; + ct->ll.phi *= DEG_TO_RAD; + ct->del.lam *= DEG_TO_RAD; + ct->del.phi *= DEG_TO_RAD; + ct->cvs = NULL; + + gi->ct = ct; + gi->grid_offset = 40; + gi->format = "gtx"; + + return 1; +} + /************************************************************************/ /* pj_gridinfo_init() */ /* */ @@ -600,7 +761,7 @@ static int pj_gridinfo_init_ntv1( FILE * fid, PJ_GRIDINFO *gi ) /* applications. */ /************************************************************************/ -PJ_GRIDINFO *pj_gridinfo_init( const char *gridname ) +PJ_GRIDINFO *pj_gridinfo_init( projCtx ctx, const char *gridname ) { char fname[MAX_PATH_FILENAME+1]; @@ -609,6 +770,7 @@ PJ_GRIDINFO *pj_gridinfo_init( const char *gridname ) char header[160]; errno = pj_errno = 0; + ctx->last_errno = 0; /* -------------------------------------------------------------------- */ /* Initialize a GRIDINFO with stub info we would use if it */ @@ -628,8 +790,8 @@ PJ_GRIDINFO *pj_gridinfo_init( const char *gridname ) /* Open the file using the usual search rules. */ /* -------------------------------------------------------------------- */ strcpy(fname, gridname); - if (!(fp = pj_open_lib(fname, "rb"))) { - pj_errno = errno; + if (!(fp = pj_open_lib(ctx, fname, "rb"))) { + ctx->last_errno = 0; /* don't treat as a persistent error */ return gilist; } @@ -641,7 +803,7 @@ PJ_GRIDINFO *pj_gridinfo_init( const char *gridname ) if( fread( header, sizeof(header), 1, fp ) != 1 ) { fclose( fp ); - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); return gilist; } @@ -654,30 +816,52 @@ PJ_GRIDINFO *pj_gridinfo_init( const char *gridname ) && strncmp(header + 96, "W GRID", 6) == 0 && strncmp(header + 144, "TO NAD83 ", 16) == 0 ) { - pj_gridinfo_init_ntv1( fp, gilist ); + pj_gridinfo_init_ntv1( ctx, fp, gilist ); } else if( strncmp(header + 0, "NUM_OREC", 8) == 0 && strncmp(header + 48, "GS_TYPE", 7) == 0 ) { - pj_gridinfo_init_ntv2( fp, gilist ); + pj_gridinfo_init_ntv2( ctx, fp, gilist ); } - + + else if( strlen(gridname) > 4 + && (strcmp(gridname+strlen(gridname)-3,"gtx") == 0 + || strcmp(gridname+strlen(gridname)-3,"GTX") == 0) ) + { + pj_gridinfo_init_gtx( ctx, fp, gilist ); + } + + else if( strncmp(header+0,"CTABLE V2",9) == 0 ) + { + struct CTABLE *ct = nad_ctable2_init( ctx, fp ); + + gilist->format = "ctable2"; + gilist->ct = ct; + + pj_log( ctx, PJ_LOG_DEBUG_MAJOR, + "Ctable2 %s %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)\n", + ct->id, + ct->lim.lam, ct->lim.phi, + ct->ll.lam * RAD_TO_DEG, ct->ll.phi * RAD_TO_DEG, + (ct->ll.lam + (ct->lim.lam-1)*ct->del.lam) * RAD_TO_DEG, + (ct->ll.phi + (ct->lim.phi-1)*ct->del.phi) * RAD_TO_DEG ); + } + else { - struct CTABLE *ct = nad_ctable_init( fp ); + struct CTABLE *ct = nad_ctable_init( ctx, fp ); gilist->format = "ctable"; gilist->ct = ct; - if( getenv("PROJ_DEBUG") != NULL ) - fprintf( stderr, - "Ctable %s %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)\n", - ct->id, - ct->lim.lam, ct->lim.phi, - ct->ll.lam * RAD_TO_DEG, ct->ll.phi * RAD_TO_DEG, - (ct->ll.lam + (ct->lim.lam-1)*ct->del.lam) * RAD_TO_DEG, - (ct->ll.phi + (ct->lim.phi-1)*ct->del.phi) * RAD_TO_DEG ); + pj_log( ctx, PJ_LOG_DEBUG_MAJOR, + "Ctable %s %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)\n", + ct->id, + ct->lim.lam, ct->lim.phi, + ct->ll.lam * RAD_TO_DEG, ct->ll.phi * RAD_TO_DEG, + (ct->ll.lam + (ct->lim.lam-1)*ct->del.lam) * RAD_TO_DEG, + (ct->ll.phi + (ct->lim.phi-1)*ct->del.phi) * RAD_TO_DEG ); } fclose(fp); diff --git a/src/pj_gridlist.c b/src/pj_gridlist.c index 1d141641d..dae859aea 100644 --- a/src/pj_gridlist.c +++ b/src/pj_gridlist.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_gridlist.c 1634 2009-09-24 02:40:46Z warmerdam $ + * $Id: pj_gridlist.c 1990 2011-03-28 18:06:43Z warmerdam $ * * Project: PROJ.4 * Purpose: Code to manage the list of currently loaded (cached) PJ_GRIDINFOs @@ -46,13 +46,6 @@ static PJ_GRIDINFO *grid_list = NULL; -/* used only by pj_load_nadgrids() and pj_deallocate_grids() */ - -static int last_nadgrids_max = 0; -static int last_nadgrids_count = 0; -static PJ_GRIDINFO **last_nadgrids_list = NULL; -static char *last_nadgrids = NULL; - /************************************************************************/ /* pj_deallocate_grids() */ /* */ @@ -68,19 +61,7 @@ void pj_deallocate_grids() grid_list = grid_list->next; item->next = NULL; - pj_gridinfo_free( item ); - } - - if( last_nadgrids != NULL ) - { - pj_dalloc( last_nadgrids ); - last_nadgrids = NULL; - - pj_dalloc( last_nadgrids_list ); - last_nadgrids_list = NULL; - - last_nadgrids_count = 0; - last_nadgrids_max = 0; + pj_gridinfo_free( pj_get_default_ctx(), item ); } } @@ -91,10 +72,14 @@ void pj_deallocate_grids() /* last_nadgrids_list. */ /************************************************************************/ -static int pj_gridlist_merge_gridfile( const char *gridname ) +static int pj_gridlist_merge_gridfile( projCtx ctx, + const char *gridname, + PJ_GRIDINFO ***p_gridlist, + int *p_gridcount, + int *p_gridmax ) { - int i, got_match=0; + int got_match=0; PJ_GRIDINFO *this_grid, *tail = NULL; /* -------------------------------------------------------------------- */ @@ -113,26 +98,26 @@ static int pj_gridlist_merge_gridfile( const char *gridname ) return 0; /* do we need to grow the list? */ - if( last_nadgrids_count >= last_nadgrids_max - 2 ) + if( *p_gridcount >= *p_gridmax - 2 ) { PJ_GRIDINFO **new_list; - int new_max = last_nadgrids_max + 20; + int new_max = *p_gridmax + 20; new_list = (PJ_GRIDINFO **) pj_malloc(sizeof(void*) * new_max); - if( last_nadgrids_list != NULL ) + if( *p_gridlist != NULL ) { - memcpy( new_list, last_nadgrids_list, - sizeof(void*) * last_nadgrids_max ); - pj_dalloc( last_nadgrids_list ); + memcpy( new_list, *p_gridlist, + sizeof(void*) * (*p_gridmax) ); + pj_dalloc( *p_gridlist ); } - last_nadgrids_list = new_list; - last_nadgrids_max = new_max; + *p_gridlist = new_list; + *p_gridmax = new_max; } /* add to the list */ - last_nadgrids_list[last_nadgrids_count++] = this_grid; - last_nadgrids_list[last_nadgrids_count] = NULL; + (*p_gridlist)[(*p_gridcount)++] = this_grid; + (*p_gridlist)[*p_gridcount] = NULL; } tail = this_grid; @@ -144,7 +129,7 @@ static int pj_gridlist_merge_gridfile( const char *gridname ) /* -------------------------------------------------------------------- */ /* Try to load the named grid. */ /* -------------------------------------------------------------------- */ - this_grid = pj_gridinfo_init( gridname ); + this_grid = pj_gridinfo_init( ctx, gridname ); if( this_grid == NULL ) { @@ -161,7 +146,8 @@ static int pj_gridlist_merge_gridfile( const char *gridname ) /* -------------------------------------------------------------------- */ /* Recurse to add the grid now that it is loaded. */ /* -------------------------------------------------------------------- */ - return pj_gridlist_merge_gridfile( gridname ); + return pj_gridlist_merge_gridfile( ctx, gridname, p_gridlist, + p_gridcount, p_gridmax ); } /************************************************************************/ @@ -174,39 +160,18 @@ static int pj_gridlist_merge_gridfile( const char *gridname ) /* the cost of building the list of tables each time. */ /************************************************************************/ -PJ_GRIDINFO **pj_gridlist_from_nadgrids( const char *nadgrids, int *grid_count) +PJ_GRIDINFO **pj_gridlist_from_nadgrids( projCtx ctx, const char *nadgrids, + int *grid_count) { const char *s; + PJ_GRIDINFO **gridlist = NULL; + int grid_max = 0; pj_errno = 0; *grid_count = 0; pj_acquire_lock(); - if( last_nadgrids != NULL - && strcmp(nadgrids,last_nadgrids) == 0 ) - { - PJ_GRIDINFO **ret = last_nadgrids_list; - *grid_count = last_nadgrids_count; - if( *grid_count == 0 ) - pj_errno = -38; - - pj_release_lock(); - return ret; - } - -/* -------------------------------------------------------------------- */ -/* Free old one, if any, and make space for new list. */ -/* -------------------------------------------------------------------- */ - if( last_nadgrids != NULL ) - { - pj_dalloc(last_nadgrids); - } - - last_nadgrids = (char *) pj_malloc(strlen(nadgrids)+1); - strcpy( last_nadgrids, nadgrids ); - - last_nadgrids_count = 0; /* -------------------------------------------------------------------- */ /* Loop processing names out of nadgrids one at a time. */ @@ -227,9 +192,9 @@ PJ_GRIDINFO **pj_gridlist_from_nadgrids( const char *nadgrids, int *grid_count) s[end_char] != '\0' && s[end_char] != ','; end_char++ ) {} - if( end_char > sizeof(name) ) + if( end_char >= sizeof(name) ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); pj_release_lock(); return NULL; } @@ -241,9 +206,11 @@ PJ_GRIDINFO **pj_gridlist_from_nadgrids( const char *nadgrids, int *grid_count) if( *s == ',' ) s++; - if( !pj_gridlist_merge_gridfile( name ) && required ) + if( !pj_gridlist_merge_gridfile( ctx, name, &gridlist, grid_count, + &grid_max) + && required ) { - pj_errno = -38; + pj_ctx_set_errno( ctx, -38 ); pj_release_lock(); return NULL; } @@ -251,16 +218,7 @@ PJ_GRIDINFO **pj_gridlist_from_nadgrids( const char *nadgrids, int *grid_count) pj_errno = 0; } - if( last_nadgrids_count > 0 ) - { - PJ_GRIDINFO **ret = last_nadgrids_list; - *grid_count = last_nadgrids_count; - pj_release_lock(); - return ret; - } - else - { - pj_release_lock(); - return NULL; - } + pj_release_lock(); + + return gridlist; } diff --git a/src/pj_init.c b/src/pj_init.c index 4c284b00f..db97ab2c5 100644 --- a/src/pj_init.c +++ b/src/pj_init.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_init.c,v 1.19 2007/11/26 00:21:59 fwarmerdam Exp $ + * $Id: pj_init.c 2117 2011-11-14 00:22:03Z warmerdam $ * * Project: PROJ.4 * Purpose: Initialize projection object from string definition. Includes @@ -27,70 +27,22 @@ * 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. - ****************************************************************************** - * - * $Log: pj_init.c,v $ - * Revision 1.19 2007/11/26 00:21:59 fwarmerdam - * Modified PJ structure to hold a_orig, es_orig, ellipsoid definition before - * adjustment for spherical projections. - * Modified pj_datum_transform() to use the original ellipsoid parameters, - * not the ones adjusted for spherical projections. - * Modified pj_datum_transform() to not attempt any datum shift via - * geocentric coordinates if the source *or* destination are raw ellipsoids - * (ie. PJD_UNKNOWN). All per PROJ bug #1602, GDAL bug #2025. - * - * Revision 1.18 2006/10/12 21:04:39 fwarmerdam - * Added experimental +lon_wrap argument to set a "center point" for - * longitude wrapping of longitude values coming out of pj_transform(). - * - * Revision 1.17 2006/09/22 23:06:24 fwarmerdam - * remote static start variable in pj_init (bug 1283) - * - * Revision 1.16 2004/09/08 15:23:37 warmerda - * added new error for unknown prime meridians - * - * Revision 1.15 2004/05/05 01:45:41 warmerda - * Made sword even longer. - * - * Revision 1.14 2004/05/05 01:45:00 warmerda - * Make sword buffer larger so long +towgs84 parameters don't get split. - * - * Revision 1.13 2003/09/16 03:46:21 warmerda - * dont use default ellps if any earth model info is set: bug 386 - * - * Revision 1.12 2003/08/21 02:15:59 warmerda - * improve MAX_ARG checking - * - * Revision 1.11 2003/06/09 21:23:16 warmerda - * ensure start is initialized at very beginning of pj_init() - * - * Revision 1.10 2003/03/16 16:38:24 warmerda - * Modified get_opt() to terminate reading the definition when a new - * definition (a word starting with '<') is encountered, in addition to when - * the definition terminator '<>' is encountered, so that unterminated - * definitions like those in the distributed esri file will work properly. - * http://bugzilla.remotesensing.org/show_bug.cgi?id=302 - * - * Revision 1.9 2002/12/14 20:15:02 warmerda - * added geocentric support, updated headers - * - */ + *****************************************************************************/ #define PJ_LIB__ #include #include #include #include +#include -PJ_CVSID("$Id: pj_init.c,v 1.19 2007/11/26 00:21:59 fwarmerdam Exp $"); - -extern FILE *pj_open_lib(char *, char *); +PJ_CVSID("$Id: pj_init.c 2117 2011-11-14 00:22:03Z warmerdam $"); /************************************************************************/ /* get_opt() */ /************************************************************************/ static paralist * -get_opt(paralist **start, FILE *fid, char *name, paralist *next) { +get_opt(projCtx ctx, paralist **start, FILE *fid, char *name, paralist *next) { char sword[302], *word = sword+1; int first = 1, len, c; @@ -107,16 +59,16 @@ get_opt(paralist **start, FILE *fid, char *name, paralist *next) { while((c = fgetc(fid)) != EOF && c != '\n') ; break; } - } else if (!first && !pj_param(*start, sword).i) { + } else if (!first && !pj_param(ctx, *start, sword).i) { /* don't default ellipse if datum, ellps or any earth model information is set. */ if( strncmp(word,"ellps=",6) != 0 - || (!pj_param(*start, "tdatum").i - && !pj_param(*start, "tellps").i - && !pj_param(*start, "ta").i - && !pj_param(*start, "tb").i - && !pj_param(*start, "trf").i - && !pj_param(*start, "tf").i) ) + || (!pj_param(ctx, *start, "tdatum").i + && !pj_param(ctx, *start, "tellps").i + && !pj_param(ctx, *start, "ta").i + && !pj_param(ctx, *start, "tb").i + && !pj_param(ctx, *start, "trf").i + && !pj_param(ctx, *start, "tf").i) ) { next = next->next = pj_mkparam(word); } @@ -132,40 +84,70 @@ get_opt(paralist **start, FILE *fid, char *name, paralist *next) { /* get_defaults() */ /************************************************************************/ static paralist * -get_defaults(paralist **start, paralist *next, char *name) { - FILE *fid; - - if (fid = pj_open_lib("proj_def.dat", "rt")) { - next = get_opt(start, fid, "general", next); - rewind(fid); - next = get_opt(start, fid, name, next); - (void)fclose(fid); - } - if (errno) - errno = 0; /* don't care if can't open file */ - return next; +get_defaults(projCtx ctx, paralist **start, paralist *next, char *name) { + FILE *fid; + + if ( (fid = pj_open_lib(ctx,"proj_def.dat", "rt")) != NULL) { + next = get_opt(ctx, start, fid, "general", next); + rewind(fid); + next = get_opt(ctx, start, fid, name, next); + (void)fclose(fid); + } + if (errno) + errno = 0; /* don't care if can't open file */ + ctx->last_errno = 0; + + return next; } /************************************************************************/ /* get_init() */ /************************************************************************/ static paralist * -get_init(paralist **start, paralist *next, char *name) { - char fname[MAX_PATH_FILENAME+ID_TAG_MAX+3], *opt; - FILE *fid; - - (void)strncpy(fname, name, MAX_PATH_FILENAME + ID_TAG_MAX + 1); - if (opt = strrchr(fname, ':')) - *opt++ = '\0'; - else { pj_errno = -3; return(0); } - if (fid = pj_open_lib(fname, "rt")) - next = get_opt(start, fid, opt, next); - else - return(0); - (void)fclose(fid); - if (errno == 25) - errno = 0; /* unknown problem with some sys errno<-25 */ - return next; +get_init(projCtx ctx, paralist **start, paralist *next, char *name) { + char fname[MAX_PATH_FILENAME+ID_TAG_MAX+3], *opt; + FILE *fid; + paralist *init_items = NULL; + const paralist *orig_next = next; + + (void)strncpy(fname, name, MAX_PATH_FILENAME + ID_TAG_MAX + 1); + + /* + ** Search for file/key pair in cache + */ + + init_items = pj_search_initcache( name ); + if( init_items != NULL ) + { + next->next = init_items; + while( next->next != NULL ) + next = next->next; + return next; + } + + /* + ** Otherwise we try to open the file and search for it. + */ + if ((opt = strrchr(fname, ':')) != NULL) + *opt++ = '\0'; + else { pj_ctx_set_errno(ctx,-3); return NULL; } + + if ( (fid = pj_open_lib(ctx,fname, "rt")) != NULL) + next = get_opt(ctx, start, fid, opt, next); + else + return NULL; + (void)fclose(fid); + if (errno == 25) + errno = 0; /* unknown problem with some sys errno<-25 */ + + /* + ** If we seem to have gotten a result, insert it into the + ** init file cache. + */ + if( next != NULL && next != orig_next ) + pj_insert_initcache( name, orig_next->next ); + + return next; } /************************************************************************/ @@ -179,12 +161,18 @@ get_init(paralist **start, paralist *next, char *name) { PJ * pj_init_plus( const char *definition ) +{ + return pj_init_plus_ctx( pj_get_default_ctx(), definition ); +} + +PJ * +pj_init_plus_ctx( projCtx ctx, const char *definition ) { #define MAX_ARG 200 char *argv[MAX_ARG]; char *defn_copy; int argc = 0, i; - PJ *result; + PJ *result; /* make a copy that we can manipulate */ defn_copy = (char *) pj_malloc( strlen(definition)+1 ); @@ -201,7 +189,7 @@ pj_init_plus( const char *definition ) { if( argc+1 == MAX_ARG ) { - pj_errno = -44; + pj_ctx_set_errno( ctx, -44 ); return NULL; } @@ -221,7 +209,7 @@ pj_init_plus( const char *definition ) } /* perform actual initialization */ - result = pj_init( argc, argv ); + result = pj_init_ctx( ctx, argc, argv ); pj_dalloc( defn_copy ); @@ -239,165 +227,238 @@ pj_init_plus( const char *definition ) PJ * pj_init(int argc, char **argv) { - char *s, *name; - paralist *start = NULL; - PJ *(*proj)(PJ *); - paralist *curr; - int i; - PJ *PIN = 0; - - errno = pj_errno = 0; - start = NULL; - - /* put arguments into internal linked list */ - if (argc <= 0) { pj_errno = -1; goto bum_call; } - for (i = 0; i < argc; ++i) - if (i) - curr = curr->next = pj_mkparam(argv[i]); - else - start = curr = pj_mkparam(argv[i]); - if (pj_errno) goto bum_call; - - /* check if +init present */ - if (pj_param(start, "tinit").i) { - paralist *last = curr; - - if (!(curr = get_init(&start, curr, pj_param(start, "sinit").s))) - goto bum_call; - if (curr == last) { pj_errno = -2; goto bum_call; } - } - - /* find projection selection */ - if (!(name = pj_param(start, "sproj").s)) - { pj_errno = -4; goto bum_call; } - for (i = 0; (s = pj_list[i].id) && strcmp(name, s) ; ++i) ; - if (!s) { pj_errno = -5; goto bum_call; } - - /* set defaults, unless inhibited */ - if (!pj_param(start, "bno_defs").i) - curr = get_defaults(&start, curr, name); - proj = (PJ *(*)(PJ *)) pj_list[i].proj; - - /* allocate projection structure */ - if (!(PIN = (*proj)(0))) goto bum_call; - PIN->params = start; - PIN->is_latlong = 0; - PIN->is_geocent = 0; - PIN->long_wrap_center = 0.0; - - /* set datum parameters */ - if (pj_datum_set(start, PIN)) goto bum_call; - - /* set ellipsoid/sphere parameters */ - if (pj_ell_set(start, &PIN->a, &PIN->es)) goto bum_call; - - PIN->a_orig = PIN->a; - PIN->es_orig = PIN->es; - - PIN->e = sqrt(PIN->es); - PIN->ra = 1. / PIN->a; - PIN->one_es = 1. - PIN->es; - if (PIN->one_es == 0.) { pj_errno = -6; goto bum_call; } - PIN->rone_es = 1./PIN->one_es; - - /* Now that we have ellipse information check for WGS84 datum */ - if( PIN->datum_type == PJD_3PARAM - && PIN->datum_params[0] == 0.0 - && PIN->datum_params[1] == 0.0 - && PIN->datum_params[2] == 0.0 - && PIN->a == 6378137.0 - && ABS(PIN->es - 0.006694379990) < 0.000000000050 )/*WGS84/GRS80*/ + return pj_init_ctx( pj_get_default_ctx(), argc, argv ); +} + +PJ * +pj_init_ctx(projCtx ctx, int argc, char **argv) { + char *s, *name; + paralist *start = NULL; + PJ *(*proj)(PJ *); + paralist *curr; + int i; + PJ *PIN = 0; + char *old_locale; + + ctx->last_errno = 0; + start = NULL; + + old_locale = strdup(setlocale(LC_NUMERIC, NULL)); + if( strcmp(old_locale,"C") != 0 ) + setlocale(LC_NUMERIC,"C"); + + /* put arguments into internal linked list */ + if (argc <= 0) { pj_ctx_set_errno( ctx, -1 ); goto bum_call; } + for (i = 0; i < argc; ++i) + if (i) + curr = curr->next = pj_mkparam(argv[i]); + else + start = curr = pj_mkparam(argv[i]); + if (ctx->last_errno) goto bum_call; + + /* check if +init present */ + if (pj_param(ctx, start, "tinit").i) { + paralist *last = curr; + + if (!(curr = get_init(ctx,&start, curr, pj_param(ctx, start, "sinit").s))) + goto bum_call; + if (curr == last) { pj_ctx_set_errno( ctx, -2); goto bum_call; } + } + + /* find projection selection */ + if (!(name = pj_param(ctx, start, "sproj").s)) + { pj_ctx_set_errno( ctx, -4 ); goto bum_call; } + for (i = 0; (s = pj_list[i].id) && strcmp(name, s) ; ++i) ; + if (!s) { pj_ctx_set_errno( ctx, -5 ); goto bum_call; } + + /* set defaults, unless inhibited */ + if (!pj_param(ctx, start, "bno_defs").i) + curr = get_defaults(ctx,&start, curr, name); + proj = (PJ *(*)(PJ *)) pj_list[i].proj; + + /* allocate projection structure */ + if (!(PIN = (*proj)(0))) goto bum_call; + PIN->ctx = ctx; + PIN->params = start; + PIN->is_latlong = 0; + PIN->is_geocent = 0; + PIN->is_long_wrap_set = 0; + PIN->long_wrap_center = 0.0; + strcpy( PIN->axis, "enu" ); + + PIN->gridlist = NULL; + PIN->gridlist_count = 0; + + PIN->vgridlist_geoid = NULL; + PIN->vgridlist_geoid_count = 0; + + /* set datum parameters */ + if (pj_datum_set(ctx, start, PIN)) goto bum_call; + + /* set ellipsoid/sphere parameters */ + if (pj_ell_set(ctx, start, &PIN->a, &PIN->es)) goto bum_call; + + PIN->a_orig = PIN->a; + PIN->es_orig = PIN->es; + + PIN->e = sqrt(PIN->es); + PIN->ra = 1. / PIN->a; + PIN->one_es = 1. - PIN->es; + if (PIN->one_es == 0.) { pj_ctx_set_errno( ctx, -6 ); goto bum_call; } + PIN->rone_es = 1./PIN->one_es; + + /* Now that we have ellipse information check for WGS84 datum */ + if( PIN->datum_type == PJD_3PARAM + && PIN->datum_params[0] == 0.0 + && PIN->datum_params[1] == 0.0 + && PIN->datum_params[2] == 0.0 + && PIN->a == 6378137.0 + && ABS(PIN->es - 0.006694379990) < 0.000000000050 )/*WGS84/GRS80*/ + { + PIN->datum_type = PJD_WGS84; + } + + /* set PIN->geoc coordinate system */ + PIN->geoc = (PIN->es && pj_param(ctx, start, "bgeoc").i); + + /* over-ranging flag */ + PIN->over = pj_param(ctx, start, "bover").i; + + /* vertical datum geoid grids */ + PIN->has_geoid_vgrids = pj_param(ctx, start, "tgeoidgrids").i; + if( PIN->has_geoid_vgrids ) /* we need to mark it as used. */ + pj_param(ctx, start, "sgeoidgrids"); + + /* longitude center for wrapping */ + PIN->is_long_wrap_set = pj_param(ctx, start, "tlon_wrap").i; + if (PIN->is_long_wrap_set) + PIN->long_wrap_center = pj_param(ctx, start, "rlon_wrap").f; + + /* axis orientation */ + if( (pj_param(ctx, start,"saxis").s) != NULL ) + { + static const char *axis_legal = "ewnsud"; + const char *axis_arg = pj_param(ctx, start,"saxis").s; + if( strlen(axis_arg) != 3 ) { - PIN->datum_type = PJD_WGS84; + pj_ctx_set_errno( ctx, PJD_ERR_AXIS ); + goto bum_call; } - - /* set PIN->geoc coordinate system */ - PIN->geoc = (PIN->es && pj_param(start, "bgeoc").i); - - /* over-ranging flag */ - PIN->over = pj_param(start, "bover").i; - - /* longitude center for wrapping */ - PIN->long_wrap_center = pj_param(start, "rlon_wrap").f; - - /* central meridian */ - PIN->lam0=pj_param(start, "rlon_0").f; - - /* central latitude */ - PIN->phi0 = pj_param(start, "rlat_0").f; - - /* false easting and northing */ - PIN->x0 = pj_param(start, "dx_0").f; - PIN->y0 = pj_param(start, "dy_0").f; - - /* general scaling factor */ - if (pj_param(start, "tk_0").i) - PIN->k0 = pj_param(start, "dk_0").f; - else if (pj_param(start, "tk").i) - PIN->k0 = pj_param(start, "dk").f; - else - PIN->k0 = 1.; - if (PIN->k0 <= 0.) { - pj_errno = -31; - goto bum_call; - } - - /* set units */ - s = 0; - if (name = pj_param(start, "sunits").s) { - for (i = 0; (s = pj_units[i].id) && strcmp(name, s) ; ++i) ; - if (!s) { pj_errno = -7; goto bum_call; } - s = pj_units[i].to_meter; - } - if (s || (s = pj_param(start, "sto_meter").s)) { - PIN->to_meter = strtod(s, &s); - if (*s == '/') /* ratio number */ - PIN->to_meter /= strtod(++s, 0); - PIN->fr_meter = 1. / PIN->to_meter; - } else - PIN->to_meter = PIN->fr_meter = 1.; - - /* prime meridian */ - s = 0; - if (name = pj_param(start, "spm").s) { - const char *value = NULL; - char *next_str = NULL; - - for (i = 0; pj_prime_meridians[i].id != NULL; ++i ) + + if( strchr( axis_legal, axis_arg[0] ) == NULL + || strchr( axis_legal, axis_arg[1] ) == NULL + || strchr( axis_legal, axis_arg[2] ) == NULL) + { + pj_ctx_set_errno( ctx, PJD_ERR_AXIS ); + goto bum_call; + } + + /* it would be nice to validate we don't have on axis repeated */ + strcpy( PIN->axis, axis_arg ); + } + + PIN->is_long_wrap_set = pj_param(ctx, start, "tlon_wrap").i; + if (PIN->is_long_wrap_set) + PIN->long_wrap_center = pj_param(ctx, start, "rlon_wrap").f; + + /* central meridian */ + PIN->lam0=pj_param(ctx, start, "rlon_0").f; + + /* central latitude */ + PIN->phi0 = pj_param(ctx, start, "rlat_0").f; + + /* false easting and northing */ + PIN->x0 = pj_param(ctx, start, "dx_0").f; + PIN->y0 = pj_param(ctx, start, "dy_0").f; + + /* general scaling factor */ + if (pj_param(ctx, start, "tk_0").i) + PIN->k0 = pj_param(ctx, start, "dk_0").f; + else if (pj_param(ctx, start, "tk").i) + PIN->k0 = pj_param(ctx, start, "dk").f; + else + PIN->k0 = 1.; + if (PIN->k0 <= 0.) { + pj_ctx_set_errno( ctx, -31 ); + goto bum_call; + } + + /* set units */ + s = 0; + if ((name = pj_param(ctx, start, "sunits").s) != NULL) { + for (i = 0; (s = pj_units[i].id) && strcmp(name, s) ; ++i) ; + if (!s) { pj_ctx_set_errno( ctx, -7 ); goto bum_call; } + s = pj_units[i].to_meter; + } + if (s || (s = pj_param(ctx, start, "sto_meter").s)) { + PIN->to_meter = strtod(s, &s); + if (*s == '/') /* ratio number */ + PIN->to_meter /= strtod(++s, 0); + PIN->fr_meter = 1. / PIN->to_meter; + } else + PIN->to_meter = PIN->fr_meter = 1.; + + /* set vertical units */ + s = 0; + if ((name = pj_param(ctx, start, "svunits").s) != NULL) { + for (i = 0; (s = pj_units[i].id) && strcmp(name, s) ; ++i) ; + if (!s) { pj_ctx_set_errno( ctx, -7 ); goto bum_call; } + s = pj_units[i].to_meter; + } + if (s || (s = pj_param(ctx, start, "svto_meter").s)) { + PIN->vto_meter = strtod(s, &s); + if (*s == '/') /* ratio number */ + PIN->vto_meter /= strtod(++s, 0); + PIN->vfr_meter = 1. / PIN->vto_meter; + } else { + PIN->vto_meter = PIN->to_meter; + PIN->vfr_meter = PIN->fr_meter; + } + + /* prime meridian */ + s = 0; + if ((name = pj_param(ctx, start, "spm").s) != NULL) { + const char *value = NULL; + char *next_str = NULL; + + for (i = 0; pj_prime_meridians[i].id != NULL; ++i ) + { + if( strcmp(name,pj_prime_meridians[i].id) == 0 ) { - if( strcmp(name,pj_prime_meridians[i].id) == 0 ) - { - value = pj_prime_meridians[i].defn; - break; - } + value = pj_prime_meridians[i].defn; + break; } + } - if( value == NULL - && (dmstor(name,&next_str) != 0.0 || *name == '0') - && *next_str == '\0' ) - value = name; - - if (!value) { pj_errno = -46; goto bum_call; } - PIN->from_greenwich = dmstor(value,NULL); - } + if( value == NULL + && (dmstor_ctx(ctx,name,&next_str) != 0.0 || *name == '0') + && *next_str == '\0' ) + value = name; + + if (!value) { pj_ctx_set_errno( ctx, -46 ); goto bum_call; } + PIN->from_greenwich = dmstor_ctx(ctx,value,NULL); + } + else + PIN->from_greenwich = 0.0; + + /* projection specific initialization */ + if (!(PIN = (*proj)(PIN)) || ctx->last_errno) { + bum_call: /* cleanup error return */ + if (PIN) + pj_free(PIN); else - PIN->from_greenwich = 0.0; - - /* projection specific initialization */ - if (!(PIN = (*proj)(PIN)) || errno || pj_errno) { -bum_call: /* cleanup error return */ - if (!pj_errno) - pj_errno = errno; - if (PIN) - pj_free(PIN); - else - for ( ; start; start = curr) { - curr = start->next; - pj_dalloc(start); - } - PIN = 0; - } - return PIN; + for ( ; start; start = curr) { + curr = start->next; + pj_dalloc(start); + } + PIN = 0; + } + + if( strcmp(old_locale,"C") != 0 ) + setlocale(LC_NUMERIC,old_locale); + free( old_locale ); + + return PIN; } /************************************************************************/ @@ -412,18 +473,22 @@ pj_init(int argc, char **argv) { void pj_free(PJ *P) { - if (P) { - paralist *t = P->params, *n; - - /* free parameter list elements */ - for (t = P->params; t; t = n) { - n = t->next; - pj_dalloc(t); - } - - /* free projection parameters */ - P->pfree(P); - } + if (P) { + paralist *t = P->params, *n; + + /* free parameter list elements */ + for (t = P->params; t; t = n) { + n = t->next; + pj_dalloc(t); + } + + /* free array of grid pointers if we have one */ + if( P->gridlist != NULL ) + pj_dalloc( P->gridlist ); + + /* free projection parameters */ + P->pfree(P); + } } diff --git a/src/pj_initcache.c b/src/pj_initcache.c index 5dd46fad8..71036f23a 100644 --- a/src/pj_initcache.c +++ b/src/pj_initcache.c @@ -75,34 +75,34 @@ paralist *pj_clone_paralist( const paralist *list) void pj_clear_initcache() { - if( cache_alloc > 0 ) - { - int i; + if( cache_alloc > 0 ) + { + int i; - pj_acquire_lock(); + pj_acquire_lock(); - for( i = 0; i < cache_count; i++ ) - { - paralist *n, *t = cache_paralist[i]; + for( i = 0; i < cache_count; i++ ) + { + paralist *n, *t = cache_paralist[i]; - pj_dalloc( cache_key[i] ); - - /* free parameter list elements */ - for (; t != NULL; t = n) { - n = t->next; - pj_dalloc(t); - } - } - - pj_dalloc( cache_key ); - pj_dalloc( cache_paralist ); - cache_count = 0; - cache_alloc= 0; - cache_key = NULL; - cache_paralist = NULL; - - pj_release_lock(); - } + pj_dalloc( cache_key[i] ); + + /* free parameter list elements */ + for (; t != NULL; t = n) { + n = t->next; + pj_dalloc(t); + } + } + + pj_dalloc( cache_key ); + pj_dalloc( cache_paralist ); + cache_count = 0; + cache_alloc= 0; + cache_key = NULL; + cache_paralist = NULL; + + pj_release_lock(); + } } /************************************************************************/ @@ -114,22 +114,22 @@ void pj_clear_initcache() paralist *pj_search_initcache( const char *filekey ) { - int i; - paralist *result = NULL; + int i; + paralist *result = NULL; - pj_acquire_lock(); + pj_acquire_lock(); - for( i = 0; result == NULL && i < cache_count; i++) + for( i = 0; result == NULL && i < cache_count; i++) { - if( strcmp(filekey,cache_key[i]) == 0 ) + if( strcmp(filekey,cache_key[i]) == 0 ) { - result = pj_clone_paralist( cache_paralist[i] ); + result = pj_clone_paralist( cache_paralist[i] ); } } - pj_release_lock(); + pj_release_lock(); - return result; + return result; } /************************************************************************/ @@ -141,41 +141,41 @@ paralist *pj_search_initcache( const char *filekey ) void pj_insert_initcache( const char *filekey, const paralist *list ) { - pj_acquire_lock(); + pj_acquire_lock(); - /* - ** Grow list if required. - */ - if( cache_count == cache_alloc ) + /* + ** Grow list if required. + */ + if( cache_count == cache_alloc ) { - char **cache_key_new; - paralist **cache_paralist_new; - - cache_alloc = cache_alloc * 2 + 15; - - cache_key_new = (char **) pj_malloc(sizeof(char*) * cache_alloc); - memcpy( cache_key, cache_key_new, sizeof(char*) * cache_count); - pj_dalloc( cache_key ); - cache_key = cache_key_new; - - cache_paralist_new = (paralist **) - pj_malloc(sizeof(paralist*) * cache_alloc); - memcpy( cache_paralist_new, cache_paralist, - sizeof(paralist*) * cache_count ); - pj_dalloc( cache_paralist ); - cache_paralist = cache_paralist_new; + char **cache_key_new; + paralist **cache_paralist_new; + + cache_alloc = cache_alloc * 2 + 15; + + cache_key_new = (char **) pj_malloc(sizeof(char*) * cache_alloc); + memcpy( cache_key_new, cache_key, sizeof(char*) * cache_count); + pj_dalloc( cache_key ); + cache_key = cache_key_new; + + cache_paralist_new = (paralist **) + pj_malloc(sizeof(paralist*) * cache_alloc); + memcpy( cache_paralist_new, cache_paralist, + sizeof(paralist*) * cache_count ); + pj_dalloc( cache_paralist ); + cache_paralist = cache_paralist_new; } - /* - ** Duplicate the filekey and paralist, and insert in cache. - */ - cache_key[cache_count] = (char *) pj_malloc(strlen(filekey)+1); - strcpy( cache_key[cache_count], filekey ); + /* + ** Duplicate the filekey and paralist, and insert in cache. + */ + cache_key[cache_count] = (char *) pj_malloc(strlen(filekey)+1); + strcpy( cache_key[cache_count], filekey ); - cache_paralist[cache_count] = pj_clone_paralist( list ); + cache_paralist[cache_count] = pj_clone_paralist( list ); - cache_count++; + cache_count++; - pj_release_lock(); + pj_release_lock(); } diff --git a/src/pj_inv.c b/src/pj_inv.c index ee2b44f83..a418ccd46 100644 --- a/src/pj_inv.c +++ b/src/pj_inv.c @@ -10,13 +10,17 @@ pj_inv(XY xy, PJ *P) { /* can't do as much preliminary checking as with forward */ if (xy.x == HUGE_VAL || xy.y == HUGE_VAL) { lp.lam = lp.phi = HUGE_VAL; - pj_errno = -15; + pj_ctx_set_errno( P->ctx, -15); + return lp; } + errno = pj_errno = 0; + P->ctx->last_errno = 0; + xy.x = (xy.x * P->to_meter - P->x0) * P->ra; /* descale and de-offset */ xy.y = (xy.y * P->to_meter - P->y0) * P->ra; lp = (*P->inv)(xy, P); /* inverse project */ - if (pj_errno || (pj_errno = errno)) + if (P->ctx->last_errno ) lp.lam = lp.phi = HUGE_VAL; else { lp.lam += P->lam0; /* reduce from del lp.lam */ diff --git a/src/pj_list.h b/src/pj_list.h index b965cc712..89e9e7aa7 100644 --- a/src/pj_list.h +++ b/src/pj_list.h @@ -32,6 +32,7 @@ PROJ_HEAD(eck6, "Eckert VI") PROJ_HEAD(eqc, "Equidistant Cylindrical (Plate Caree)") PROJ_HEAD(eqdc, "Equidistant Conic") PROJ_HEAD(euler, "Euler") +PROJ_HEAD(etmerc, "Extended Transverse Mercator" ) PROJ_HEAD(fahey, "Fahey") PROJ_HEAD(fouc, "Foucaut") PROJ_HEAD(fouc_s, "Foucaut Sinusoidal") @@ -46,6 +47,9 @@ PROJ_HEAD(gs48, "Mod. Stererographics of 48 U.S.") PROJ_HEAD(gs50, "Mod. Stererographics of 50 U.S.") PROJ_HEAD(hammer, "Hammer & Eckert-Greifendorff") PROJ_HEAD(hatano, "Hatano Asymmetrical Equal Area") +PROJ_HEAD(healpix, "HEALPix") +PROJ_HEAD(rhealpix, "rHEALPix") +PROJ_HEAD(igh, "Interrupted Goode Homolosine") PROJ_HEAD(imw_p, "Internation Map of the World Polyconic") PROJ_HEAD(kav5, "Kavraisky V") PROJ_HEAD(kav7, "Kavraisky VII") diff --git a/src/pj_log.c b/src/pj_log.c new file mode 100644 index 000000000..630a3cfed --- /dev/null +++ b/src/pj_log.c @@ -0,0 +1,73 @@ +/****************************************************************************** + * $Id$ + * + * Project: PROJ.4 + * Purpose: Implementation of pj_log() function. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 2010, 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 + +PJ_CVSID("$Id$"); + +/************************************************************************/ +/* pj_stderr_logger() */ +/************************************************************************/ + +void pj_stderr_logger( void *app_data, int level, const char *msg ) + +{ + fprintf( stderr, "%s\n", msg ); +} + +/************************************************************************/ +/* pj_log() */ +/************************************************************************/ + +void pj_log( projCtx ctx, int level, const char *fmt, ... ) + +{ + va_list args; + char *msg_buf; + + if( level > ctx->debug_level ) + return; + + msg_buf = (char *) malloc(100000); + if( msg_buf == NULL ) + return; + + va_start( args, fmt ); + + /* we should use vsnprintf where available once we add configure detect.*/ + vsprintf( msg_buf, fmt, args ); + + va_end( args ); + + ctx->logger( ctx->app_data, level, msg_buf ); + + free( msg_buf ); +} diff --git a/src/pj_malloc.c b/src/pj_malloc.c index b6400ebaf..80443a2bb 100644 --- a/src/pj_malloc.c +++ b/src/pj_malloc.c @@ -7,12 +7,14 @@ void * pj_malloc(size_t size) { -// Currently, pj_malloc is a hack to solve an errno problem. -// The problem is described in more details at -// https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=86420. -// It seems, that pj_init and similar functions incorrectly -// (under debian/glibs-2.3.2) assume that pj_malloc resets -// errno after success. pj_malloc tries to mimic this. +/* +/ Currently, pj_malloc is a hack to solve an errno problem. +/ The problem is described in more details at +/ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=86420. +/ It seems, that pj_init and similar functions incorrectly +/ (under debian/glibs-2.3.2) assume that pj_malloc resets +/ errno after success. pj_malloc tries to mimic this. +*/ int old_errno = errno; void *res = malloc(size); if ( res && !old_errno ) diff --git a/src/pj_mlfn.c b/src/pj_mlfn.c index afd18b196..aeab61178 100644 --- a/src/pj_mlfn.c +++ b/src/pj_mlfn.c @@ -23,7 +23,7 @@ pj_enfn(double es) { double t, *en; - if (en = (double *)pj_malloc(EN_SIZE * sizeof(double))) { + if ((en = (double *)pj_malloc(EN_SIZE * sizeof(double))) != NULL) { en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08))); en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08))); en[2] = (t = es * es) * (C44 - es * (C46 + es * C48)); @@ -40,7 +40,7 @@ pj_mlfn(double phi, double sphi, double cphi, double *en) { + sphi*(en[3] + sphi*en[4])))); } double -pj_inv_mlfn(double arg, double es, double *en) { +pj_inv_mlfn(projCtx ctx, double arg, double es, double *en) { double s, t, phi, k = 1./(1.-es); int i; @@ -52,6 +52,6 @@ pj_inv_mlfn(double arg, double es, double *en) { if (fabs(t) < EPS) return phi; } - pj_errno = -17; + pj_ctx_set_errno( ctx, -17 ); return phi; } diff --git a/src/pj_mutex.c b/src/pj_mutex.c index 3399ac125..39cedbc41 100644 --- a/src/pj_mutex.c +++ b/src/pj_mutex.c @@ -37,8 +37,10 @@ PJ_CVSID("$Id: pj_transform.c 1504 2009-01-06 02:11:57Z warmerdam $"); #include #endif -#ifdef _WIN32 +/* on win32 we always use win32 mutexes, even if pthreads are available */ +#if defined(_WIN32) && !defined(MUTEX_stub) # define MUTEX_win32 +# undef MUTEX_pthread #endif #if !defined(MUTEX_stub) && !defined(MUTEX_pthread) && !defined(MUTEX_win32) @@ -82,15 +84,6 @@ void pj_cleanup_lock() { } -/************************************************************************/ -/* pj_init_lock() */ -/************************************************************************/ - -static void pj_init_lock() - -{ -} - #endif // def MUTEX_stub /************************************************************************/ @@ -103,7 +96,7 @@ static void pj_init_lock() #include "pthread.h" -static pthread_mutex_t core_lock = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t pj_core_lock = PTHREAD_MUTEX_INITIALIZER; /************************************************************************/ /* pj_acquire_lock() */ @@ -113,7 +106,7 @@ static pthread_mutex_t core_lock = PTHREAD_MUTEX_INITIALIZER; void pj_acquire_lock() { - pthread_mutex_lock( &core_lock); + pthread_mutex_lock( &pj_core_lock); } /************************************************************************/ @@ -124,7 +117,7 @@ void pj_acquire_lock() void pj_release_lock() { - pthread_mutex_unlock( &core_lock ); + pthread_mutex_unlock( &pj_core_lock ); } /************************************************************************/ @@ -134,15 +127,6 @@ void pj_cleanup_lock() { } -/************************************************************************/ -/* pj_init_lock() */ -/************************************************************************/ - -static void pj_init_lock() - -{ -} - #endif // def MUTEX_pthread /************************************************************************/ diff --git a/src/pj_open_lib.c b/src/pj_open_lib.c index 157efba70..23e142778 100644 --- a/src/pj_open_lib.c +++ b/src/pj_open_lib.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_open_lib.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: pj_open_lib.c 2130 2011-12-15 01:20:23Z warmerdam $ * * Project: PROJ.4 * Purpose: Implementation of pj_open_lib(), and pj_set_finder(). These @@ -36,7 +36,7 @@ #include #include -PJ_CVSID("$Id: pj_open_lib.c 1504 2009-01-06 02:11:57Z warmerdam $"); +PJ_CVSID("$Id: pj_open_lib.c 2130 2011-12-15 01:20:23Z warmerdam $"); static const char *(*pj_finder)(const char *) = NULL; static int path_count = 0; @@ -99,7 +99,7 @@ void pj_set_searchpath ( int count, const char **path ) /************************************************************************/ FILE * -pj_open_lib(char *name, char *mode) { +pj_open_lib(projCtx ctx, char *name, char *mode) { char fname[MAX_PATH_FILENAME+1]; const char *sysname; FILE *fid; @@ -115,7 +115,7 @@ pj_open_lib(char *name, char *mode) { /* check if ~/name */ if (*name == '~' && strchr(dir_chars,name[1]) ) - if (sysname = getenv("HOME")) { + if ((sysname = getenv("HOME")) != NULL) { (void)strcpy(fname, sysname); fname[n = strlen(fname)] = DIR_CHAR; fname[++n] = '\0'; @@ -145,7 +145,7 @@ pj_open_lib(char *name, char *mode) { } else /* just try it bare bones */ sysname = name; - if (fid = fopen(sysname, mode)) + if ((fid = fopen(sysname, mode)) != NULL) errno = 0; /* If none of those work and we have a search path, try it */ @@ -161,10 +161,13 @@ pj_open_lib(char *name, char *mode) { errno = 0; } - if( getenv( "PROJ_DEBUG" ) != NULL ) - fprintf( stderr, "pj_open_lib(%s): call fopen(%s) - %s\n", - name, sysname, - fid == NULL ? "failed" : "succeeded" ); + if( ctx->last_errno == 0 && errno != 0 ) + pj_ctx_set_errno( ctx, errno ); + + pj_log( ctx, PJ_LOG_DEBUG_MAJOR, + "pj_open_lib(%s): call fopen(%s) - %s\n", + name, sysname, + fid == NULL ? "failed" : "succeeded" ); return(fid); #else diff --git a/src/pj_open_lib.c.orig b/src/pj_open_lib.c.orig deleted file mode 100644 index 3f0f7c865..000000000 --- a/src/pj_open_lib.c.orig +++ /dev/null @@ -1,191 +0,0 @@ -/****************************************************************************** - * $Id: pj_open_lib.c,v 1.9 2007/07/06 14:58:03 fwarmerdam Exp $ - * - * Project: PROJ.4 - * Purpose: Implementation of pj_open_lib(), and pj_set_finder(). These - * provide a standard interface for opening projections support - * data files. - * Author: Gerald Evenden, Frank Warmerdam - * - ****************************************************************************** - * Copyright (c) 1995, Gerald Evenden - * Copyright (c) 2002, 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. - ****************************************************************************** - * - * $Log: pj_open_lib.c,v $ - * Revision 1.9 2007/07/06 14:58:03 fwarmerdam - * improve searchpath clearning with pj_set_searchpath() - * - * Revision 1.8 2007/03/11 17:03:18 fwarmerdam - * support drive letter prefixes on win32 and related fixes (bug 1499) - * - * Revision 1.7 2006/11/17 22:16:30 mloskot - * Uploaded PROJ.4 port for Windows CE. - * - * Revision 1.6 2004/09/16 15:14:01 fwarmerdam - * * src/pj_open_lib.c: added pj_set_searchpath() provided by Eric Miller. - * - * Revision 1.5 2002/12/14 20:15:30 warmerda - * updated headers - * - */ - -#define PJ_LIB__ -#include -#include -#include -#include - -PJ_CVSID("$Id: pj_open_lib.c,v 1.9 2007/07/06 14:58:03 fwarmerdam Exp $"); - -static const char *(*pj_finder)(const char *) = NULL; -static int path_count = 0; -static char **search_path = NULL; -static char * proj_lib_name = -#ifdef PROJ_LIB -PROJ_LIB; -#else -0; -#endif - -/************************************************************************/ -/* pj_set_finder() */ -/************************************************************************/ - -void pj_set_finder( const char *(*new_finder)(const char *) ) - -{ - pj_finder = new_finder; -} - -/************************************************************************/ -/* pj_set_searchpath() */ -/* */ -/* Path control for callers that can't practically provide */ -/* pj_set_finder() style callbacks. Call with (0,NULL) as args */ -/* to clear the searchpath set. */ -/************************************************************************/ - -void pj_set_searchpath ( int count, const char **path ) -{ - int i; - - if (path_count > 0 && search_path != NULL) - { - for (i = 0; i < path_count; i++) - { - pj_dalloc(search_path[i]); - } - pj_dalloc(search_path); - path_count = 0; - search_path = NULL; - } - - if( count > 0 ) - { - search_path = pj_malloc(sizeof *search_path * count); - for (i = 0; i < count; i++) - { - search_path[i] = pj_malloc(strlen(path[i]) + 1); - strcpy(search_path[i], path[i]); - } - } - - path_count = count; -} - -/************************************************************************/ -/* pj_open_lib() */ -/************************************************************************/ - -FILE * -pj_open_lib(char *name, char *mode) { - char fname[MAX_PATH_FILENAME+1]; - const char *sysname; - FILE *fid; - int n = 0; - int i; -#ifdef WIN32 - static const char dir_chars[] = "/\\"; -#else - static const char dir_chars[] = "/"; -#endif - -#ifndef _WIN32_WCE - - /* check if ~/name */ - if (*name == '~' && strchr(dir_chars,name[1]) ) - if (sysname = getenv("HOME")) { - (void)strcpy(fname, sysname); - fname[n = strlen(fname)] = DIR_CHAR; - fname[++n] = '\0'; - (void)strcpy(fname+n, name + 1); - sysname = fname; - } else - return NULL; - - /* or fixed path: /name, ./name or ../name */ - else if (strchr(dir_chars,*name) - || (*name == '.' && strchr(dir_chars,name[1])) - || (!strncmp(name, "..", 2) && strchr(dir_chars,name[2])) - || (name[1] == ':' && strchr(dir_chars,name[2])) ) - sysname = name; - - /* or try to use application provided file finder */ - else if( pj_finder != NULL && pj_finder( name ) != NULL ) - sysname = pj_finder( name ); - - /* or is environment PROJ_LIB defined */ - else if ((sysname = getenv("PROJ_LIB")) || (sysname = proj_lib_name)) { - (void)strcpy(fname, sysname); - fname[n = strlen(fname)] = DIR_CHAR; - fname[++n] = '\0'; - (void)strcpy(fname+n, name); - sysname = fname; - } else /* just try it bare bones */ - sysname = name; - - if (fid = fopen(sysname, mode)) - errno = 0; - - /* If none of those work and we have a search path, try it */ - if (!fid && path_count > 0) - { - for (i = 0; fid == NULL && i < path_count; i++) - { - sprintf(fname, "%s%c%s", search_path[i], DIR_CHAR, name); - sysname = fname; - fid = fopen (sysname, mode); - } - if (fid) - errno = 0; - } - - if( getenv( "PROJ_DEBUG" ) != NULL ) - fprintf( stderr, "pj_open_lib(%s): call fopen(%s) - %s\n", - name, sysname, - fid == NULL ? "failed" : "succeeded" ); - - return(fid); -#else - return NULL; -#endif /* _WIN32_WCE */ -} diff --git a/src/pj_param.c b/src/pj_param.c index 4dce136a7..119006e14 100644 --- a/src/pj_param.c +++ b/src/pj_param.c @@ -6,7 +6,7 @@ pj_mkparam(char *str) { paralist *newitem; - if (newitem = (paralist *)pj_malloc(sizeof(paralist) + strlen(str))) { + if((newitem = (paralist *)pj_malloc(sizeof(paralist) + strlen(str))) != NULL) { newitem->used = 0; newitem->next = 0; if (*str == '+') @@ -34,11 +34,15 @@ pj_mkparam(char *str) { /************************************************************************/ PVALUE /* test for presence or get parameter value */ -pj_param(paralist *pl, char *opt) { +pj_param(projCtx ctx, paralist *pl, const char *opt) { + int type; unsigned l; PVALUE value; + if( ctx == NULL ) + ctx = pj_get_default_ctx(); + type = *opt++; /* simple linear lookup */ l = strlen(opt); @@ -60,10 +64,10 @@ pj_param(paralist *pl, char *opt) { value.f = atof(opt); break; case 'r': /* degrees input */ - value.f = dmstor(opt, 0); + value.f = dmstor_ctx(ctx, opt, 0); break; case 's': /* char string */ - value.s = opt; + value.s = (char *) opt; break; case 'b': /* boolean */ switch (*opt) { @@ -74,7 +78,7 @@ pj_param(paralist *pl, char *opt) { value.i = 1; break; default: - pj_errno = -8; + pj_ctx_set_errno(ctx, -8); value.i = 0; break; } diff --git a/src/pj_phi2.c b/src/pj_phi2.c index 0900350e6..5c81da48d 100644 --- a/src/pj_phi2.c +++ b/src/pj_phi2.c @@ -6,7 +6,7 @@ #define N_ITER 15 double -pj_phi2(double ts, double e) { +pj_phi2(projCtx ctx, double ts, double e) { double eccnth, Phi, con, dphi; int i; @@ -20,6 +20,6 @@ pj_phi2(double ts, double e) { Phi += dphi; } while ( fabs(dphi) > TOL && --i); if (i <= 0) - pj_errno = -18; + pj_ctx_set_errno( ctx, -18 ); return Phi; } diff --git a/src/pj_pr_list.c b/src/pj_pr_list.c index d4a908cd7..e14b20d99 100644 --- a/src/pj_pr_list.c +++ b/src/pj_pr_list.c @@ -49,7 +49,7 @@ pj_pr_list(PJ *P) { /* */ /* Returns the PROJ.4 command string that would produce this */ /* definition expanded as much as possible. For instance, */ -/* +init= calls and +datum= defintions would be expanded. */ +/* +init= calls and +datum= definitions would be expanded. */ /************************************************************************/ char *pj_get_def( PJ *P, int options ) diff --git a/src/pj_strerrno.c b/src/pj_strerrno.c index 4db1fb9ae..186a50e81 100644 --- a/src/pj_strerrno.c +++ b/src/pj_strerrno.c @@ -22,7 +22,7 @@ pj_err_list[] = { "latitude or longitude exceeded limits", /* -14 */ "invalid x or y", /* -15 */ "improperly formed DMS value", /* -16 */ - "non-convergent inverse meridinal dist", /* -17 */ + "non-convergent inverse meridional dist", /* -17 */ "non-convergent inverse phi2", /* -18 */ "acos/asin: |arg| >1.+1e-14", /* -19 */ "tolerance condition error", /* -20 */ @@ -43,7 +43,7 @@ pj_err_list[] = { "invalid UTM zone number", /* -35 */ "arg(s) out of range for Tcheby eval", /* -36 */ "failed to find projection to be rotated", /* -37 */ - "failed to load NAD27-83 correction file", /* -38 */ + "failed to load datum shift file", /* -38 */ "both n & m must be spec'd and > 0", /* -39 */ "n <= 0, n > 1 or not specified", /* -40 */ "lat_1 or lat_2 not specified", /* -41 */ @@ -52,6 +52,8 @@ pj_err_list[] = { "unparseable coordinate system definition", /* -44 */ "geocentric transformation missing z or ellps", /* -45 */ "unknown prime meridian conversion id", /* -46 */ + "illegal axis orientation combination", /* -47 */ + "point not within available datum shift grids", /* -48 */ }; char * pj_strerrno(int err) diff --git a/src/pj_transform.c b/src/pj_transform.c index 7aacbd4ab..afd3db374 100644 --- a/src/pj_transform.c +++ b/src/pj_transform.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_transform.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: pj_transform.c 2000 2011-05-10 17:06:33Z warmerdam $ * * Project: PROJ.4 * Purpose: Perform overall coordinate system to coordinate system @@ -34,7 +34,11 @@ #include #include "geocent.h" -PJ_CVSID("$Id: pj_transform.c 1504 2009-01-06 02:11:57Z warmerdam $"); +PJ_CVSID("$Id: pj_transform.c 2000 2011-05-10 17:06:33Z warmerdam $"); + +static int pj_adjust_axis( projCtx ctx, const char *axis, int denormalize_flag, + long point_count, int point_offset, + double *x, double *y, double *z ); #ifndef SRS_WGS84_SEMIMAJOR #define SRS_WGS84_SEMIMAJOR 6378137.0 @@ -63,13 +67,13 @@ PJ_CVSID("$Id: pj_transform.c 1504 2009-01-06 02:11:57Z warmerdam $"); ** list or something, but while experimenting with it this should be fine. */ -static const int transient_error[45] = { +static const int transient_error[50] = { /* 0 1 2 3 4 5 6 7 8 9 */ /* 0 to 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 to 19 */ 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, /* 20 to 29 */ 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, - /* 30 to 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - /* 40 to 44 */ 0, 0, 0, 0, 0 }; + /* 30 to 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 40 to 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }; /************************************************************************/ /* pj_transform() */ @@ -85,13 +89,37 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, { long i; - int need_datum_shift; + int err; - pj_errno = 0; + srcdefn->ctx->last_errno = 0; + dstdefn->ctx->last_errno = 0; if( point_offset == 0 ) point_offset = 1; +/* -------------------------------------------------------------------- */ +/* Transform unusual input coordinate axis orientation to */ +/* standard form if needed. */ +/* -------------------------------------------------------------------- */ + if( strcmp(srcdefn->axis,"enu") != 0 ) + { + int err; + + err = pj_adjust_axis( srcdefn->ctx, srcdefn->axis, + 0, point_count, point_offset, x, y, z ); + if( err != 0 ) + return err; + } + +/* -------------------------------------------------------------------- */ +/* Transform Z to meters if it isn't already. */ +/* -------------------------------------------------------------------- */ + if( srcdefn->vto_meter != 1.0 && z != NULL ) + { + for( i = 0; i < point_count; i++ ) + z[point_offset*i] *= srcdefn->vto_meter; + } + /* -------------------------------------------------------------------- */ /* Transform geocentric source coordinates to lat/long. */ /* -------------------------------------------------------------------- */ @@ -99,7 +127,7 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, { if( z == NULL ) { - pj_errno = PJD_ERR_GEOCENTRIC; + pj_ctx_set_errno( pj_get_ctx(srcdefn), PJD_ERR_GEOCENTRIC); return PJD_ERR_GEOCENTRIC; } @@ -115,10 +143,11 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, } } - if( pj_geocentric_to_geodetic( srcdefn->a_orig, srcdefn->es_orig, - point_count, point_offset, - x, y, z ) != 0) - return pj_errno; + err = pj_geocentric_to_geodetic( srcdefn->a_orig, srcdefn->es_orig, + point_count, point_offset, + x, y, z ); + if( err != 0 ) + return err; } /* -------------------------------------------------------------------- */ @@ -129,13 +158,10 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, { if( srcdefn->inv == NULL ) { - pj_errno = -17; /* this isn't correct, we need a no inverse err */ - if( getenv( "PROJ_DEBUG" ) != NULL ) - { - fprintf( stderr, - "pj_transform(): source projection not invertable\n" ); - } - return pj_errno; + pj_ctx_set_errno( pj_get_ctx(srcdefn), -17 ); + pj_log( pj_get_ctx(srcdefn), PJ_LOG_ERROR, + "pj_transform(): source projection not invertable" ); + return -17; } for( i = 0; i < point_count; i++ ) @@ -150,12 +176,14 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, continue; geodetic_loc = pj_inv( projected_loc, srcdefn ); - if( pj_errno != 0 ) + if( srcdefn->ctx->last_errno != 0 ) { - if( (pj_errno != 33 /*EDOM*/ && pj_errno != 34 /*ERANGE*/ ) - && (pj_errno > 0 || pj_errno < -44 || point_count == 1 - || transient_error[-pj_errno] == 0 ) ) - return pj_errno; + if( (srcdefn->ctx->last_errno != 33 /*EDOM*/ + && srcdefn->ctx->last_errno != 34 /*ERANGE*/ ) + && (srcdefn->ctx->last_errno > 0 + || srcdefn->ctx->last_errno < -44 || point_count == 1 + || transient_error[-srcdefn->ctx->last_errno] == 0 ) ) + return srcdefn->ctx->last_errno; else { geodetic_loc.u = HUGE_VAL; @@ -180,13 +208,44 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, } } +/* -------------------------------------------------------------------- */ +/* Do we need to translate from geoid to ellipsoidal vertical */ +/* datum? */ +/* -------------------------------------------------------------------- */ + if( srcdefn->has_geoid_vgrids ) + { + if( pj_apply_vgridshift( srcdefn, "sgeoidgrids", + &(srcdefn->vgridlist_geoid), + &(srcdefn->vgridlist_geoid_count), + 0, point_count, point_offset, x, y, z ) != 0 ) + return pj_ctx_get_errno(srcdefn->ctx); + } + /* -------------------------------------------------------------------- */ /* Convert datums if needed, and possible. */ /* -------------------------------------------------------------------- */ if( pj_datum_transform( srcdefn, dstdefn, point_count, point_offset, x, y, z ) != 0 ) - return pj_errno; + { + if( srcdefn->ctx->last_errno != 0 ) + return srcdefn->ctx->last_errno; + else + return dstdefn->ctx->last_errno; + } +/* -------------------------------------------------------------------- */ +/* Do we need to translate from geoid to ellipsoidal vertical */ +/* datum? */ +/* -------------------------------------------------------------------- */ + if( dstdefn->has_geoid_vgrids ) + { + if( pj_apply_vgridshift( dstdefn, "sgeoidgrids", + &(dstdefn->vgridlist_geoid), + &(dstdefn->vgridlist_geoid_count), + 1, point_count, point_offset, x, y, z ) != 0 ) + return dstdefn->ctx->last_errno; + } + /* -------------------------------------------------------------------- */ /* But if they are staying lat long, adjust for the prime */ /* meridian if there is one in effect. */ @@ -208,7 +267,7 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, { if( z == NULL ) { - pj_errno = PJD_ERR_GEOCENTRIC; + pj_ctx_set_errno( dstdefn->ctx, PJD_ERR_GEOCENTRIC ); return PJD_ERR_GEOCENTRIC; } @@ -246,12 +305,14 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, continue; projected_loc = pj_fwd( geodetic_loc, dstdefn ); - if( pj_errno != 0 ) + if( dstdefn->ctx->last_errno != 0 ) { - if( (pj_errno != 33 /*EDOM*/ && pj_errno != 34 /*ERANGE*/ ) - && (pj_errno > 0 || pj_errno < -44 || point_count == 1 - || transient_error[-pj_errno] == 0 ) ) - return pj_errno; + if( (dstdefn->ctx->last_errno != 33 /*EDOM*/ + && dstdefn->ctx->last_errno != 34 /*ERANGE*/ ) + && (dstdefn->ctx->last_errno > 0 + || dstdefn->ctx->last_errno < -44 || point_count == 1 + || transient_error[-dstdefn->ctx->last_errno] == 0 ) ) + return dstdefn->ctx->last_errno; else { projected_loc.u = HUGE_VAL; @@ -268,20 +329,43 @@ int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset, /* If a wrapping center other than 0 is provided, rewrap around */ /* the suggested center (for latlong coordinate systems only). */ /* -------------------------------------------------------------------- */ - else if( dstdefn->is_latlong && dstdefn->long_wrap_center != 0 ) + else if( dstdefn->is_latlong && dstdefn->is_long_wrap_set ) { for( i = 0; i < point_count; i++ ) { if( x[point_offset*i] == HUGE_VAL ) continue; - while( x[point_offset*i] < dstdefn->long_wrap_center - HALFPI ) - x[point_offset*i] += PI; - while( x[point_offset*i] > dstdefn->long_wrap_center + HALFPI ) - x[point_offset*i] -= PI; + while( x[point_offset*i] < dstdefn->long_wrap_center - PI ) + x[point_offset*i] += TWOPI; + while( x[point_offset*i] > dstdefn->long_wrap_center + PI ) + x[point_offset*i] -= TWOPI; } } +/* -------------------------------------------------------------------- */ +/* Transform Z from meters if needed. */ +/* -------------------------------------------------------------------- */ + if( dstdefn->vto_meter != 1.0 && z != NULL ) + { + for( i = 0; i < point_count; i++ ) + z[point_offset*i] *= dstdefn->vfr_meter; + } + +/* -------------------------------------------------------------------- */ +/* Transform normalized axes into unusual output coordinate axis */ +/* orientation if needed. */ +/* -------------------------------------------------------------------- */ + if( strcmp(dstdefn->axis,"enu") != 0 ) + { + int err; + + err = pj_adjust_axis( dstdefn->ctx, dstdefn->axis, + 1, point_count, point_offset, x, y, z ); + if( err != 0 ) + return err; + } + return 0; } @@ -297,8 +381,7 @@ int pj_geodetic_to_geocentric( double a, double es, double b; int i; GeocentricInfo gi; - - pj_errno = 0; + int ret_errno = 0; if( es == 0.0 ) b = a; @@ -307,8 +390,7 @@ int pj_geodetic_to_geocentric( double a, double es, if( pj_Set_Geocentric_Parameters( &gi, a, b ) != 0 ) { - pj_errno = PJD_ERR_GEOCENTRIC; - return pj_errno; + return PJD_ERR_GEOCENTRIC; } for( i = 0; i < point_count; i++ ) @@ -321,13 +403,13 @@ int pj_geodetic_to_geocentric( double a, double es, if( pj_Convert_Geodetic_To_Geocentric( &gi, y[io], x[io], z[io], x+io, y+io, z+io ) != 0 ) { - pj_errno = -14; + ret_errno = -14; x[io] = y[io] = HUGE_VAL; /* but keep processing points! */ } } - return pj_errno; + return ret_errno; } /************************************************************************/ @@ -350,8 +432,7 @@ int pj_geocentric_to_geodetic( double a, double es, if( pj_Set_Geocentric_Parameters( &gi, a, b ) != 0 ) { - pj_errno = PJD_ERR_GEOCENTRIC; - return pj_errno; + return PJD_ERR_GEOCENTRIC; } for( i = 0; i < point_count; i++ ) @@ -407,8 +488,8 @@ int pj_compare_datums( PJ *srcdefn, PJ *dstdefn ) } else if( srcdefn->datum_type == PJD_GRIDSHIFT ) { - return strcmp( pj_param(srcdefn->params,"snadgrids").s, - pj_param(dstdefn->params,"snadgrids").s ) == 0; + return strcmp( pj_param(srcdefn->ctx, srcdefn->params,"snadgrids").s, + pj_param(dstdefn->ctx, dstdefn->params,"snadgrids").s ) == 0; } else return 1; @@ -425,8 +506,6 @@ int pj_geocentric_to_wgs84( PJ *defn, { int i; - pj_errno = 0; - if( defn->datum_type == PJD_3PARAM ) { for( i = 0; i < point_count; i++ ) @@ -475,8 +554,6 @@ int pj_geocentric_from_wgs84( PJ *defn, { int i; - pj_errno = 0; - if( defn->datum_type == PJD_3PARAM ) { for( i = 0; i < point_count; i++ ) @@ -530,8 +607,6 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn, double src_a, src_es, dst_a, dst_es; int z_is_temp = FALSE; - pj_errno = 0; - /* -------------------------------------------------------------------- */ /* We cannot do any meaningful datum transformation if either */ /* the source or destination are of an unknown datum type */ @@ -565,7 +640,7 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn, z_is_temp = TRUE; } -#define CHECK_RETURN {if( pj_errno != 0 && (pj_errno > 0 || transient_error[-pj_errno] == 0) ) { if( z_is_temp ) pj_dalloc(z); return pj_errno; }} +#define CHECK_RETURN(defn) {if( defn->ctx->last_errno != 0 && (defn->ctx->last_errno > 0 || transient_error[-defn->ctx->last_errno] == 0) ) { if( z_is_temp ) pj_dalloc(z); return defn->ctx->last_errno; }} /* -------------------------------------------------------------------- */ /* If this datum requires grid shifts, then apply it to geodetic */ @@ -573,9 +648,8 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn, /* -------------------------------------------------------------------- */ if( srcdefn->datum_type == PJD_GRIDSHIFT ) { - pj_apply_gridshift( pj_param(srcdefn->params,"snadgrids").s, 0, - point_count, point_offset, x, y, z ); - CHECK_RETURN; + pj_apply_gridshift_2( srcdefn, 0, point_count, point_offset, x, y, z ); + CHECK_RETURN(srcdefn); src_a = SRS_WGS84_SEMIMAJOR; src_es = SRS_WGS84_ESQUARED; @@ -586,7 +660,7 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn, dst_a = SRS_WGS84_SEMIMAJOR; dst_es = SRS_WGS84_ESQUARED; } - + /* ==================================================================== */ /* Do we need to go through geocentric coordinates? */ /* ==================================================================== */ @@ -599,9 +673,10 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn, /* -------------------------------------------------------------------- */ /* Convert to geocentric coordinates. */ /* -------------------------------------------------------------------- */ - pj_geodetic_to_geocentric( src_a, src_es, - point_count, point_offset, x, y, z ); - CHECK_RETURN; + srcdefn->ctx->last_errno = + pj_geodetic_to_geocentric( src_a, src_es, + point_count, point_offset, x, y, z ); + CHECK_RETURN(srcdefn); /* -------------------------------------------------------------------- */ /* Convert between datums. */ @@ -610,22 +685,23 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn, || srcdefn->datum_type == PJD_7PARAM ) { pj_geocentric_to_wgs84( srcdefn, point_count, point_offset,x,y,z); - CHECK_RETURN; + CHECK_RETURN(srcdefn); } if( dstdefn->datum_type == PJD_3PARAM || dstdefn->datum_type == PJD_7PARAM ) { pj_geocentric_from_wgs84( dstdefn, point_count,point_offset,x,y,z); - CHECK_RETURN; + CHECK_RETURN(dstdefn); } /* -------------------------------------------------------------------- */ /* Convert back to geodetic coordinates. */ /* -------------------------------------------------------------------- */ - pj_geocentric_to_geodetic( dst_a, dst_es, - point_count, point_offset, x, y, z ); - CHECK_RETURN; + dstdefn->ctx->last_errno = + pj_geocentric_to_geodetic( dst_a, dst_es, + point_count, point_offset, x, y, z ); + CHECK_RETURN(dstdefn); } /* -------------------------------------------------------------------- */ @@ -633,9 +709,8 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn, /* -------------------------------------------------------------------- */ if( dstdefn->datum_type == PJD_GRIDSHIFT ) { - pj_apply_gridshift( pj_param(dstdefn->params,"snadgrids").s, 1, - point_count, point_offset, x, y, z ); - CHECK_RETURN; + pj_apply_gridshift_2( dstdefn, 1, point_count, point_offset, x, y, z ); + CHECK_RETURN(dstdefn); } if( z_is_temp ) @@ -644,3 +719,108 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn, return 0; } +/************************************************************************/ +/* pj_adjust_axis() */ +/* */ +/* Normalize or de-normalized the x/y/z axes. The normal form */ +/* is "enu" (easting, northing, up). */ +/************************************************************************/ +static int pj_adjust_axis( projCtx ctx, + const char *axis, int denormalize_flag, + long point_count, int point_offset, + double *x, double *y, double *z ) + +{ + double x_in, y_in, z_in = 0.0; + int i, i_axis; + + if( !denormalize_flag ) + { + for( i = 0; i < point_count; i++ ) + { + x_in = x[point_offset*i]; + y_in = y[point_offset*i]; + if( z ) + z_in = z[point_offset*i]; + + for( i_axis = 0; i_axis < 3; i_axis++ ) + { + double value; + + if( i_axis == 0 ) + value = x_in; + else if( i_axis == 1 ) + value = y_in; + else + value = z_in; + + switch( axis[i_axis] ) + { + case 'e': + x[point_offset*i] = value; break; + case 'w': + x[point_offset*i] = -value; break; + case 'n': + y[point_offset*i] = value; break; + case 's': + y[point_offset*i] = -value; break; + case 'u': + if( z ) z[point_offset*i] = value; break; + case 'd': + if( z ) z[point_offset*i] = -value; break; + default: + pj_ctx_set_errno( ctx, PJD_ERR_AXIS ); + return PJD_ERR_AXIS; + } + } /* i_axis */ + } /* i (point) */ + } + + else /* denormalize */ + { + for( i = 0; i < point_count; i++ ) + { + x_in = x[point_offset*i]; + y_in = y[point_offset*i]; + if( z ) + z_in = z[point_offset*i]; + + for( i_axis = 0; i_axis < 3; i_axis++ ) + { + double *target; + + if( i_axis == 2 && z == NULL ) + continue; + + if( i_axis == 0 ) + target = x; + else if( i_axis == 1 ) + target = y; + else + target = z; + + switch( axis[i_axis] ) + { + case 'e': + target[point_offset*i] = x_in; break; + case 'w': + target[point_offset*i] = -x_in; break; + case 'n': + target[point_offset*i] = y_in; break; + case 's': + target[point_offset*i] = -y_in; break; + case 'u': + target[point_offset*i] = z_in; break; + case 'd': + target[point_offset*i] = -z_in; break; + default: + pj_ctx_set_errno( ctx, PJD_ERR_AXIS ); + return PJD_ERR_AXIS; + } + } /* i_axis */ + } /* i (point) */ + } + + return 0; +} + diff --git a/src/pj_utils.c b/src/pj_utils.c index f9f668475..45e792c20 100644 --- a/src/pj_utils.c +++ b/src/pj_utils.c @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pj_utils.c 1504 2009-01-06 02:11:57Z warmerdam $ + * $Id: pj_utils.c 1856 2010-06-11 03:26:04Z warmerdam $ * * Project: PROJ.4 * Purpose: Some utility functions we don't want to bother putting in @@ -77,80 +77,80 @@ PJ *pj_latlong_from_proj( PJ *pj_in ) pj_errno = 0; strcpy( defn, "+proj=latlong" ); - if( pj_param(pj_in->params, "tdatum").i ) + if( pj_param(pj_in->ctx, pj_in->params, "tdatum").i ) { got_datum = TRUE; sprintf( defn+strlen(defn), " +datum=%s", - pj_param(pj_in->params,"sdatum").s ); + pj_param(pj_in->ctx, pj_in->params,"sdatum").s ); } - else if( pj_param(pj_in->params, "tellps").i ) + else if( pj_param(pj_in->ctx, pj_in->params, "tellps").i ) { sprintf( defn+strlen(defn), " +ellps=%s", - pj_param(pj_in->params,"sellps").s ); + pj_param(pj_in->ctx, pj_in->params,"sellps").s ); } - else if( pj_param(pj_in->params, "ta").i ) + else if( pj_param(pj_in->ctx,pj_in->params, "ta").i ) { sprintf( defn+strlen(defn), " +a=%s", - pj_param(pj_in->params,"sa").s ); + pj_param(pj_in->ctx,pj_in->params,"sa").s ); - if( pj_param(pj_in->params, "tb").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tb").i ) sprintf( defn+strlen(defn), " +b=%s", - pj_param(pj_in->params,"sb").s ); - else if( pj_param(pj_in->params, "tes").i ) + pj_param(pj_in->ctx,pj_in->params,"sb").s ); + else if( pj_param(pj_in->ctx,pj_in->params, "tes").i ) sprintf( defn+strlen(defn), " +es=%s", - pj_param(pj_in->params,"ses").s ); - else if( pj_param(pj_in->params, "tf").i ) + pj_param(pj_in->ctx,pj_in->params,"ses").s ); + else if( pj_param(pj_in->ctx,pj_in->params, "tf").i ) sprintf( defn+strlen(defn), " +f=%s", - pj_param(pj_in->params,"sf").s ); + pj_param(pj_in->ctx,pj_in->params,"sf").s ); else sprintf( defn+strlen(defn), " +es=%.16g", pj_in->es ); } else { - pj_errno = -13; + pj_ctx_set_errno( pj_in->ctx, -13 ); return NULL; } if( !got_datum ) { - if( pj_param(pj_in->params, "ttowgs84").i ) + if( pj_param(pj_in->ctx,pj_in->params, "ttowgs84").i ) sprintf( defn+strlen(defn), " +towgs84=%s", - pj_param(pj_in->params,"stowgs84").s ); + pj_param(pj_in->ctx,pj_in->params,"stowgs84").s ); - if( pj_param(pj_in->params, "tnadgrids").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tnadgrids").i ) sprintf( defn+strlen(defn), " +nadgrids=%s", - pj_param(pj_in->params,"snadgrids").s ); + pj_param(pj_in->ctx,pj_in->params,"snadgrids").s ); } /* copy over some other information related to ellipsoid */ - if( pj_param(pj_in->params, "tR").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tR").i ) sprintf( defn+strlen(defn), " +R=%s", - pj_param(pj_in->params,"sR").s ); + pj_param(pj_in->ctx,pj_in->params,"sR").s ); - if( pj_param(pj_in->params, "tR_A").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tR_A").i ) sprintf( defn+strlen(defn), " +R_A" ); - if( pj_param(pj_in->params, "tR_V").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tR_V").i ) sprintf( defn+strlen(defn), " +R_V" ); - if( pj_param(pj_in->params, "tR_a").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tR_a").i ) sprintf( defn+strlen(defn), " +R_a" ); - if( pj_param(pj_in->params, "tR_lat_a").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tR_lat_a").i ) sprintf( defn+strlen(defn), " +R_lat_a=%s", - pj_param(pj_in->params,"sR_lat_a").s ); + pj_param(pj_in->ctx,pj_in->params,"sR_lat_a").s ); - if( pj_param(pj_in->params, "tR_lat_g").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tR_lat_g").i ) sprintf( defn+strlen(defn), " +R_lat_g=%s", - pj_param(pj_in->params,"sR_lat_g").s ); + pj_param(pj_in->ctx,pj_in->params,"sR_lat_g").s ); /* copy over prime meridian */ - if( pj_param(pj_in->params, "tpm").i ) + if( pj_param(pj_in->ctx,pj_in->params, "tpm").i ) sprintf( defn+strlen(defn), " +pm=%s", - pj_param(pj_in->params,"spm").s ); + pj_param(pj_in->ctx,pj_in->params,"spm").s ); - return pj_init_plus( defn ); + return pj_init_plus_ctx( pj_in->ctx, defn ); } diff --git a/src/proj_api.h b/src/proj_api.h index d1f643b6b..9c9022194 100644 --- a/src/proj_api.h +++ b/src/proj_api.h @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id$ + * $Id: proj_api.h 1925 2010-10-19 16:22:55Z warmerdam $ * * Project: PROJ.4 * Purpose: Public (application) include file for PROJ.4 API, and constants. @@ -40,7 +40,7 @@ extern "C" { #endif /* Try to update this every version! */ -#define PJ_VERSION 470 +#define PJ_VERSION 480 extern char const pj_release[]; /* global release id string */ @@ -55,8 +55,10 @@ extern int pj_errno; /* global error return code */ typedef void *projPJ; #define projXY projUV #define projLP projUV + typedef void *projCtx; #else typedef PJ *projPJ; + typedef projCtx_t *projCtx; # define projXY XY # define projLP LP #endif @@ -77,10 +79,11 @@ int pj_geodetic_to_geocentric( double a, double es, long point_count, int point_offset, double *x, double *y, double *z ); int pj_compare_datums( projPJ srcdefn, projPJ dstdefn ); -int pj_apply_gridshift( const char *, int, +int pj_apply_gridshift( projCtx, const char *, int, long point_count, int point_offset, double *x, double *y, double *z ); void pj_deallocate_grids(void); +void pj_clear_initcache(void); int pj_is_latlong(projPJ); int pj_is_geocent(projPJ); void pj_pr_list(projPJ); @@ -89,6 +92,8 @@ void pj_set_finder( const char *(*)(const char *) ); void pj_set_searchpath ( int count, const char **path ); projPJ pj_init(int, char **); projPJ pj_init_plus(const char *); +projPJ pj_init_ctx( projCtx, int, char ** ); +projPJ pj_init_plus_ctx( projCtx, const char * ); char *pj_get_def(projPJ, int); projPJ pj_latlong_from_proj( projPJ ); void *pj_malloc(size_t); @@ -100,6 +105,26 @@ void pj_acquire_lock(void); void pj_release_lock(void); void pj_cleanup_lock(void); +projCtx pj_get_default_ctx(void); +projCtx pj_get_ctx( projPJ ); +void pj_set_ctx( projPJ, projCtx ); +projCtx pj_ctx_alloc(void); +void pj_ctx_free( projCtx ); +int pj_ctx_get_errno( projCtx ); +void pj_ctx_set_errno( projCtx, int ); +void pj_ctx_set_debug( projCtx, int ); +void pj_ctx_set_logger( projCtx, void (*)(void *, int, const char *) ); +void pj_ctx_set_app_data( projCtx, void * ); +void *pj_ctx_get_app_data( projCtx ); + +void pj_log( projCtx ctx, int level, const char *fmt, ... ); +void pj_stderr_logger( void *, int, const char * ); + +#define PJ_LOG_NONE 0 +#define PJ_LOG_ERROR 1 +#define PJ_LOG_DEBUG_MAJOR 2 +#define PJ_LOG_DEBUG_MINOR 3 + #ifdef __cplusplus } #endif diff --git a/src/proj_etmerc.c b/src/proj_etmerc.c new file mode 100644 index 000000000..3a3896003 --- /dev/null +++ b/src/proj_etmerc.c @@ -0,0 +1,252 @@ +/* +** libproj -- library of cartographic projections +** +** Copyright (c) 2008 Gerald I. Evenden +*/ + +/* +** 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. +*/ + +/* The code in this file is largly based upon procedures: + * + * Written by: Knud Poder and Karsten Engsager + * + * Based on math from: R.Koenig and K.H. Weise, "Mathematische + * Grundlagen der hoeheren Geodaesie und Kartographie, + * Springer-Verlag, Berlin/Goettingen" Heidelberg, 1951. + * + * Modified and used here by permission of Reference Networks + * Division, Kort og Matrikelstyrelsen (KMS), Copenhagen, Denmark +*/ + + +#define PROJ_PARMS__ \ + double Qn; /* Merid. quad., scaled to the projection */ \ + double Zb; /* Radius vector in polar coord. systems */ \ + double cgb[5]; /* Constants for Gauss -> Geo lat */ \ + double cbg[5]; /* Constants for Geo lat -> Gauss */ \ + double utg[5]; /* Constants for transv. merc. -> geo */ \ + double gtu[5]; /* Constants for geo -> transv. merc. */ + +#define PROJ_LIB__ +#define PJ_LIB__ + +#include + +PROJ_HEAD(etmerc, "Extended Transverse Mercator") + "\n\tCyl, Sph\n\tlat_ts=(0)\nlat_0=(0)"; + +#define FABS(x) ((x)<0?-(x):(x)) + +#ifdef _GNU_SOURCE + inline +#endif + static double +gatg(double *p1, int len_p1, double B) { + double *p; + double h = 0., h1, h2 = 0., cos_2B; + + cos_2B = 2.*cos(2.0*B); + for (p = p1 + len_p1, h1 = *--p; p - p1; h2 = h1, h1 = h) + h = -h2 + cos_2B*h1 + *--p; + return (B + h*sin(2.0*B)); +} + +#ifdef _GNU_SOURCE + inline +#endif + static double +clenS(double *a, int size, double arg_r, double arg_i, double *R, double *I) { + double *p, r, i, hr, hr1, hr2, hi, hi1, hi2; + double sin_arg_r, cos_arg_r, sinh_arg_i, cosh_arg_i; + double exp_arg_i, pxe_arg_i; + + /* arguments */ + p = a + size; +#ifdef _GNU_SOURCE + sincos(arg_r, &sin_arg_r, &cos_arg_r); +#else + sin_arg_r = sin(arg_r); + cos_arg_r = cos(arg_r); +#endif + exp_arg_i = exp( arg_i); + pxe_arg_i = exp(-arg_i); + sinh_arg_i = (exp_arg_i-pxe_arg_i)/2; + cosh_arg_i = (exp_arg_i+pxe_arg_i)/2; + r = 2.0*cos_arg_r*cosh_arg_i; + i = -2.0*sin_arg_r*sinh_arg_i; + /* summation loop */ + for (hi1 = hr1 = hi = 0.0, hr = *--p; a - p;) { + hr2 = hr1; + hi2 = hi1; + hr1 = hr; + hi1 = hi; + hr = -hr2 + r*hr1 - i*hi1 + *--p; + hi = -hi2 + i*hr1 + r*hi1; + } + r = sin_arg_r*cosh_arg_i; + i = cos_arg_r*sinh_arg_i; + *R = r*hr - i*hi; + *I = r*hi + i*hr; + return(*R); +} + static double +clens(double *a, int size, double arg_r) { + double *p, r, hr, hr1, hr2, cos_arg_r; + + p = a + size; + cos_arg_r = cos(arg_r); + r = 2.0*cos_arg_r; + /* summation loop */ + for (hr1 = 0.0, hr = *--p; a - p;) { + hr2 = hr1; + hr1 = hr; + hr = -hr2 + r*hr1 + *--p; + } + return(sin(arg_r)*hr); +} + + +FORWARD(e_forward); /* ellipsoid */ + double sin_Cn, cos_Cn, cos_Ce, sin_Ce, dCn, dCe; + double Cn = lp.phi, Ce = lp.lam; + + /* ell. LAT, LNG -> Gaussian LAT, LNG */ + Cn = gatg(P->cbg, 5, Cn); + /* Gaussian LAT, LNG -> compl. sph. LAT */ +#ifdef _GNU_SOURCE + sincos(Cn, &sin_Cn, &cos_Cn); + sincos(Ce, &sin_Ce, &cos_Ce); +#else + sin_Cn = sin(Cn); + cos_Cn = cos(Cn); + sin_Ce = sin(Ce); + cos_Ce = cos(Ce); +#endif + + Cn = atan2(sin_Cn, cos_Ce*cos_Cn); + Ce = atan2(sin_Ce*cos_Cn, hypot(sin_Cn, cos_Cn*cos_Ce)); + /* compl. sph. N, E -> ell. norm. N, E */ + Ce = log(tan(FORTPI + Ce*0.5)); + Cn += clenS(P->gtu, 5, 2.*Cn, 2.*Ce, &dCn, &dCe); + Ce += dCe; + if (FABS(Ce) <= 2.623395162778) { + xy.y = P->Qn * Cn + P->Zb; /* Northing */ + xy.x = P->Qn * Ce; /* Easting */ + } else + xy.x = xy.y = HUGE_VAL; + return (xy); +} + + +INVERSE(e_inverse); /* ellipsoid */ + double sin_Cn, cos_Cn, cos_Ce, sin_Ce, dCn, dCe; + double Cn = xy.y, Ce = xy.x; + + /* normalize N, E */ + Cn = (Cn - P->Zb)/P->Qn; + Ce = Ce/P->Qn; + if (FABS(Ce) <= 2.623395162778) { /* 150 degrees */ + /* norm. N, E -> compl. sph. LAT, LNG */ + Cn += clenS(P->utg, 5, 2.*Cn, 2.*Ce, &dCn, &dCe); + Ce += dCe; + Ce = 2.0*(atan(exp(Ce)) - FORTPI); + /* compl. sph. LAT -> Gaussian LAT, LNG */ +#ifdef _GNU_SOURCE + sincos(Cn, &sin_Cn, &cos_Cn); + sincos(Ce, &sin_Ce, &cos_Ce); +#else + sin_Cn = sin(Cn); + cos_Cn = cos(Cn); + sin_Ce = sin(Ce); + cos_Ce = cos(Ce); +#endif + Ce = atan2(sin_Ce, cos_Ce*cos_Cn); + Cn = atan2(sin_Cn*cos_Ce, hypot(sin_Ce, cos_Ce*cos_Cn)); + /* Gaussian LAT, LNG -> ell. LAT, LNG */ + lp.phi = gatg(P->cgb, 5, Cn); + lp.lam = Ce; + } + else + lp.phi = lp.lam = HUGE_VAL; + return (lp); +} + + +FREEUP; if (P) free(P); } + + +ENTRY0(etmerc) + double f, n, np, Z; + + if (P->es <= 0.) E_ERROR(-34); + f = 1. - sqrt(1. - P->es); + /* third flattening */ + np = n = f/(2.0 - f); + + /* COEF. OF TRIG SERIES GEO <-> GAUSS */ + /* cgb := Gaussian -> Geodetic, KW p190 - 191 (61) - (62) */ + /* cbg := Geodetic -> Gaussian, KW p186 - 187 (51) - (52) */ + /* 5 degree : Engsager and Poder: ICC2007 */ + P->cgb[0] = n*( 2.0 + n*(-2.0/3.0 + n*(-2.0 + n*(116.0/45.0 + n*(26.0/45.0))))); + P->cbg[0] = n*(-2.0 + n*( 2.0/3.0 + n*( 4.0/3.0 + n*(-82.0/45.0 + n*(32.0/45.0))))); + np *= n; + P->cgb[1] = np*(7.0/3.0 + n*( -8.0/5.0 + n*(-227.0/45.0 + n*(2704.0/315.0)))); + P->cbg[1] = np*(5.0/3.0 + n*(-16.0/15.0 + n*( -13.0/ 9.0 + n*( 904.0/315.0)))); + np *= n; + P->cgb[2] = np*( 56.0/15.0 + n*(-136.0/35.0 + n*(1262.0/105.0))); + P->cbg[2] = np*(-26.0/15.0 + n*( 34.0/21.0 + n*( 8.0/ 5.0))); + np *= n; + P->cgb[3] = np*(4279.0/630.0 + n*(-322.0/35.0)); + P->cbg[3] = np*(1237.0/630.0 + n*( -12.0/ 5.0)); + np *= n; + P->cgb[4] = np*(4174.0/315.0); + P->cbg[4] = np*(-734.0/315.0); + + /* Constants of the projections */ + /* Transverse Mercator (UTM, ITM, etc) */ + np = n*n; + /* Norm. mer. quad, K&W p.50 (96), p.19 (38b), p.5 (2) */ + P->Qn = P->k0/(1 + n) * (1. + np*(1./4.0 + np*(1./64.0 + np/256.0))); + /* coef of trig series */ + /* utg := ell. N, E -> sph. N, E, KW p194 (65) */ + /* gtu := sph. N, E -> ell. N, E, KW p196 (69) */ + P->utg[0] = n*(-0.5 + n*( 2.0/3.0 + n*(-37.0/96.0 + n*( 1.0/360.0 + n*( 81.0/512.0))))); + P->gtu[0] = n*( 0.5 + n*(-2.0/3.0 + n*( 5.0/16.0 + n*(41.0/180.0 + n*(-127.0/288.0))))); + P->utg[1] = np*(-1.0/48.0 + n*(-1.0/15.0 + n*(437.0/1440.0 + n*(-46.0/105.0)))); + P->gtu[1] = np*(13.0/48.0 + n*(-3.0/5.0 + n*(557.0/1440.0 + n*(281.0/630.0)))); + np *= n; + P->utg[2] = np*(-17.0/480.0 + n*( 37.0/840.0 + n*( 209.0/ 4480.0))); + P->gtu[2] = np*( 61.0/240.0 + n*(-103.0/140.0 + n*(15061.0/26880.0))); + np *= n; + P->utg[3] = np*(-4397.0/161280.0 + n*( 11.0/504.0)); + P->gtu[3] = np*(49561.0/161280.0 + n*(-179.0/168.0)); + np *= n; + P->utg[4] = np*(-4583.0/161280.0); + P->gtu[4] = np*(34729.0/ 80640.0); + /* Gaussian latitude value of the origin latitude */ + Z = gatg(P->cbg, 5, P->phi0); + /* Origin northing minus true northing at the origin latitude */ + /* i.e. true northing = N - P->Zb */ + P->Zb = - P->Qn*(Z + clens(P->gtu, 5, 2.0*Z)); + P->inv = e_inverse; + P->fwd = e_forward; +ENDENTRY(P) diff --git a/src/proj_mdist.c b/src/proj_mdist.c index 9edde83f7..465ebeb73 100644 --- a/src/proj_mdist.c +++ b/src/proj_mdist.c @@ -4,7 +4,7 @@ ** Copyright (c) 2003, 2006 Gerald I. Evenden */ static const char -LIBPROJ_ID[] = "$Id: proj_mdist.c 1504 2009-01-06 02:11:57Z warmerdam $"; +LIBPROJ_ID[] = "$Id: proj_mdist.c 1856 2010-06-11 03:26:04Z warmerdam $"; /* ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the @@ -102,7 +102,7 @@ proj_mdist(double phi, double sphi, double cphi, const void *b) { return(D + sc * sum); } double -proj_inv_mdist(double dist, const void *b) { +proj_inv_mdist(projCtx ctx, double dist, const void *b) { double s, t, phi, k; int i; @@ -118,6 +118,6 @@ proj_inv_mdist(double dist, const void *b) { return phi; } /* convergence failed */ - pj_errno = -17; + pj_ctx_set_errno(ctx, -17); return phi; } diff --git a/src/proj_rouss.c b/src/proj_rouss.c index 594c237dd..f2c49e2f5 100644 --- a/src/proj_rouss.c +++ b/src/proj_rouss.c @@ -4,7 +4,7 @@ ** Copyright (c) 2003, 2006 Gerald I. Evenden */ static const char -LIBPROJ_ID[] = "$Id: proj_rouss.c 1504 2009-01-06 02:11:57Z warmerdam $"; +LIBPROJ_ID[] = "$Id: proj_rouss.c 1856 2010-06-11 03:26:04Z warmerdam $"; /* ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the @@ -61,7 +61,7 @@ INVERSE(e_inverse); /* ellipsoid */ s = P->s0 + y*(1.+y2*(-P->D2+P->D8*y2))+ x2*(-P->D1+y*(-P->D3+y*(-P->D5+y*(-P->D7+y*P->D11)))+ x2*(P->D4+y*(P->D6+y*P->D10)-x2*P->D9)); - lp.phi=proj_inv_mdist(s, P->en); + lp.phi=proj_inv_mdist(P->ctx, s, P->en); s = sin(lp.phi); lp.lam=al * sqrt(1. - P->es * s * s)/cos(lp.phi); return (lp); diff --git a/src/projects.h b/src/projects.h index 822a53cca..8230e1e64 100644 --- a/src/projects.h +++ b/src/projects.h @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id$ + * $Id: projects.h 2121 2011-11-22 22:51:47Z warmerdam $ * * Project: PROJ.4 * Purpose: Primary (private) include file for PROJ.4 library. @@ -44,6 +44,7 @@ #include #include #include +#include #ifdef __cplusplus #define C_NAMESPACE extern "C" @@ -124,6 +125,14 @@ extern double hypot(double, double); #define DIR_CHAR '/' #endif +/* proj thread context */ +typedef struct { + int last_errno; + int debug_level; + void (*logger)(void *, int, const char *); + void *app_data; +} projCtx_t; + /* datum_type values */ #define PJD_UNKNOWN 0 #define PJD_3PARAM 1 @@ -131,8 +140,10 @@ extern double hypot(double, double); #define PJD_GRIDSHIFT 3 #define PJD_WGS84 4 /* WGS84 (or anything considered equivelent) */ -/* datum system errors */ -#define PJD_ERR_GEOCENTRIC -45 +/* library errors */ +#define PJD_ERR_GEOCENTRIC -45 +#define PJD_ERR_AXIS -47 +#define PJD_ERR_GRID_AREA -48 #define USE_PROJUV @@ -206,6 +217,7 @@ typedef struct ARG_list { typedef struct PJconsts { + projCtx_t *ctx; XY (*fwd)(LP, struct PJconsts *); LP (*inv)(XY, struct PJconsts *); void (*spc)(LP, struct PJconsts *, struct FACTORS *); @@ -232,8 +244,18 @@ typedef struct PJconsts { int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */ double datum_params[7]; + struct _pj_gi **gridlist; + int gridlist_count; + + int has_geoid_vgrids; + struct _pj_gi **vgridlist_geoid; + int vgridlist_geoid_count; + double vto_meter, vfr_meter; + double from_greenwich; /* prime meridian offset (in radians) */ double long_wrap_center; /* 0.0 for -180 to 180, actually in radians*/ + int is_long_wrap_set; + char axis[4]; #ifdef PROJ_PARMS__ PROJ_PARMS__ @@ -287,6 +309,7 @@ extern struct PJ_PRIME_MERIDIANS pj_prime_meridians[]; C_NAMESPACE_VAR const char * const pj_s_##name = des_##name; \ C_NAMESPACE PJ *pj_##name(PJ *P) { if (!P) { \ if( (P = (PJ*) pj_malloc(sizeof(PJ))) != NULL) { \ + memset( P, 0, sizeof(PJ) ); \ P->pfree = freeup; P->fwd = 0; P->inv = 0; \ P->spc = 0; P->descr = des_##name; #define ENTRYX } return P; } else { @@ -294,10 +317,10 @@ extern struct PJ_PRIME_MERIDIANS pj_prime_meridians[]; #define ENTRY1(name, a) ENTRYA(name) P->a = 0; ENTRYX #define ENTRY2(name, a, b) ENTRYA(name) P->a = 0; P->b = 0; ENTRYX #define ENDENTRY(p) } return (p); } -#define E_ERROR(err) { pj_errno = err; freeup(P); return(0); } +#define E_ERROR(err) { pj_ctx_set_errno( P->ctx, err); freeup(P); return(0); } #define E_ERROR_0 { freeup(P); return(0); } -#define F_ERROR { pj_errno = -20; return(xy); } -#define I_ERROR { pj_errno = -20; return(lp); } +#define F_ERROR { pj_ctx_set_errno( P->ctx, -20); return(xy); } +#define I_ERROR { pj_ctx_set_errno( P->ctx, -20); return(lp); } #define FORWARD(name) static XY name(LP lp, PJ *P) { XY xy = {0.0,0.0} #define INVERSE(name) static LP name(XY xy, PJ *P) { LP lp = {0.0,0.0} #define FREEUP static void freeup(PJ *P) { @@ -332,35 +355,35 @@ typedef struct _pj_gi { /* procedure prototypes */ double dmstor(const char *, char **); +double dmstor_ctx(projCtx ctx, const char *, char **); void set_rtodms(int, int); char *rtodms(char *, double, int, int); double adjlon(double); -double aacos(double), aasin(double), asqrt(double), aatan2(double, double); -PVALUE pj_param(paralist *, char *); +double aacos(projCtx,double), aasin(projCtx,double), asqrt(double), aatan2(double, double); +PVALUE pj_param(projCtx ctx, paralist *, const char *); paralist *pj_mkparam(char *); -int pj_ell_set(paralist *, double *, double *); -int pj_datum_set(paralist *, PJ *); +int pj_ell_set(projCtx ctx, paralist *, double *, double *); +int pj_datum_set(projCtx,paralist *, PJ *); int pj_prime_meridian_set(paralist *, PJ *); int pj_angular_units_set(paralist *, PJ *); paralist *pj_clone_paralist( const paralist* ); -void pj_clear_initcache(void); paralist*pj_search_initcache( const char *filekey ); void pj_insert_initcache( const char *filekey, const paralist *list); double *pj_enfn(double); double pj_mlfn(double, double, double, double *); -double pj_inv_mlfn(double, double, double *); +double pj_inv_mlfn(projCtx, double, double, double *); double pj_qsfn(double, double, double); double pj_tsfn(double, double, double); double pj_msfn(double, double, double); -double pj_phi2(double, double); +double pj_phi2(projCtx, double, double); double pj_qsfn_(double, PJ *); double *pj_authset(double); double pj_authlat(double, double *); COMPLEX pj_zpoly1(COMPLEX, COMPLEX *, int); COMPLEX pj_zpolyd1(COMPLEX, COMPLEX *, int, COMPLEX *); -FILE *pj_open_lib(char *, char *); +FILE *pj_open_lib(projCtx, char *, char *); int pj_deriv(LP, double, PJ *, struct DERIVS *); int pj_factors(LP, PJ *, double, struct FACTORS *); @@ -390,26 +413,42 @@ int bch2bps(projUV, projUV, projUV **, int, int); /* nadcon related protos */ LP nad_intr(LP, struct CTABLE *); LP nad_cvt(LP, int, struct CTABLE *); -struct CTABLE *nad_init(char *); -struct CTABLE *nad_ctable_init( FILE * fid ); -int nad_ctable_load( struct CTABLE *, FILE * fid ); +struct CTABLE *nad_init(projCtx ctx, char *); +struct CTABLE *nad_ctable_init( projCtx ctx, FILE * fid ); +int nad_ctable_load( projCtx ctx, struct CTABLE *, FILE * fid ); +struct CTABLE *nad_ctable2_init( projCtx ctx, FILE * fid ); +int nad_ctable2_load( projCtx ctx, struct CTABLE *, FILE * fid ); void nad_free(struct CTABLE *); /* higher level handling of datum grid shift files */ -PJ_GRIDINFO **pj_gridlist_from_nadgrids( const char *, int * ); +int pj_apply_vgridshift( PJ *defn, const char *listname, + PJ_GRIDINFO ***gridlist_p, + int *gridlist_count_p, + int inverse, + long point_count, int point_offset, + double *x, double *y, double *z ); +int pj_apply_gridshift_2( PJ *defn, int inverse, + long point_count, int point_offset, + double *x, double *y, double *z ); +int pj_apply_gridshift_3( projCtx ctx, + PJ_GRIDINFO **gridlist, int gridlist_count, + int inverse, long point_count, int point_offset, + double *x, double *y, double *z ); + +PJ_GRIDINFO **pj_gridlist_from_nadgrids( projCtx, const char *, int * ); void pj_deallocate_grids(); -PJ_GRIDINFO *pj_gridinfo_init( const char * ); -int pj_gridinfo_load( PJ_GRIDINFO * ); -void pj_gridinfo_free( PJ_GRIDINFO * ); +PJ_GRIDINFO *pj_gridinfo_init( projCtx, const char * ); +int pj_gridinfo_load( projCtx, PJ_GRIDINFO * ); +void pj_gridinfo_free( projCtx, PJ_GRIDINFO * ); void *proj_mdist_ini(double); double proj_mdist(double, double, double, const void *); -double proj_inv_mdist(double, const void *); +double proj_inv_mdist(projCtx ctx, double, const void *); void *pj_gauss_ini(double, double, double *,double *); -LP pj_gauss(LP, const void *); -LP pj_inv_gauss(LP, const void *); +LP pj_gauss(projCtx, LP, const void *); +LP pj_inv_gauss(projCtx, LP, const void *); extern char const pj_release[]; @@ -420,8 +459,12 @@ struct PJ_LIST *pj_get_list_ref( void ); struct PJ_PRIME_MERIDIANS *pj_get_prime_meridians_ref( void ); #ifndef DISABLE_CVSID -# define PJ_CVSID(string) static char pj_cvsid[] = string; \ +# if defined(__GNUC__) && __GNUC__ >= 4 +# define PJ_CVSID(string) static char pj_cvsid[] __attribute__((used)) = string; +# else +# define PJ_CVSID(string) static char pj_cvsid[] = string; \ static char *cvsid_aw() { return( cvsid_aw() ? ((char *) NULL) : pj_cvsid ); } +# endif #else # define PJ_CVSID(string) #endif diff --git a/src/vector1.c b/src/vector1.c index 30fca1cac..b3023ee59 100644 --- a/src/vector1.c +++ b/src/vector1.c @@ -15,7 +15,7 @@ freev2(void **v, int nrows) { vector2(int nrows, int ncols, int size) { void **s; - if (s = (void **)pj_malloc(sizeof(void *) * nrows)) { + if ((s = (void **)pj_malloc(sizeof(void *) * nrows)) != NULL) { int rsize, i; rsize = size * ncols;