diff --git a/extensions/test/gis/Jamfile.v2 b/extensions/test/gis/Jamfile.v2 index ac76bde767..bc67517dd8 100644 --- a/extensions/test/gis/Jamfile.v2 +++ b/extensions/test/gis/Jamfile.v2 @@ -5,11 +5,14 @@ # Copyright (c) 2009-2012 Mateusz Loskot, London, UK. # Copyright (c) 2015 Adam Wulkiewicz, Lodz, Poland. # +# This file was modified by Oracle on 2017. +# Modifications copyright (c) 2017, Oracle and/or its affiliates. +# Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +# # Use, modification and distribution is subject to the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) build-project io ; build-project latlong ; -build-project projections ; diff --git a/extensions/test/gis/projections/Jamfile.v2 b/extensions/test/gis/projections/Jamfile.v2 deleted file mode 100644 index 8e68c39a3d..0000000000 --- a/extensions/test/gis/projections/Jamfile.v2 +++ /dev/null @@ -1,18 +0,0 @@ -# Boost.Geometry (aka GGL, Generic Geometry Library) -# -# Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. -# Copyright (c) 2008-2012 Bruno Lalande, Paris, France. -# Copyright (c) 2009-2012 Mateusz Loskot, London, UK. -# -# Use, modification and distribution is subject to the Boost Software License, -# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -test-suite boost-geometry-extensions-gis-projections - : - [ run projection.cpp ] - [ run projections.cpp ] - [ run projections_combined.cpp ] - [ run projections_static.cpp ] - [ run projection_epsg.cpp ] - ; diff --git a/include/boost/geometry/algorithms/detail/azimuth.hpp b/include/boost/geometry/algorithms/detail/azimuth.hpp index a5863d7d24..21007778bb 100644 --- a/include/boost/geometry/algorithms/detail/azimuth.hpp +++ b/include/boost/geometry/algorithms/detail/azimuth.hpp @@ -15,18 +15,22 @@ #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_AZIMUTH_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_AZIMUTH_HPP + +#include + #include #include #include #include -#include - -#include - #include #include +#include + +#include + + namespace boost { namespace geometry { diff --git a/include/boost/geometry/algorithms/detail/envelope/segment.hpp b/include/boost/geometry/algorithms/detail/envelope/segment.hpp index 7e37194968..37f686104b 100644 --- a/include/boost/geometry/algorithms/detail/envelope/segment.hpp +++ b/include/boost/geometry/algorithms/detail/envelope/segment.hpp @@ -27,7 +27,6 @@ #include #include #include -#include #include #include #include diff --git a/include/boost/geometry/core/radius.hpp b/include/boost/geometry/core/radius.hpp index 6cbf6ac8f2..eef812e9ae 100644 --- a/include/boost/geometry/core/radius.hpp +++ b/include/boost/geometry/core/radius.hpp @@ -223,8 +223,8 @@ template struct radius_access : detail::radius_access { - BOOST_STATIC_ASSERT(Dimension == 0); - //BOOST_STATIC_ASSERT(Dimension < 3); + //BOOST_STATIC_ASSERT(Dimension == 0); + BOOST_STATIC_ASSERT(Dimension < 3); }; template @@ -237,8 +237,8 @@ template struct radius_access : detail::radius_access { - BOOST_STATIC_ASSERT(Dimension == 0 || Dimension == 2); - //BOOST_STATIC_ASSERT(Dimension < 3); + //BOOST_STATIC_ASSERT(Dimension == 0 || Dimension == 2); + BOOST_STATIC_ASSERT(Dimension < 3); }; } // namespace core_dispatch diff --git a/include/boost/geometry/extensions/gis/geographic/strategies/dms_parser.hpp b/include/boost/geometry/extensions/gis/geographic/strategies/dms_parser.hpp deleted file mode 100644 index 5fb829c525..0000000000 --- a/include/boost/geometry/extensions/gis/geographic/strategies/dms_parser.hpp +++ /dev/null @@ -1,278 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_DMS_PARSER_HPP -#define BOOST_GEOMETRY_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_DMS_PARSER_HPP - -// This file is totally revised from PROJ4 dmstor.c - -// PROJ4 is originally written by Gerald Evenden (then of the USGS) -// PROJ4 is maintained by Frank Warmerdam -// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) - -// Original copyright notice: - -// 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 - -#if !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) -#include -#endif // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) - -#include - -#include -#include - -#include - -namespace boost { namespace geometry -{ - - -struct dms_result -{ - enum axis_selector {axis_lat = 1, axis_lon = 0}; - - private : - typedef double T; - T m_angle; - axis_selector m_axis; - - public : - - explicit dms_result(T const& v, axis_selector ax) - : m_angle(v) - , m_axis(ax) - {} - - inline axis_selector axis() const { return m_axis; } - - inline operator double() const { return m_angle; } - - template - inline friend std::basic_ostream& operator<<(std::basic_ostream& os, - const dms_result& d) - { - os << d.m_angle; - return os; - } - -}; - - -namespace strategy -{ - - template - struct dms_parser - { - - - // Question from Barend: can we compile-time select that it is case-sensitive/case-insensitive? - // We have to change the switch then -> specializations - - // For now: make it (compile-time) case sensitive - static const int diff = 'a' - 'A'; -#ifndef __GNUC__ - BOOST_STATIC_ASSERT((diff > 0)); // make sure we've the right assumption. GCC does not accept this here. -#endif - static const char n_alter = N <= 'Z' ? N + diff : N - diff; - static const char e_alter = E <= 'Z' ? E + diff : E - diff; - static const char s_alter = S <= 'Z' ? S + diff : S - diff; - static const char w_alter = W <= 'Z' ? W + diff : W - diff; - - static const char r_alter = R <= 'Z' ? R + diff : R - diff; - - // degree is normally D (proj4) but might be superscript o - // Note d_alter is not correct then, so map it to NULL now, guarded by the while - static const char d_alter = - ((D >= 'A' && D <= 'Z') || (D >= 'a' && D <= 'z')) ? (D <= 'Z' ? D + diff : D - diff) : '\0'; - - - struct dms_value - { - double dms[3]; - bool has_dms[3]; - - dms_value() - { - memset(this, 0, sizeof(dms_value)); - } - }; - - - template - static inline void assign_dms(dms_value& dms, std::string& value, bool& has_value) - { -#if !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) - dms.dms[I] = boost::lexical_cast(value.c_str()); -#else // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) - dms.dms[I] = std::atof(value.c_str()); -#endif // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) - dms.has_dms[I] = true; - has_value = false; - value.clear(); - } - - static inline void process(dms_value& dms, std::string& value, bool& has_value) - { - if (has_value) - { - // Assign last one, sequentially - if (! dms.has_dms[0]) assign_dms<0>(dms, value, has_value); - else if (! dms.has_dms[1]) assign_dms<1>(dms, value, has_value); - else if (! dms.has_dms[2]) assign_dms<2>(dms, value, has_value); - } - } - - - dms_result operator()(const char* is) const - { - dms_value dms; - bool has_value = false; - std::string value; - - double factor = 1.0; // + denotes N/E values, -1 denotes S/W values - dms_result::axis_selector axis = dms_result::axis_lon; // true denotes N/S values - bool in_radian = false; // true denotes values as "0.1R" - - while(*is) - { - switch(*is) - { - case '-' : - if (! has_value && ! dms.has_dms[0]) - { - factor = -factor; - } - break; - case N : - case n_alter : - axis = dms_result::axis_lat; - break; - case S : - case s_alter : - axis = dms_result::axis_lat; - factor = -factor; - break; - case E : - case e_alter : - axis = dms_result::axis_lon; - break; - case W : - case w_alter : - axis = dms_result::axis_lon; - factor = -factor; - break; - case D : - case d_alter : - if (! dms.has_dms[0] && has_value) - { - assign_dms<0>(dms, value, has_value); - } - break; - case R : - case r_alter : - if (! dms.has_dms[0] && has_value) - { - // specified value is in radian! - in_radian = true; - assign_dms<0>(dms, value, has_value); - } - break; - case MIN: - if (! dms.has_dms[1] && has_value) - { - assign_dms<1>(dms, value, has_value); - } - break; - case SEC : - if (! dms.has_dms[2] && has_value) - { - assign_dms<2>(dms, value, has_value); - } - break; - case ' ' : - case '\t' : - case '\n' : - process(dms, value, has_value); - break; - default : - value += *is; - has_value = true; - break; - } - is++; - } - - // Assign last one, if any - process(dms, value, has_value); - - double const d2r = math::d2r(); - double const r2d = math::r2d(); - - return dms_result(factor * - (in_radian && as_radian - ? dms.dms[0] - : in_radian && ! as_radian - ? dms.dms[0] * r2d - : ! in_radian && as_radian - ? dms.dms[0] * d2r + dms.dms[1] * d2r / 60.0 + dms.dms[2] * d2r / 3600.0 - : dms.dms[0] + dms.dms[1] / 60.0 + dms.dms[2] / 3600.0) - , axis); - } - }; - -} - - -#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS - -template class CoordinateSystem> -struct strategy_parse > -{ - typedef strategy::dms_parser type; -}; - - -template class CoordinateSystem> -struct strategy_parse > -{ - typedef strategy::dms_parser type; -}; - -#endif - - -}} // namespace boost::geometry - -#endif // BOOST_GEOMETRY_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_DMS_PARSER_HPP diff --git a/include/boost/geometry/extensions/gis/projections/epsg_traits.hpp b/include/boost/geometry/extensions/gis/projections/epsg_traits.hpp deleted file mode 100644 index d0140b3094..0000000000 --- a/include/boost/geometry/extensions/gis/projections/epsg_traits.hpp +++ /dev/null @@ -1,43 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_PROJECTIONS_EPSG_TRAITS_HPP -#define BOOST_GEOMETRY_PROJECTIONS_EPSG_TRAITS_HPP - - -#include - - -namespace boost { namespace geometry { namespace projections -{ - -/*! - \brief EPSG traits - \details With help of the EPSG traits library users can statically use projections - or coordinate systems specifying an EPSG code. The correct projections for transformations - are used automically then, still keeping static polymorphism. - \ingroup projection - \tparam EPSG epsg code - \tparam LL latlong point type - \tparam XY xy point type - \tparam PAR parameter type, normally not specified -*/ -template -struct epsg_traits -{ - // Specializations define: - // - type to get projection type - // - function par to get parameters -}; - - -}}} // namespace boost::geometry::projections - - -#endif - diff --git a/include/boost/geometry/extensions/gis/projections/factory.hpp b/include/boost/geometry/extensions/gis/projections/factory.hpp deleted file mode 100644 index 6f5ff26bd0..0000000000 --- a/include/boost/geometry/extensions/gis/projections/factory.hpp +++ /dev/null @@ -1,267 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP -#define BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace geometry { namespace projections -{ - -template -class factory : public detail::base_factory -{ -private: - - typedef std::map - < - std::string, - boost::shared_ptr - < - detail::factory_entry - < - LatLong, - Cartesian, - Parameters - > - > - > prj_registry; - prj_registry m_registry; - -public: - - factory() - { - detail::aea_init(*this); - detail::aeqd_init(*this); - detail::airy_init(*this); - detail::aitoff_init(*this); - detail::august_init(*this); - detail::bacon_init(*this); - detail::bipc_init(*this); - detail::boggs_init(*this); - detail::bonne_init(*this); - detail::cass_init(*this); - detail::cc_init(*this); - detail::cea_init(*this); - detail::chamb_init(*this); - detail::collg_init(*this); - detail::crast_init(*this); - detail::denoy_init(*this); - detail::eck1_init(*this); - detail::eck2_init(*this); - detail::eck3_init(*this); - detail::eck4_init(*this); - detail::eck5_init(*this); - detail::eqc_init(*this); - detail::eqdc_init(*this); - detail::etmerc_init(*this); - detail::fahey_init(*this); - detail::fouc_s_init(*this); - detail::gall_init(*this); - detail::geocent_init(*this); - detail::geos_init(*this); - detail::gins8_init(*this); - detail::gn_sinu_init(*this); - detail::gnom_init(*this); - detail::goode_init(*this); - detail::gstmerc_init(*this); - detail::hammer_init(*this); - detail::hatano_init(*this); - detail::healpix_init(*this); - detail::krovak_init(*this); - detail::igh_init(*this); - detail::imw_p_init(*this); - detail::isea_init(*this); - detail::labrd_init(*this); - detail::laea_init(*this); - detail::lagrng_init(*this); - detail::larr_init(*this); - detail::lask_init(*this); - detail::latlong_init(*this); - detail::lcc_init(*this); - detail::lcca_init(*this); - detail::loxim_init(*this); - detail::lsat_init(*this); - detail::mbtfpp_init(*this); - detail::mbtfpq_init(*this); - detail::mbt_fps_init(*this); - detail::merc_init(*this); - detail::mill_init(*this); - detail::mod_ster_init(*this); - detail::moll_init(*this); - detail::natearth_init(*this); - detail::nell_init(*this); - detail::nell_h_init(*this); - detail::nocol_init(*this); - detail::nsper_init(*this); - detail::nzmg_init(*this); - detail::ob_tran_init(*this); - detail::ocea_init(*this); - detail::oea_init(*this); - detail::omerc_init(*this); - detail::ortho_init(*this); - detail::qsc_init(*this); - detail::poly_init(*this); - detail::putp2_init(*this); - detail::putp3_init(*this); - detail::putp4p_init(*this); - detail::putp5_init(*this); - detail::putp6_init(*this); - detail::robin_init(*this); - detail::rouss_init(*this); - detail::rpoly_init(*this); - detail::sconics_init(*this); - detail::somerc_init(*this); - detail::stere_init(*this); - detail::sterea_init(*this); - detail::sts_init(*this); - detail::tcc_init(*this); - detail::tcea_init(*this); - detail::tmerc_init(*this); - detail::tpeqd_init(*this); - detail::urm5_init(*this); - detail::urmfps_init(*this); - detail::vandg_init(*this); - detail::vandg2_init(*this); - detail::vandg4_init(*this); - detail::wag2_init(*this); - detail::wag3_init(*this); - detail::wag7_init(*this); - detail::wink1_init(*this); - detail::wink2_init(*this); - } - - virtual ~factory() {} - - virtual void add_to_factory(std::string const& name, - detail::factory_entry* sub) - { - m_registry[name].reset(sub); - } - - inline projection* create_new(Parameters const& parameters) - { - typename prj_registry::iterator it = m_registry.find(parameters.name); - if (it != m_registry.end()) - { - return it->second->create_new(parameters); - } - - return 0; - } -}; - -}}} // namespace boost::geometry::projections - -#endif // BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP diff --git a/include/boost/geometry/extensions/gis/projections/impl/base_dynamic.hpp b/include/boost/geometry/extensions/gis/projections/impl/base_dynamic.hpp deleted file mode 100644 index 8ee12119a6..0000000000 --- a/include/boost/geometry/extensions/gis/projections/impl/base_dynamic.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP -#define BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP - -#include - - -#include - -namespace boost { namespace geometry { namespace projections -{ - -#ifndef DOXYGEN_NO_DETAIL -namespace detail -{ - -// Base-virtual-forward -template -class base_v_f : public projection -{ -protected: - - typedef typename projection::LL_T LL_T; - typedef typename projection::XY_T XY_T; - -public: - - base_v_f(P const& params) : m_proj(params) {} - - virtual P const& params() const { return m_proj.params(); } - - virtual P& mutable_params() { return m_proj.mutable_params(); } - - virtual bool forward(LL const& ll, XY& xy) const - { - return m_proj.forward(ll, xy); - } - - virtual void fwd(LL_T& lp_lon, LL_T& lp_lat, XY_T& xy_x, XY_T& xy_y) const - { - m_proj.fwd(lp_lon, lp_lat, xy_x, xy_y); - } - - virtual bool inverse(XY const& , LL& ) const - { - // exception? - return false; - } - virtual void inv(XY_T& , XY_T& , LL_T& , LL_T& ) const - { - // exception? - } - - virtual std::string name() const - { - return m_proj.name(); - } - -protected: - - C m_proj; -}; - -// Base-virtual-forward/inverse -template -class base_v_fi : public base_v_f -{ -private: - - typedef typename base_v_f::LL_T LL_T; - typedef typename base_v_f::XY_T XY_T; - -public : - - base_v_fi(P const& params) : base_v_f(params) {} - - virtual bool inverse(XY const& xy, LL& ll) const - { - return this->m_proj.inverse(xy, ll); - } - - void inv(XY_T& xy_x, XY_T& xy_y, LL_T& lp_lon, LL_T& lp_lat) const - { - this->m_proj.inv(xy_x, xy_y, lp_lon, lp_lat); - } -}; - -} // namespace detail -#endif // DOXYGEN_NO_DETAIL - -}}} // namespace boost::geometry::projections - -#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP diff --git a/include/boost/geometry/extensions/gis/projections/impl/projects.hpp b/include/boost/geometry/extensions/gis/projections/impl/projects.hpp deleted file mode 100644 index 7fbd5d8761..0000000000 --- a/include/boost/geometry/extensions/gis/projections/impl/projects.hpp +++ /dev/null @@ -1,181 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) -// This file is manually converted from PROJ4 (projects.h) - -// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// This file is converted from PROJ4, http://trac.osgeo.org/proj -// PROJ4 is originally written by Gerald Evenden (then of the USGS) -// PROJ4 is maintained by Frank Warmerdam -// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) - -// Original copyright notice: - -// 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. - -#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP -#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP - -#include -#include -#include - -#include - -namespace boost { namespace geometry { namespace projections -{ - -#ifndef DOXYGEN_NO_DETAIL -namespace detail -{ - -/* some useful constants */ -static const double FORTPI = boost::math::constants::pi() / 4.0; - -static const int PJD_UNKNOWN =0; -static const int PJD_3PARAM = 1; -static const int PJD_7PARAM = 2; -static const int PJD_GRIDSHIFT = 3; -static const int PJD_WGS84 = 4; /* WGS84 (or anything considered equivelent) */ - - -struct pvalue -{ - std::string param; - int used; - - int i; - double f; - std::string s; -}; - -struct pj_const_pod -{ - int over; /* over-range flag */ - int geoc; /* geocentric latitude flag */ - int is_latlong; /* proj=latlong ... not really a projection at all */ - int is_geocent; /* proj=geocent ... not really a projection at all */ - double - a, /* major axis or radius if es==0 */ - a_orig, /* major axis before any +proj related adjustment */ - es, /* e ^ 2 */ - es_orig, /* es before any +proj related adjustment */ - e, /* eccentricity */ - ra, /* 1/A */ - one_es, /* 1 - e^2 */ - rone_es, /* 1/one_es */ - lam0, phi0, /* central longitude, latitude */ - x0, y0, /* easting and northing */ - k0, /* general scaling factor */ - to_meter, fr_meter; /* cartesian scaling */ - - int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */ - double datum_params[7]; - double from_greenwich; /* prime meridian offset (in radians) */ - double long_wrap_center; /* 0.0 for -180 to 180, actually in radians*/ - - // Initialize all variables to zero - pj_const_pod() - { - std::memset(this, 0, sizeof(pj_const_pod)); - } -}; - -// PROJ4 complex. Might be replaced with std::complex -struct COMPLEX { double r, i; }; - -struct PJ_ELLPS -{ - std::string id; /* ellipse keyword name */ - std::string major; /* a= value */ - std::string ell; /* elliptical parameter */ - std::string name; /* comments */ -}; - -struct PJ_DATUMS -{ - std::string id; /* datum keyword */ - std::string defn; /* ie. "to_wgs84=..." */ - std::string ellipse_id; /* ie from ellipse table */ - std::string comments; /* EPSG code, etc */ -}; - -struct PJ_PRIME_MERIDIANS -{ - std::string id; /* prime meridian keyword */ - std::string defn; /* offset from greenwich in DMS format. */ -}; - -struct PJ_UNITS -{ - std::string id; /* units keyword */ - std::string to_meter; /* multiply by value to get meters */ - std::string name; /* comments */ -}; - -struct DERIVS -{ - double x_l, x_p; /* derivatives of x for lambda-phi */ - double y_l, y_p; /* derivatives of y for lambda-phi */ -}; - -struct FACTORS -{ - struct 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 */ -}; - -} // namespace detail -#endif // DOXYGEN_NO_DETAIL - -/*! - \brief parameters, projection parameters - \details This structure initializes all projections - \ingroup projection -*/ -struct parameters : public detail::pj_const_pod -{ - std::string name; - std::vector params; -}; - -// TODO: derived from boost::exception / make more for forward/inverse/init/setup -class proj_exception -{ -public: - - proj_exception(int code = 0) - : m_code(code) - { - } - int code() const { return m_code; } -private : - int m_code; -}; - -}}} // namespace boost::geometry::projections -#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP diff --git a/include/boost/geometry/extensions/gis/projections/new_projection.hpp b/include/boost/geometry/extensions/gis/projections/new_projection.hpp deleted file mode 100644 index f065297103..0000000000 --- a/include/boost/geometry/extensions/gis/projections/new_projection.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2012 Krzysztof Czainski -// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_PROJECTIONS_NEW_PROJECTION_HPP -#define BOOST_GEOMETRY_PROJECTIONS_NEW_PROJECTION_HPP - -#include -#include -#include - -namespace boost { namespace geometry { namespace projections -{ - -/*! -\brief Creates a type-erased projection -\details Creates using operator new a class derived from projection, that forwards method - calls to @p Proj. -\ingroup projection -\tparam Projection Type of the concrete projection to be created. -\tparam Parameters projection parameters type -\see projection -\see factory -*/ - -//@{ -template -inline projection - < - typename detail::projection_point_type::type - , typename detail::projection_point_type::type - >* new_projection(Parameters const& par) -{ - return new detail::base_v_fi - < - Projection - , typename detail::projection_point_type::type - , typename detail::projection_point_type::type - , Parameters - >(par); -} -//@} - -}}} // boost::geometry::projections - -#endif // BOOST_GEOMETRY_PROJECTIONS_NEW_PROJECTION_HPP diff --git a/include/boost/geometry/extensions/gis/projections/parameters.hpp b/include/boost/geometry/extensions/gis/projections/parameters.hpp deleted file mode 100644 index b41c0f5c63..0000000000 --- a/include/boost/geometry/extensions/gis/projections/parameters.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_PROJECTIONS_PARAMETERS_HPP -#define BOOST_GEOMETRY_PROJECTIONS_PARAMETERS_HPP - - -#include -#include - - -#include -#include - - -namespace boost { namespace geometry { namespace projections { - -template -inline parameters init(const R& arguments) -{ - return detail::pj_init(arguments); -} - -/*! -\ingroup projection -\brief Initializes a projection as a string, using the format with + and = -\details The projection can be initialized with a string (with the same format as the PROJ4 package) for - convenient initialization from, for example, the command line -\par Example - +proj=labrd +ellps=intl +lon_0=46d26'13.95E +lat_0=18d54S +azi=18d54 +k_0=.9995 +x_0=400000 +y_0=800000 - for the Madagascar projection. -\note Parameters are described in the group -*/ -inline parameters init(const std::string& arguments) -{ - return detail::pj_init_plus(arguments); -} - -/*! -\ingroup projection -\brief Overload using a const char* -*/ -inline parameters init(const char* arguments) -{ - return detail::pj_init_plus(arguments); -} - - -// todo: -/* -parameters init(const std::map& arguments) -{ - return detail::pj_init_plus(arguments); -} -*/ - - - -}}} // namespace boost::geometry::projections -#endif diff --git a/include/boost/geometry/extensions/gis/projections/proj/aea.hpp b/include/boost/geometry/extensions/gis/projections/proj/aea.hpp deleted file mode 100644 index 309dc66969..0000000000 --- a/include/boost/geometry/extensions/gis/projections/proj/aea.hpp +++ /dev/null @@ -1,545 +0,0 @@ -#ifndef BOOST_GEOMETRY_PROJECTIONS_AEA_HPP -#define BOOST_GEOMETRY_PROJECTIONS_AEA_HPP - -// Boost.Geometry - extensions-gis-projections (based on PROJ4) -// This file is automatically generated. DO NOT EDIT. - -// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// This file is converted from PROJ4, http://trac.osgeo.org/proj -// PROJ4 is originally written by Gerald Evenden (then of the USGS) -// PROJ4 is maintained by Frank Warmerdam -// PROJ4 is converted to Boost.Geometry by Barend Gehrels - -// Last updated version of proj: 4.9.1 - -// Original copyright notice: - -// Purpose: Implementation of the aea (Albers Equal Area) projection. -// Author: Gerald Evenden -// Copyright (c) 1995, Gerald 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. - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace geometry { namespace projections -{ - #ifndef DOXYGEN_NO_DETAIL - namespace detail { namespace aea - { - - static const double EPS10 = 1.e-10; - static const double TOL7 = 1.e-7; - static const int N_ITER = 15; - static const double EPSILON = 1.0e-7; - static const double TOL = 1.0e-10; - - struct par_aea - { - double ec; - double n; - double c; - double dd; - double n2; - double rho0; - double phi1; - double phi2; - double en[EN_SIZE]; - int ellips; - }; - - /* determine latitude angle phi-1 */ - static double - phi1_(double qs, double Te, double Tone_es) { - int i; - double Phi, sinpi, cospi, con, com, dphi; - - Phi = asin (.5 * qs); - if (Te < EPSILON) - return( Phi ); - i = N_ITER; - do { - sinpi = sin (Phi); - cospi = cos (Phi); - con = Te * sinpi; - com = 1. - con * con; - dphi = .5 * com * com / cospi * (qs / Tone_es - - sinpi / com + .5 / Te * log ((1. - con) / - (1. + con))); - Phi += dphi; - } while (fabs(dphi) > TOL && --i); - return( i ? Phi : HUGE_VAL ); - } - - // template class, using CRTP to implement forward/inverse - template - struct base_aea_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> - { - - typedef double geographic_type; - typedef double cartesian_type; - - par_aea m_proj_parm; - - inline base_aea_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} - - // FORWARD(e_forward) ellipsoid & spheroid - // Project coordinates from geographic (lon, lat) to cartesian (x, y) - inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const - { - double rho = 0.0; - if ((rho = this->m_proj_parm.c - (this->m_proj_parm.ellips ? this->m_proj_parm.n * pj_qsfn(sin(lp_lat), - this->m_par.e, this->m_par.one_es) : this->m_proj_parm.n2 * sin(lp_lat))) < 0.) throw proj_exception(); - rho = this->m_proj_parm.dd * sqrt(rho); - xy_x = rho * sin( lp_lon *= this->m_proj_parm.n ); - xy_y = this->m_proj_parm.rho0 - rho * cos(lp_lon); - } - - // INVERSE(e_inverse) ellipsoid & spheroid - // Project coordinates from cartesian (x, y) to geographic (lon, lat) - inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const - { - double rho = 0.0; - if( (rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0 ) { - if (this->m_proj_parm.n < 0.) { - rho = -rho; - xy_x = -xy_x; - xy_y = -xy_y; - } - lp_lat = rho / this->m_proj_parm.dd; - if (this->m_proj_parm.ellips) { - lp_lat = (this->m_proj_parm.c - lp_lat * lp_lat) / this->m_proj_parm.n; - if (fabs(this->m_proj_parm.ec - fabs(lp_lat)) > TOL7) { - if ((lp_lat = phi1_(lp_lat, this->m_par.e, this->m_par.one_es)) == HUGE_VAL) - throw proj_exception(); - } else - lp_lat = lp_lat < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); - } else if (fabs(lp_lat = (this->m_proj_parm.c - lp_lat * lp_lat) / this->m_proj_parm.n2) <= 1.) - lp_lat = asin(lp_lat); - else - lp_lat = lp_lat < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); - lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n; - } else { - lp_lon = 0.; - lp_lat = this->m_proj_parm.n > 0. ? geometry::math::half_pi() : - geometry::math::half_pi(); - } - } - - static inline std::string get_name() - { - return "aea_ellipsoid"; - } - - }; - - template - void setup(Parameters& par, par_aea& proj_parm) - { - double cosphi, sinphi; - int secant; - - if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10) throw proj_exception(-21); - proj_parm.n = sinphi = sin(proj_parm.phi1); - cosphi = cos(proj_parm.phi1); - secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10; - if( (proj_parm.ellips = (par.es > 0.))) { - double ml1, m1; - - if (!pj_enfn(par.es, proj_parm.en)) throw proj_exception(0); - m1 = pj_msfn(sinphi, cosphi, par.es); - ml1 = pj_qsfn(sinphi, par.e, par.one_es); - if (secant) { /* secant cone */ - double ml2, m2; - - sinphi = sin(proj_parm.phi2); - cosphi = cos(proj_parm.phi2); - m2 = pj_msfn(sinphi, cosphi, par.es); - ml2 = pj_qsfn(sinphi, par.e, par.one_es); - proj_parm.n = (m1 * m1 - m2 * m2) / (ml2 - ml1); - } - proj_parm.ec = 1. - .5 * par.one_es * log((1. - par.e) / - (1. + par.e)) / par.e; - proj_parm.c = m1 * m1 + proj_parm.n * ml1; - proj_parm.dd = 1. / proj_parm.n; - proj_parm.rho0 = proj_parm.dd * sqrt(proj_parm.c - proj_parm.n * pj_qsfn(sin(par.phi0), - par.e, par.one_es)); - } else { - if (secant) proj_parm.n = .5 * (proj_parm.n + sin(proj_parm.phi2)); - proj_parm.n2 = proj_parm.n + proj_parm.n; - proj_parm.c = cosphi * cosphi + proj_parm.n2 * sinphi; - proj_parm.dd = 1. / proj_parm.n; - proj_parm.rho0 = proj_parm.dd * sqrt(proj_parm.c - proj_parm.n2 * sin(par.phi0)); - } - } - - - // Albers Equal Area - template - void setup_aea(Parameters& par, par_aea& proj_parm) - { - boost::ignore_unused(phi1_); - proj_parm.phi1 = pj_param(par.params, "rlat_1").f; - proj_parm.phi2 = pj_param(par.params, "rlat_2").f; - setup(par, proj_parm); - } - - // Lambert Equal Area Conic - template - void setup_leac(Parameters& par, par_aea& proj_parm) - { - proj_parm.phi2 = pj_param(par.params, "rlat_1").f; - proj_parm.phi1 = pj_param(par.params, "bsouth").i ? - geometry::math::half_pi(): geometry::math::half_pi(); - setup(par, proj_parm); - } - - }} // namespace detail::aea - #endif // doxygen - - /*! - \brief Albers Equal Area projection - \ingroup projections - \tparam Geographic latlong point type - \tparam Cartesian xy point type - \tparam Parameters parameter type - \par Projection characteristics - - Conic - - Spheroid - - Ellipsoid - \par Projection parameters - - lat_1: Latitude of first standard parallel (degrees) - - lat_2: Latitude of second standard parallel (degrees) - \par Example - \image html ex_aea.gif - */ - template - struct aea_ellipsoid : public detail::aea::base_aea_ellipsoid - { - inline aea_ellipsoid(const Parameters& par) : detail::aea::base_aea_ellipsoid(par) - { - detail::aea::setup_aea(this->m_par, this->m_proj_parm); - } - }; - - /*! - \brief Lambert Equal Area Conic projection - \ingroup projections - \tparam Geographic latlong point type - \tparam Cartesian xy point type - \tparam Parameters parameter type - \par Projection characteristics - - Conic - - Spheroid - - Ellipsoid - \par Projection parameters - - lat_1: Latitude of first standard parallel (degrees) - - south: Denotes southern hemisphere UTM zone (boolean) - \par Example - \image html ex_leac.gif - */ - template - struct leac_ellipsoid : public detail::aea::base_aea_ellipsoid - { - inline leac_ellipsoid(const Parameters& par) : detail::aea::base_aea_ellipsoid(par) - { - detail::aea::setup_leac(this->m_par, this->m_proj_parm); - } - }; - - #ifndef DOXYGEN_NO_DETAIL - namespace detail - { - - // Factory entry(s) - template - class aea_entry : public detail::factory_entry - { - public : - virtual projection* create_new(const Parameters& par) const - { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); - } - }; - - template - class leac_entry : public detail::factory_entry - { - public : - virtual projection* create_new(const Parameters& par) const - { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); - } - }; - - template - inline void aea_init(detail::base_factory& factory) - { - factory.add_to_factory("aea", new aea_entry); - factory.add_to_factory("leac", new leac_entry); - } - - } // namespace detail - // Create EPSG specializations - // (Proof of Concept, only for some) - - template - struct epsg_traits<2964, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; - } - }; - - - template - struct epsg_traits<3005, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3083, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3085, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3086, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3087, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3153, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3174, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3175, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3309, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3310, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3311, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3338, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3467, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3488, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3513, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3577, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3578, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3579, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3665, LatLongRadian, Cartesian, Parameters> - { - typedef aea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - #endif // doxygen - -}}} // namespace boost::geometry::projections - -#endif // BOOST_GEOMETRY_PROJECTIONS_AEA_HPP - diff --git a/include/boost/geometry/extensions/gis/projections/proj/cass.hpp b/include/boost/geometry/extensions/gis/projections/proj/cass.hpp deleted file mode 100644 index f0a1c5a35e..0000000000 --- a/include/boost/geometry/extensions/gis/projections/proj/cass.hpp +++ /dev/null @@ -1,477 +0,0 @@ -#ifndef BOOST_GEOMETRY_PROJECTIONS_CASS_HPP -#define BOOST_GEOMETRY_PROJECTIONS_CASS_HPP - -// Boost.Geometry - extensions-gis-projections (based on PROJ4) -// This file is automatically generated. DO NOT EDIT. - -// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// This file is converted from PROJ4, http://trac.osgeo.org/proj -// PROJ4 is originally written by Gerald Evenden (then of the USGS) -// PROJ4 is maintained by Frank Warmerdam -// PROJ4 is converted to Boost.Geometry by Barend Gehrels - -// Last updated version of proj: 4.9.1 - -// Original copyright notice: - -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. - -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace geometry { namespace projections -{ - #ifndef DOXYGEN_NO_DETAIL - namespace detail { namespace cass - { - - static const double EPS10 = 1e-10; - static const double C1 = .16666666666666666666; - static const double C2 = .00833333333333333333; - static const double C3 = .04166666666666666666; - static const double C4 = .33333333333333333333; - static const double C5 = .06666666666666666666; - - struct par_cass - { - double m0; - double en[EN_SIZE]; - }; - - // template class, using CRTP to implement forward/inverse - template - struct base_cass_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> - { - - typedef double geographic_type; - typedef double cartesian_type; - - par_cass m_proj_parm; - - inline base_cass_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} - - // FORWARD(e_forward) ellipsoid - // Project coordinates from geographic (lon, lat) to cartesian (x, y) - inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const - { - double n = sin(lp_lat); - double c = cos(lp_lat); - xy_y = pj_mlfn(lp_lat, n, c, this->m_proj_parm.en); - n = 1./sqrt(1. - this->m_par.es * n * n); - double tn = tan(lp_lat); double t = tn * tn; - double a1 = lp_lon * c; - c *= this->m_par.es * c / (1 - this->m_par.es); - double a2 = a1 * a1; - xy_x = n * a1 * (1. - a2 * t * - (C1 - (8. - t + 8. * c) * a2 * C2)); - xy_y -= this->m_proj_parm.m0 - n * tn * a2 * - (.5 + (5. - t + 6. * c) * a2 * C3); - } - - // INVERSE(e_inverse) ellipsoid - // Project coordinates from cartesian (x, y) to geographic (lon, lat) - inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const - { - double ph1; - - ph1 = pj_inv_mlfn(this->m_proj_parm.m0 + xy_y, this->m_par.es, this->m_proj_parm.en); - double tn = tan(ph1); double t = tn * tn; - double n = sin(ph1); - double r = 1. / (1. - this->m_par.es * n * n); - n = sqrt(r); - r *= (1. - this->m_par.es) * n; - double dd = xy_x / n; - double d2 = dd * dd; - lp_lat = ph1 - (n * tn / r) * d2 * - (.5 - (1. + 3. * t) * d2 * C3); - lp_lon = dd * (1. + t * d2 * - (-C4 + (1. + 3. * t) * d2 * C5)) / cos(ph1); - } - - static inline std::string get_name() - { - return "cass_ellipsoid"; - } - - }; - - // template class, using CRTP to implement forward/inverse - template - struct base_cass_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> - { - - typedef double geographic_type; - typedef double cartesian_type; - - par_cass m_proj_parm; - - inline base_cass_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} - - // FORWARD(s_forward) spheroid - // Project coordinates from geographic (lon, lat) to cartesian (x, y) - inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const - { - xy_x = asin(cos(lp_lat) * sin(lp_lon)); - xy_y = atan2(tan(lp_lat) , cos(lp_lon)) - this->m_par.phi0; - } - - // INVERSE(s_inverse) spheroid - // Project coordinates from cartesian (x, y) to geographic (lon, lat) - inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const - { - double dd = xy_y + this->m_par.phi0; - lp_lat = asin(sin(dd) * cos(xy_x)); - lp_lon = atan2(tan(xy_x), cos(dd)); - } - - static inline std::string get_name() - { - return "cass_spheroid"; - } - - }; - - // Cassini - template - void setup_cass(Parameters& par, par_cass& proj_parm) - { - if (par.es) { - if (!pj_enfn(par.es, proj_parm.en)) throw proj_exception(0); - proj_parm.m0 = pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en); - } else { - } - } - - }} // namespace detail::cass - #endif // doxygen - - /*! - \brief Cassini projection - \ingroup projections - \tparam Geographic latlong point type - \tparam Cartesian xy point type - \tparam Parameters parameter type - \par Projection characteristics - - Cylindrical - - Spheroid - - Ellipsoid - \par Example - \image html ex_cass.gif - */ - template - struct cass_ellipsoid : public detail::cass::base_cass_ellipsoid - { - inline cass_ellipsoid(const Parameters& par) : detail::cass::base_cass_ellipsoid(par) - { - detail::cass::setup_cass(this->m_par, this->m_proj_parm); - } - }; - - /*! - \brief Cassini projection - \ingroup projections - \tparam Geographic latlong point type - \tparam Cartesian xy point type - \tparam Parameters parameter type - \par Projection characteristics - - Cylindrical - - Spheroid - - Ellipsoid - \par Example - \image html ex_cass.gif - */ - template - struct cass_spheroid : public detail::cass::base_cass_spheroid - { - inline cass_spheroid(const Parameters& par) : detail::cass::base_cass_spheroid(par) - { - detail::cass::setup_cass(this->m_par, this->m_proj_parm); - } - }; - - #ifndef DOXYGEN_NO_DETAIL - namespace detail - { - - // Factory entry(s) - template - class cass_entry : public detail::factory_entry - { - public : - virtual projection* create_new(const Parameters& par) const - { - if (par.es) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); - else - return new base_v_fi, Geographic, Cartesian, Parameters>(par); - } - }; - - template - inline void cass_init(detail::base_factory& factory) - { - factory.add_to_factory("cass", new cass_entry); - } - - } // namespace detail - // Create EPSG specializations - // (Proof of Concept, only for some) - - template - struct epsg_traits<2066, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<2099, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m"; - } - }; - - - template - struct epsg_traits<2314, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3068, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +datum=potsdam +units=m"; - } - }; - - - template - struct epsg_traits<3140, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168"; - } - }; - - - template - struct epsg_traits<3366, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3377, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3378, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3379, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3380, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3381, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3382, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3383, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3384, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3385, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3407, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<24500, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m"; - } - }; - - - template - struct epsg_traits<28191, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<28193, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<30200, LatLongRadian, Cartesian, Parameters> - { - typedef cass_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - #endif // doxygen - -}}} // namespace boost::geometry::projections - -#endif // BOOST_GEOMETRY_PROJECTIONS_CASS_HPP - diff --git a/include/boost/geometry/extensions/gis/projections/proj/robin.hpp b/include/boost/geometry/extensions/gis/projections/proj/robin.hpp deleted file mode 100644 index bdcc5bf6b3..0000000000 --- a/include/boost/geometry/extensions/gis/projections/proj/robin.hpp +++ /dev/null @@ -1,256 +0,0 @@ -#ifndef BOOST_GEOMETRY_PROJECTIONS_ROBIN_HPP -#define BOOST_GEOMETRY_PROJECTIONS_ROBIN_HPP - -// Boost.Geometry - extensions-gis-projections (based on PROJ4) -// This file is automatically generated. DO NOT EDIT. - -// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// This file is converted from PROJ4, http://trac.osgeo.org/proj -// PROJ4 is originally written by Gerald Evenden (then of the USGS) -// PROJ4 is maintained by Frank Warmerdam -// PROJ4 is converted to Boost.Geometry by Barend Gehrels - -// Last updated version of proj: 4.9.1 - -// Original copyright notice: - -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. - -#include - -#include -#include -#include -#include -#include - -namespace boost { namespace geometry { namespace projections -{ - #ifndef DOXYGEN_NO_DETAIL - namespace detail { namespace robin - { - - static const double FXC = 0.8487; - static const double FYC = 1.3523; - static const double C1 = 11.45915590261646417544; - static const double RC1 = 0.08726646259971647884; - static const int NODES = 18; - static const double ONEEPS = 1.000001; - static const double EPS = 1e-8; - - /* - note: following terms based upon 5 deg. intervals in degrees. - - Some background on these coefficients is available at: - - http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039 - http://trac.osgeo.org/proj/ticket/113 - */ - - struct COEFS { - double c0, c1, c2, c3; - }; - - static const struct COEFS X[] = { - {1, 2.2199e-17, -7.15515e-05, 3.1103e-06}, - {0.9986, -0.000482243, -2.4897e-05, -1.3309e-06}, - {0.9954, -0.00083103, -4.48605e-05, -9.86701e-07}, - {0.99, -0.00135364, -5.9661e-05, 3.6777e-06}, - {0.9822, -0.00167442, -4.49547e-06, -5.72411e-06}, - {0.973, -0.00214868, -9.03571e-05, 1.8736e-08}, - {0.96, -0.00305085, -9.00761e-05, 1.64917e-06}, - {0.9427, -0.00382792, -6.53386e-05, -2.6154e-06}, - {0.9216, -0.00467746, -0.00010457, 4.81243e-06}, - {0.8962, -0.00536223, -3.23831e-05, -5.43432e-06}, - {0.8679, -0.00609363, -0.000113898, 3.32484e-06}, - {0.835, -0.00698325, -6.40253e-05, 9.34959e-07}, - {0.7986, -0.00755338, -5.00009e-05, 9.35324e-07}, - {0.7597, -0.00798324, -3.5971e-05, -2.27626e-06}, - {0.7186, -0.00851367, -7.01149e-05, -8.6303e-06}, - {0.6732, -0.00986209, -0.000199569, 1.91974e-05}, - {0.6213, -0.010418, 8.83923e-05, 6.24051e-06}, - {0.5722, -0.00906601, 0.000182, 6.24051e-06}, - {0.5322, -0.00677797, 0.000275608, 6.24051e-06} - }; - static const struct COEFS Y[] = { - {-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11}, - {0.062, 0.0124, -1.26793e-09, 4.22642e-10}, - {0.124, 0.0124, 5.07171e-09, -1.60604e-09}, - {0.186, 0.0123999, -1.90189e-08, 6.00152e-09}, - {0.248, 0.0124002, 7.10039e-08, -2.24e-08}, - {0.31, 0.0123992, -2.64997e-07, 8.35986e-08}, - {0.372, 0.0124029, 9.88983e-07, -3.11994e-07}, - {0.434, 0.0123893, -3.69093e-06, -4.35621e-07}, - {0.4958, 0.0123198, -1.02252e-05, -3.45523e-07}, - {0.5571, 0.0121916, -1.54081e-05, -5.82288e-07}, - {0.6176, 0.0119938, -2.41424e-05, -5.25327e-07}, - {0.6769, 0.011713, -3.20223e-05, -5.16405e-07}, - {0.7346, 0.0113541, -3.97684e-05, -6.09052e-07}, - {0.7903, 0.0109107, -4.89042e-05, -1.04739e-06}, - {0.8435, 0.0103431, -6.4615e-05, -1.40374e-09}, - {0.8936, 0.00969686, -6.4636e-05, -8.547e-06}, - {0.9394, 0.00840947, -0.000192841, -4.2106e-06}, - {0.9761, 0.00616527, -0.000256, -4.2106e-06}, - {1, 0.00328947, -0.000319159, -4.2106e-06} - }; - - // template class, using CRTP to implement forward/inverse - template - struct base_robin_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> - { - - typedef double geographic_type; - typedef double cartesian_type; - - - inline base_robin_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} - - inline double V(COEFS const& C, double z) const - { return (C.c0 + z * (C.c1 + z * (C.c2 + z * C.c3))); } - inline double DV(COEFS const& C, double z) const - { return (C.c1 + z * (C.c2 + C.c2 + z * 3. * C.c3)); } - - // FORWARD(s_forward) spheroid - // Project coordinates from geographic (lon, lat) to cartesian (x, y) - inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const - { - int i; - double dphi; - - i = int_floor((dphi = fabs(lp_lat)) * C1); - if (i >= NODES) i = NODES - 1; - dphi = geometry::math::r2d() * (dphi - RC1 * i); - xy_x = V(X[i], dphi) * FXC * lp_lon; - xy_y = V(Y[i], dphi) * FYC; - if (lp_lat < 0.) xy_y = -xy_y; - } - - // INVERSE(s_inverse) spheroid - // Project coordinates from cartesian (x, y) to geographic (lon, lat) - inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const - { - int i; - double t, t1; - struct COEFS T; - - lp_lon = xy_x / FXC; - lp_lat = fabs(xy_y / FYC); - if (lp_lat >= 1.) { /* simple pathologic cases */ - if (lp_lat > ONEEPS) throw proj_exception(); - else { - lp_lat = xy_y < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); - lp_lon /= X[NODES].c0; - } - } else { /* general problem */ - /* in Y space, reduce to table interval */ - for (i = int_floor(lp_lat * NODES);;) { - if (Y[i].c0 > lp_lat) --i; - else if (Y[i+1].c0 <= lp_lat) ++i; - else break; - } - T = Y[i]; - /* first guess, linear interp */ - t = 5. * (lp_lat - T.c0)/(Y[i+1].c0 - T.c0); - /* make into root */ - T.c0 -= lp_lat; - for (;;) { /* Newton-Raphson reduction */ - t -= t1 = V(T,t) / DV(T,t); - if (fabs(t1) < EPS) - break; - } - lp_lat = (5 * i + t) * geometry::math::d2r(); - if (xy_y < 0.) lp_lat = -lp_lat; - lp_lon /= V(X[i], t); - } - } - - static inline std::string get_name() - { - return "robin_spheroid"; - } - - }; - - // Robinson - template - void setup_robin(Parameters& par) - { - par.es = 0.; - } - - }} // namespace detail::robin - #endif // doxygen - - /*! - \brief Robinson projection - \ingroup projections - \tparam Geographic latlong point type - \tparam Cartesian xy point type - \tparam Parameters parameter type - \par Projection characteristics - - Pseudocylindrical - - Spheroid - \par Example - \image html ex_robin.gif - */ - template - struct robin_spheroid : public detail::robin::base_robin_spheroid - { - inline robin_spheroid(const Parameters& par) : detail::robin::base_robin_spheroid(par) - { - detail::robin::setup_robin(this->m_par); - } - }; - - #ifndef DOXYGEN_NO_DETAIL - namespace detail - { - - // Factory entry(s) - template - class robin_entry : public detail::factory_entry - { - public : - virtual projection* create_new(const Parameters& par) const - { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); - } - }; - - template - inline void robin_init(detail::base_factory& factory) - { - factory.add_to_factory("robin", new robin_entry); - } - - } // namespace detail - #endif // doxygen - -}}} // namespace boost::geometry::projections - -#endif // BOOST_GEOMETRY_PROJECTIONS_ROBIN_HPP - diff --git a/include/boost/geometry/extensions/gis/projections/proj/sterea.hpp b/include/boost/geometry/extensions/gis/projections/proj/sterea.hpp deleted file mode 100644 index 81b3d3d436..0000000000 --- a/include/boost/geometry/extensions/gis/projections/proj/sterea.hpp +++ /dev/null @@ -1,393 +0,0 @@ -#ifndef BOOST_GEOMETRY_PROJECTIONS_STEREA_HPP -#define BOOST_GEOMETRY_PROJECTIONS_STEREA_HPP - -// Boost.Geometry - extensions-gis-projections (based on PROJ4) -// This file is automatically generated. DO NOT EDIT. - -// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// This file is converted from PROJ4, http://trac.osgeo.org/proj -// PROJ4 is originally written by Gerald Evenden (then of the USGS) -// PROJ4 is maintained by Frank Warmerdam -// PROJ4 is converted to Boost.Geometry by Barend Gehrels - -// Last updated version of proj: 4.9.1 - -// Original copyright notice: - -// Copyright (c) 2003 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. - -#include - -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace geometry { namespace projections -{ - #ifndef DOXYGEN_NO_DETAIL - namespace detail { namespace sterea - { - - static const double DEL_TOL = 1.e-14; - static const int MAX_ITER = 10; - - struct par_sterea - { - double phic0; - double cosc0, sinc0; - double R2; - gauss::GAUSS en; - }; - - // template class, using CRTP to implement forward/inverse - template - struct base_sterea_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> - { - - typedef double geographic_type; - typedef double cartesian_type; - - par_sterea m_proj_parm; - - inline base_sterea_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} - - // FORWARD(e_forward) ellipsoid - // Project coordinates from geographic (lon, lat) to cartesian (x, y) - inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const - { - double cosc, sinc, cosl_, k; - - detail::gauss::gauss(m_proj_parm.en, lp_lon, lp_lat); - sinc = sin(lp_lat); - cosc = cos(lp_lat); - cosl_ = cos(lp_lon); - k = this->m_par.k0 * this->m_proj_parm.R2 / (1. + this->m_proj_parm.sinc0 * sinc + this->m_proj_parm.cosc0 * cosc * cosl_); - xy_x = k * cosc * sin(lp_lon); - xy_y = k * (this->m_proj_parm.cosc0 * sinc - this->m_proj_parm.sinc0 * cosc * cosl_); - } - - // INVERSE(e_inverse) ellipsoid - // Project coordinates from cartesian (x, y) to geographic (lon, lat) - inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const - { - double rho, c, sinc, cosc; - - xy_x /= this->m_par.k0; - xy_y /= this->m_par.k0; - if((rho = boost::math::hypot(xy_x, xy_y))) { - c = 2. * atan2(rho, this->m_proj_parm.R2); - sinc = sin(c); - cosc = cos(c); - lp_lat = asin(cosc * this->m_proj_parm.sinc0 + xy_y * sinc * this->m_proj_parm.cosc0 / rho); - lp_lon = atan2(xy_x * sinc, rho * this->m_proj_parm.cosc0 * cosc - - xy_y * this->m_proj_parm.sinc0 * sinc); - } else { - lp_lat = this->m_proj_parm.phic0; - lp_lon = 0.; - } - detail::gauss::inv_gauss(m_proj_parm.en, lp_lon, lp_lat); - } - - static inline std::string get_name() - { - return "sterea_ellipsoid"; - } - - }; - - // Oblique Stereographic Alternative - template - void setup_sterea(Parameters& par, par_sterea& proj_parm) - { - double R; - - proj_parm.en = detail::gauss::gauss_ini(par.e, par.phi0, proj_parm.phic0, R); - proj_parm.sinc0 = sin(proj_parm.phic0); - proj_parm.cosc0 = cos(proj_parm.phic0); - proj_parm.R2 = 2. * R; - } - - }} // namespace detail::sterea - #endif // doxygen - - /*! - \brief Oblique Stereographic Alternative projection - \ingroup projections - \tparam Geographic latlong point type - \tparam Cartesian xy point type - \tparam Parameters parameter type - \par Projection characteristics - - Azimuthal - - Spheroid - - Ellipsoid - \par Example - \image html ex_sterea.gif - */ - template - struct sterea_ellipsoid : public detail::sterea::base_sterea_ellipsoid - { - inline sterea_ellipsoid(const Parameters& par) : detail::sterea::base_sterea_ellipsoid(par) - { - detail::sterea::setup_sterea(this->m_par, this->m_proj_parm); - } - }; - - #ifndef DOXYGEN_NO_DETAIL - namespace detail - { - - // Factory entry(s) - template - class sterea_entry : public detail::factory_entry - { - public : - virtual projection* create_new(const Parameters& par) const - { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); - } - }; - - template - inline void sterea_init(detail::base_factory& factory) - { - factory.add_to_factory("sterea", new sterea_entry); - } - - } // namespace detail - // Create EPSG specializations - // (Proof of Concept, only for some) - - template - struct epsg_traits<2036, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<2171, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<2172, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<2173, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<2174, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<2200, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m"; - } - }; - - - template - struct epsg_traits<2290, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<2291, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m"; - } - }; - - - template - struct epsg_traits<2292, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<2953, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<2954, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +units=m"; - } - }; - - - template - struct epsg_traits<3120, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<3328, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<22780, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+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"; - } - }; - - - template - struct epsg_traits<28991, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +units=m"; - } - }; - - - template - struct epsg_traits<28992, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m"; - } - }; - - - template - struct epsg_traits<31600, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +units=m"; - } - }; - - - template - struct epsg_traits<31700, LatLongRadian, Cartesian, Parameters> - { - typedef sterea_ellipsoid type; - static inline std::string par() - { - return "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +units=m"; - } - }; - - - #endif // doxygen - -}}} // namespace boost::geometry::projections - -#endif // BOOST_GEOMETRY_PROJECTIONS_STEREA_HPP - diff --git a/include/boost/geometry/extensions/gis/projections/project_inverse_transformer.hpp b/include/boost/geometry/extensions/gis/projections/project_inverse_transformer.hpp deleted file mode 100644 index 136d51133b..0000000000 --- a/include/boost/geometry/extensions/gis/projections/project_inverse_transformer.hpp +++ /dev/null @@ -1,73 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_STRATEGY_PROJECT_INVERSE_TRANSFORMER_HPP -#define BOOST_GEOMETRY_STRATEGY_PROJECT_INVERSE_TRANSFORMER_HPP - - -#include - -#include -#include -#include -#include - - -namespace boost { namespace geometry { namespace projections -{ - - -/*! - \brief Transformation strategy to do transform using a Map Projection - \ingroup transform - \tparam Cartesian first point type - \tparam LatLong second point type - */ -template -struct project_inverse_transformer -{ - typedef boost::shared_ptr > projection_ptr; - - projection_ptr m_prj; - - /// Constructor using a shared-pointer-to-projection_ptr - inline project_inverse_transformer(projection_ptr& prj) - : m_prj(prj) - {} - - /// Constructor using a string - inline project_inverse_transformer(std::string const& par) - { - factory fac; - m_prj.reset(fac.create_new(init(par))); - } - - /// Constructor using Parameters - template - inline project_inverse_transformer(Parameters const& par) - { - factory fac; - m_prj.reset(fac.create_new(par)); - } - - /// Transform operator - inline bool apply(Cartesian const& p1, LatLong& p2) const - { - // Latlong (LL -> XY) will be projected, rest will be copied. - // So first copy third or higher dimensions - geometry::detail::conversion::point_to_point::value> ::apply(p1, p2); - return m_prj->inverse(p1, p2); - } - -}; - -}}} // namespace boost::geometry::projections - - -#endif // BOOST_GEOMETRY_STRATEGY_PROJECT_INVERSE_TRANSFORMER_HPP diff --git a/include/boost/geometry/extensions/gis/projections/project_transformer.hpp b/include/boost/geometry/extensions/gis/projections/project_transformer.hpp deleted file mode 100644 index 50877a2ac1..0000000000 --- a/include/boost/geometry/extensions/gis/projections/project_transformer.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_STRATEGY_PROJECT_TRANSFORMER_HPP -#define BOOST_GEOMETRY_STRATEGY_PROJECT_TRANSFORMER_HPP - - -#include - -#include -#include -#include -#include - - - -namespace boost { namespace geometry { namespace projections -{ -/*! - \brief Transformation strategy to do transform using a Map Projection - \ingroup transform - \tparam LatLong first point type - \tparam Cartesian second point type - - See also \link p03_projmap_example.cpp the projmap example \endlink - where this last one plus a transformation using a projection are used. - - */ -template -struct project_transformer -{ - typedef boost::shared_ptr > projection_ptr; - - projection_ptr m_prj; - - inline project_transformer(projection_ptr& prj) - : m_prj(prj) - {} - - inline project_transformer(std::string const& par) - { - factory fac; - m_prj.reset(fac.create_new(init(par))); - } - - inline bool apply(LatLong const& p1, Cartesian& p2) const - { - // Latlong (LatLong -> Cartesian) will be projected, rest will be copied. - // So first copy third or higher dimensions - geometry::detail::conversion::point_to_point::value> ::apply(p1, p2); - return m_prj->forward(p1, p2); - } - -}; - -}}} // namespace boost::geometry::projections - - -#endif // BOOST_GEOMETRY_STRATEGY_PROJECT_TRANSFORMER_HPP diff --git a/include/boost/geometry/extensions/gis/projections/projection.hpp b/include/boost/geometry/extensions/gis/projections/projection.hpp deleted file mode 100644 index f84e140a7f..0000000000 --- a/include/boost/geometry/extensions/gis/projections/projection.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_PROJECTIONS_PROJECTION_HPP -#define BOOST_GEOMETRY_PROJECTIONS_PROJECTION_HPP - - -#include -#include - -namespace boost { namespace geometry { namespace projections -{ - -/*! - \brief projection virtual base class - \details class containing virtual methods - \ingroup projection - \tparam LL latlong point type - \tparam XY xy point type -*/ - -template -class projection -{ - protected : - // see comment above - //typedef typename geometry::coordinate_type::type LL_T; - //typedef typename geometry::coordinate_type::type XY_T; - typedef double LL_T; - typedef double XY_T; - - public : - - typedef LL geographic_point_type; ///< latlong point type - typedef XY cartesian_point_type; ///< xy point type - - /// Forward projection, from Latitude-Longitude to Cartesian - virtual bool forward(LL const& lp, XY& xy) const = 0; - - /// Inverse projection, from Cartesian to Latitude-Longitude - virtual bool inverse(XY const& xy, LL& lp) const = 0; - - /// Forward projection using lon / lat and x / y separately - virtual void fwd(LL_T& lp_lon, LL_T& lp_lat, XY_T& xy_x, XY_T& xy_y) const = 0; - - /// Inverse projection using x / y and lon / lat - virtual void inv(XY_T& xy_x, XY_T& xy_y, LL_T& lp_lon, LL_T& lp_lat) const = 0; - - /// Returns name of projection - virtual std::string name() const = 0; - - /// Returns parameters of projection - virtual parameters const& params() const = 0; - - /// Returns mutable parameters of projection - virtual parameters& mutable_params() = 0; - - virtual ~projection() {} - -}; - -}}} // namespace boost::geometry::projections - - - -#endif - diff --git a/include/boost/geometry/extensions/gis/projections/projection_point_type.hpp b/include/boost/geometry/extensions/gis/projections/projection_point_type.hpp deleted file mode 100644 index 635b6f8879..0000000000 --- a/include/boost/geometry/extensions/gis/projections/projection_point_type.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands. -// Copyright (c) 2012 Krzysztof Czainski - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_PROJECTIONS_PROJECTION_POINT_TYPE_HPP -#define BOOST_GEOMETRY_PROJECTIONS_PROJECTION_POINT_TYPE_HPP - -namespace boost { namespace geometry { namespace projections -{ - -#ifndef DOXYGEN_NO_DETAIL -namespace detail -{ - -template -struct projection_point_type -{}; - -template -struct projection_point_type -{ - typedef typename Projection::cartesian_point_type type; -}; - -template -struct projection_point_type -{ - typedef typename Projection::geographic_point_type type; -}; - -} // detail -#endif // DOXYGEN_NO_DETAIL - -}}} // boost::geometry::projection - -#endif // BOOST_GEOMETRY_PROJECTIONS_PROJECTION_POINT_TYPE_HPP diff --git a/include/boost/geometry/extensions/strategies/parse.hpp b/include/boost/geometry/extensions/strategies/parse.hpp deleted file mode 100644 index de0cdc2ab9..0000000000 --- a/include/boost/geometry/extensions/strategies/parse.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. -// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. -// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. - -// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library -// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_STRATEGIES_EXTENSIONS_PARSE_HPP -#define BOOST_GEOMETRY_STRATEGIES_EXTENSIONS_PARSE_HPP - -#include - - -namespace boost { namespace geometry -{ - - - -/*! - \brief Tagraits class binding a parsing strategy to a coordinate system - \ingroup parse - \tparam Tag tag of coordinate system of point-type - \tparam CoordinateSystem coordinate system -*/ -template -struct strategy_parse -{ - typedef strategy::not_implemented type; -}; - - - -}} // namespace boost::geometry - -#endif // BOOST_GEOMETRY_STRATEGIES_EXTENSIONS_PARSE_HPP diff --git a/include/boost/geometry/formulas/andoyer_inverse.hpp b/include/boost/geometry/formulas/andoyer_inverse.hpp index 902fd7d8f6..60cb9f6e7f 100644 --- a/include/boost/geometry/formulas/andoyer_inverse.hpp +++ b/include/boost/geometry/formulas/andoyer_inverse.hpp @@ -15,7 +15,6 @@ #include #include -#include #include #include diff --git a/include/boost/geometry/formulas/sjoberg_intersection.hpp b/include/boost/geometry/formulas/sjoberg_intersection.hpp index 92f9e8e78e..a9680ce7f6 100644 --- a/include/boost/geometry/formulas/sjoberg_intersection.hpp +++ b/include/boost/geometry/formulas/sjoberg_intersection.hpp @@ -1,6 +1,6 @@ // Boost.Geometry -// Copyright (c) 2016 Oracle and/or its affiliates. +// Copyright (c) 2016-2017 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle @@ -15,7 +15,6 @@ #include #include -#include #include #include diff --git a/include/boost/geometry/formulas/thomas_direct.hpp b/include/boost/geometry/formulas/thomas_direct.hpp index f208167cf5..0446ab2831 100644 --- a/include/boost/geometry/formulas/thomas_direct.hpp +++ b/include/boost/geometry/formulas/thomas_direct.hpp @@ -1,6 +1,6 @@ // Boost.Geometry -// Copyright (c) 2016 Oracle and/or its affiliates. +// Copyright (c) 2016-2017 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle @@ -15,7 +15,6 @@ #include #include -#include #include #include diff --git a/include/boost/geometry/formulas/thomas_inverse.hpp b/include/boost/geometry/formulas/thomas_inverse.hpp index 0853a36980..6db3285e0c 100644 --- a/include/boost/geometry/formulas/thomas_inverse.hpp +++ b/include/boost/geometry/formulas/thomas_inverse.hpp @@ -1,6 +1,6 @@ // Boost.Geometry -// Copyright (c) 2015-2016 Oracle and/or its affiliates. +// Copyright (c) 2015-2017 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle @@ -15,7 +15,6 @@ #include #include -#include #include #include diff --git a/include/boost/geometry/formulas/vertex_latitude.hpp b/include/boost/geometry/formulas/vertex_latitude.hpp index 755067b08d..92822e01a3 100644 --- a/include/boost/geometry/formulas/vertex_latitude.hpp +++ b/include/boost/geometry/formulas/vertex_latitude.hpp @@ -12,11 +12,13 @@ #ifndef BOOST_GEOMETRY_FORMULAS_MAXIMUM_LATITUDE_HPP #define BOOST_GEOMETRY_FORMULAS_MAXIMUM_LATITUDE_HPP -#include + #include #include + #include + namespace boost { namespace geometry { namespace formula { diff --git a/include/boost/geometry/formulas/vertex_longitude.hpp b/include/boost/geometry/formulas/vertex_longitude.hpp index 5028b6cfed..94f7ddbe9f 100644 --- a/include/boost/geometry/formulas/vertex_longitude.hpp +++ b/include/boost/geometry/formulas/vertex_longitude.hpp @@ -13,7 +13,7 @@ #include #include -#include + #include #include diff --git a/include/boost/geometry/formulas/vincenty_direct.hpp b/include/boost/geometry/formulas/vincenty_direct.hpp index 1697e5fb63..b72379defe 100644 --- a/include/boost/geometry/formulas/vincenty_direct.hpp +++ b/include/boost/geometry/formulas/vincenty_direct.hpp @@ -2,8 +2,8 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. -// This file was modified by Oracle on 2014, 2016. -// Modifications copyright (c) 2014-2016 Oracle and/or its affiliates. +// This file was modified by Oracle on 2014, 2016, 2017. +// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle @@ -18,7 +18,6 @@ #include #include -#include #include #include diff --git a/include/boost/geometry/formulas/vincenty_inverse.hpp b/include/boost/geometry/formulas/vincenty_inverse.hpp index 032e16e291..bf76050c03 100644 --- a/include/boost/geometry/formulas/vincenty_inverse.hpp +++ b/include/boost/geometry/formulas/vincenty_inverse.hpp @@ -18,7 +18,6 @@ #include #include -#include #include #include diff --git a/include/boost/geometry/geometry.hpp b/include/boost/geometry/geometry.hpp index aa80701104..5b593afcb3 100644 --- a/include/boost/geometry/geometry.hpp +++ b/include/boost/geometry/geometry.hpp @@ -4,8 +4,8 @@ // Copyright (c) 2008-2015 Bruno Lalande, Paris, France. // Copyright (c) 2009-2015 Mateusz Loskot, London, UK. -// This file was modified by Oracle on 2014, 2015, 2016. -// Modifications copyright (c) 2014-2016 Oracle and/or its affiliates. +// This file was modified by Oracle on 2014, 2015, 2016, 2017. +// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include @@ -96,6 +95,8 @@ // check includes all concepts #include +#include + #include #include #include diff --git a/include/boost/geometry/srs/ellps.hpp b/include/boost/geometry/srs/ellps.hpp new file mode 100644 index 0000000000..6415198a74 --- /dev/null +++ b/include/boost/geometry/srs/ellps.hpp @@ -0,0 +1,126 @@ +// Boost.Geometry + +// Copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_SRS_ELLPS_HPP +#define BOOST_GEOMETRY_SRS_ELLPS_HPP + + +#include +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace srs { namespace detail +{ + +inline double b_from_a_rf(double a, double rf) +{ + return a * (1.0 - 1.0 / rf); +} + +}} // namespace srs::detail +#endif // DOXYGEN_NO_DETAIL + +#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS(NAME, TAG) \ +namespace traits { \ +template <> struct tag { typedef TAG type; }; \ +template <> struct radius_type { typedef double type; }; \ +template \ +struct radius_access \ +{ \ + static inline double get(NAME const& s) \ + { \ + return s.template get_radius(); \ + } \ + static inline void set(NAME& s, double const& value) \ + { \ + s.template set_radius(value); \ + } \ +}; \ +} + +#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B(NAME, A, B) \ +namespace srs { namespace ellps { \ +struct NAME \ + : srs::spheroid \ +{ \ + NAME() \ + : srs::spheroid(A, B) \ + {} \ +}; \ +}} \ +BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS(srs::ellps::NAME, srs_spheroid_tag) + +#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(NAME, A, RF) \ +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B(NAME, A, detail::b_from_a_rf(A, RF)) + +#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_SPHER_R(NAME, R) \ +namespace srs { namespace ellps { \ +struct NAME \ + : srs::sphere \ +{ \ + NAME() \ + : srs::sphere(R) \ + {} \ +}; \ +}} \ +BOOST_GEOMETRY_PROJECTIONS_DETAIL_REGISTER_ELLPS(srs::ellps::NAME, srs_sphere_tag) + + +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(MERIT, 6378137.0, 298.257) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(SGS85, 6378136.0, 298.257) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(GRS80, 6378137.0, 298.257222101) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(IAU76, 6378140.0, 298.257) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B (airy, 6377563.396, 6356256.910) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(APL4_9, 6378137.0, 298.25) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(NWL9D, 6378145.0, 298.25) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B (mod_airy, 6377340.189, 6356034.446) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(andrae, 6377104.43, 300.0) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(aust_SA, 6378160.0, 298.25) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(GRS67, 6378160.0, 298.2471674270) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(bessel, 6377397.155, 299.1528128) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(bess_nam, 6377483.865, 299.1528128) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B (clrk66, 6378206.4, 6356583.8) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(clrk80, 6378249.145, 293.4663) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(CPM, 6375738.7, 334.29) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(delmbr, 6376428.0, 311.5) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(engelis, 6378136.05, 298.2566) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(evrst30, 6377276.345, 300.8017) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(evrst48, 6377304.063, 300.8017) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(evrst56, 6377301.243, 300.8017) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(evrst69, 6377295.664, 300.8017) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(evrstSS, 6377298.556, 300.8017) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(fschr60, 6378166.0, 298.3) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(fschr60m, 6378155.0, 298.3) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(fschr68, 6378150.0, 298.3) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(helmert, 6378200.0, 298.3) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(hough, 6378270.0, 297.0) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(intl, 6378388.0, 297.0) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(krass, 6378245.0, 298.3) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(kaula, 6378163.0, 298.24) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(lerch, 6378139.0, 298.257) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(mprts, 6397300.0, 191.0) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B (new_intl, 6378157.5, 6356772.2) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B (plessis, 6376523.0, 6355863.0) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B (SEasia, 6378155.0, 6356773.3205) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_B (walbeck, 6376896.0, 6355834.8467) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(WGS60, 6378165.0, 298.3) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(WGS66, 6378145.0, 298.25) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(WGS72, 6378135.0, 298.26) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_ELLPS_A_RF(WGS84, 6378137.0, 298.257223563) +BOOST_GEOMETRY_PROJECTIONS_DETAIL_SPHER_R (sphere, 6370997.0) + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_SRS_ELLPS_HPP diff --git a/include/boost/geometry/srs/parameters.hpp b/include/boost/geometry/srs/parameters.hpp new file mode 100644 index 0000000000..2ba6fa1b0f --- /dev/null +++ b/include/boost/geometry/srs/parameters.hpp @@ -0,0 +1,95 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_SRS_PARAMETERS_HPP +#define BOOST_GEOMETRY_SRS_PARAMETERS_HPP + + +#include + +#include + + +namespace boost { namespace geometry { namespace srs +{ + +struct dynamic {}; + + +struct proj4 +{ + explicit proj4(const char* s) + : str(s) + {} + + explicit proj4(std::string const& s) + : str(s) + {} + + std::string str; +}; + + +struct epsg +{ + explicit epsg(int c) + : code(c) + {} + + int code; +}; + + +template > +struct static_proj4 +{ + typedef Proj proj_type; + typedef Model model_type; + + static_proj4() + {} + + explicit static_proj4(Model const& m) + : model(m) + {} + + explicit static_proj4(std::string const& s) + : str(s) + {} + + explicit static_proj4(const char* s) + : str(s) + {} + + static_proj4(Model const& m, std::string const& s) + : model(m), str(s) + {} + + static_proj4(Model const& m, const char* s) + : model(m), str(s) + {} + + Model model; + std::string str; +}; + + +template +struct static_epsg +{ + static const int code = Code; +}; + + +}}} // namespace boost::geometry::srs + +#endif // BOOST_GEOMETRY_SRS_PARAMETERS_HPP diff --git a/include/boost/geometry/srs/projection.hpp b/include/boost/geometry/srs/projection.hpp new file mode 100644 index 0000000000..ebd1070c35 --- /dev/null +++ b/include/boost/geometry/srs/projection.hpp @@ -0,0 +1,434 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_SRS_PROJECTION_HPP +#define BOOST_GEOMETRY_SRS_PROJECTION_HPP + + +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + + +namespace boost { namespace geometry +{ + +namespace projections +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +template +struct promote_to_double +{ + typedef typename boost::mpl::if_c + < + boost::is_integral::value || boost::is_same::value, + double, CT + >::type type; +}; + + +// Copy coordinates of dimensions >= MinDim +template +inline void copy_higher_dimensions(Point1 const& point1, Point2 & point2) +{ + static const std::size_t dim1 = geometry::dimension::value; + static const std::size_t dim2 = geometry::dimension::value; + static const std::size_t lesser_dim = dim1 < dim2 ? dim1 : dim2; + BOOST_MPL_ASSERT_MSG((lesser_dim >= MinDim), + THE_DIMENSION_OF_POINTS_IS_TOO_SMALL, + (Point1, Point2)); + + geometry::detail::conversion::point_to_point + < + Point1, Point2, MinDim, lesser_dim + > ::apply(point1, point2); + + // TODO: fill point2 with zeros if dim1 < dim2 ? + // currently no need because equal dimensions are checked +} + + +// forward projection of any geometry type +template +< + typename Geometry, + typename Tag = typename geometry::tag::type +> +struct forward +{ + template + struct forward_strategy + { + forward_strategy(Proj const& proj) + : m_proj(proj) + {} + + template + inline bool apply(LL const& ll, XY & xy) const + { + return forward::apply(ll, xy, m_proj); + } + + Proj const& m_proj; + }; + + template + static inline bool apply(LL const& ll, + XY & xy, + Proj const& proj) + { + return resolve_strategy::transform + ::apply(ll, xy, forward_strategy(proj)); + } +}; + +template +struct forward +{ + template + static inline bool apply(LL const& ll, XY & xy, Proj const& proj) + { + // (Geographic -> Cartesian) will be projected, rest will be copied. + // So first copy third or higher dimensions + projections::detail::copy_higher_dimensions<2>(ll, xy); + + return proj.forward(ll, xy); + } +}; + + +// inverse projection of any geometry type +template +< + typename Geometry, + typename Tag = typename geometry::tag::type +> +struct inverse +{ + template + struct inverse_strategy + { + inverse_strategy(Proj const& proj) + : m_proj(proj) + {} + + template + inline bool apply(XY const& xy, LL & ll) const + { + return inverse::apply(xy, ll, m_proj); + } + + Proj const& m_proj; + }; + + template + static inline bool apply(XY const& xy, + LL & ll, + Proj const& proj) + { + return resolve_strategy::transform + ::apply(xy, ll, inverse_strategy(proj)); + } +}; + +template +struct inverse +{ + template + static inline bool apply(XY const& xy, LL & ll, Proj const& proj) + { + // (Cartesian -> Geographic) will be projected, rest will be copied. + // So first copy third or higher dimensions + projections::detail::copy_higher_dimensions<2>(xy, ll); + + return proj.inverse(xy, ll); + } +}; + + +} // namespace detail +#endif // DOXYGEN_NO_DETAIL + + +// proj_wrapper class and its specializations wrapps the internal projection +// representation and implements transparent creation of projection object +template +class proj_wrapper +{ + BOOST_MPL_ASSERT_MSG((false), + NOT_IMPLEMENTED_FOR_THIS_PROJECTION_TAG, + (Proj)); +}; + +template +class proj_wrapper +{ + // Some projections do not work with float -> wrong results + // select from int/float/double and else selects T + typedef typename projections::detail::promote_to_double::type calc_t; + + typedef projections::parameters parameters_type; + typedef projections::detail::base_v vprj_t; + +public: + proj_wrapper(srs::proj4 const& params) + : m_ptr(create(projections::detail::pj_init_plus(srs::dynamic(), + params.str))) + {} + + proj_wrapper(srs::epsg const& params) + : m_ptr(create(projections::detail::pj_init_plus( + srs::dynamic(), + projections::detail::code_to_string(params.code), + false))) + {} + + vprj_t const& proj() const { return *m_ptr; } + vprj_t & mutable_proj() { return *m_ptr; } + +private: + static vprj_t* create(parameters_type const& pj_params) + { + static projections::detail::factory fac; + + vprj_t* result = fac.create_new(pj_params); + + if (result == NULL) + { + if (pj_params.name.empty()) + { + BOOST_THROW_EXCEPTION(projection_not_named_exception()); + } + else + { + BOOST_THROW_EXCEPTION(projection_unknown_id_exception(pj_params.name)); + } + } + + return result; + } + + boost::shared_ptr m_ptr; +}; + +template +class proj_wrapper, CT> +{ + typedef typename projections::detail::promote_to_double::type calc_t; + + typedef projections::parameters parameters_type; + typedef typename projections::detail::static_projection_type + < + Proj, + typename traits::tag::type, + calc_t, + parameters_type + >::type projection_type; + +public: + proj_wrapper() + : m_proj(get_parameters(srs::static_proj4())) + {} + + proj_wrapper(srs::static_proj4 const& params) + : m_proj(get_parameters(params)) + {} + + projection_type const& proj() const { return m_proj; } + projection_type & mutable_proj() { return m_proj; } + +private: + static parameters_type get_parameters(srs::static_proj4 const& params) + { + return projections::detail::pj_init_plus(params, params.str); + } + + projection_type m_proj; +}; + +template +class proj_wrapper, CT> +{ + typedef typename projections::detail::promote_to_double::type calc_t; + + typedef projections::detail::epsg_traits epsg_traits; + + typedef projections::parameters parameters_type; + typedef typename projections::detail::static_projection_type + < + typename epsg_traits::type, + typename epsg_traits::srs_tag, + calc_t, + parameters_type + >::type projection_type; + +public: + proj_wrapper() + : m_proj(projections::detail::pj_init_plus( + srs::static_epsg(), + epsg_traits::par(), false)) + {} + + projection_type const& proj() const { return m_proj; } + projection_type & mutable_proj() { return m_proj; } + +private: + projection_type m_proj; +}; + + +// projection class implements transparent forward/inverse projection interface +template +class projection + : private proj_wrapper +{ + typedef proj_wrapper base_t; + +public: + projection() + {} + + template + projection(Params const& params) + : base_t(params) + {} + + /// Forward projection, from Latitude-Longitude to Cartesian + template + inline bool forward(LL const& ll, XY& xy) const + { + concepts::check_concepts_and_equal_dimensions(); + + return projections::detail::forward::apply(ll, xy, base_t::proj()); + } + + /// Inverse projection, from Cartesian to Latitude-Longitude + template + inline bool inverse(XY const& xy, LL& ll) const + { + concepts::check_concepts_and_equal_dimensions(); + + return projections::detail::inverse::apply(xy, ll, base_t::proj()); + } +}; + + +} // namespace projections + + +namespace srs +{ + + +/*! + \brief Representation of projection + \details Either dynamic or static projection representation + \ingroup projection + \tparam Proj default_dynamic or static projection parameters + \tparam CT calculation type used internally +*/ +template +< + typename Proj = srs::dynamic, + typename CT = double +> +class projection +{ + BOOST_MPL_ASSERT_MSG((false), + NOT_IMPLEMENTED_FOR_THIS_PROJECTION_TAG, + (Proj)); +}; + +template +class projection + : public projections::projection +{ + typedef projections::projection base_t; + +public: + /*! + \ingroup projection + \brief Initializes a projection as a string, using the format with + and = + \details The projection can be initialized with a string (with the same format as the PROJ4 package) for + convenient initialization from, for example, the command line + \par Example + +proj=labrd +ellps=intl +lon_0=46d26'13.95E +lat_0=18d54S +azi=18d54 +k_0=.9995 +x_0=400000 +y_0=800000 + for the Madagascar projection. + \note Parameters are described in the group + */ + projection(srs::proj4 const& params) + : base_t(params) + {} + + projection(srs::epsg const& params) + : base_t(params) + {} +}; + +template +class projection, CT> + : public projections::projection, CT> +{ + typedef projections::projection, CT> base_t; + +public: + projection() + {} + + projection(srs::static_proj4 const& params) + : base_t(params) + {} +}; + +template +class projection, CT> + : public projections::projection, CT> +{ + typedef projections::projection, CT> base_t; + +public: + projection() + {} +}; + + +} // namespace srs + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_SRS_PROJECTION_HPP diff --git a/include/boost/geometry/extensions/gis/projections/epsg.hpp b/include/boost/geometry/srs/projections/epsg.hpp similarity index 99% rename from include/boost/geometry/extensions/gis/projections/epsg.hpp rename to include/boost/geometry/srs/projections/epsg.hpp index 560e3b4369..edfd90063c 100644 --- a/include/boost/geometry/extensions/gis/projections/epsg.hpp +++ b/include/boost/geometry/srs/projections/epsg.hpp @@ -2,6 +2,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -10,9 +14,6 @@ #define BOOST_GEOMETRY_PROJECTIONS_EPGS_HPP -#include -#include - // This file is OPTIONAL // Only to be included if EPSG codes are necessary. // It is not included automatically @@ -3556,12 +3557,6 @@ namespace detail } #endif // DOXYGEN_NO_DETAIL -// Overloaded function -inline parameters init(int epsg_code) -{ - std::string args = detail::code_to_string(epsg_code); - return detail::pj_init_plus(args, false); -} }}} // namespace boost::geometry::projections diff --git a/include/boost/geometry/srs/projections/epsg_traits.hpp b/include/boost/geometry/srs/projections/epsg_traits.hpp new file mode 100644 index 0000000000..2e0c60053f --- /dev/null +++ b/include/boost/geometry/srs/projections/epsg_traits.hpp @@ -0,0 +1,3595 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_PROJECTIONS_EPSG_TRAITS_HPP +#define BOOST_GEOMETRY_PROJECTIONS_EPSG_TRAITS_HPP + + +#include + +#include +#include + + +namespace boost { namespace geometry { namespace projections +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +/*! + \brief EPSG traits + \details With help of the EPSG traits library users can statically use projections + or coordinate systems specifying an EPSG code. The correct projections for transformations + are used automically then, still keeping static polymorphism. + \ingroup projection + \tparam EPSG epsg code + \tparam LL latlong point type + \tparam XY xy point type + \tparam PAR parameter type, normally not specified +*/ +template +struct epsg_traits +{ + // Specializations define: + // - type to get projection type + // - function par to get parameters +}; + +#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(EPSG, PROJ4_TAG, SRS_TAG, PROJ4_STR) \ +template<> \ +struct epsg_traits \ +{ \ + typedef PROJ4_TAG type; \ + typedef SRS_TAG srs_tag; \ + static inline std::string par() \ + { \ + return PROJ4_STR; \ + } \ +}; \ + +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2000, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2001, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2002, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2003, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2004, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2005, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2006, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2007, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2008, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2009, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2010, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2011, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2012, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2013, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2014, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2015, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2016, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2017, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2018, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2019, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2020, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2021, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2022, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2023, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2024, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2025, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2026, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2027, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2028, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2029, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2030, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2031, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2032, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2033, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2034, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2035, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2036, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2037, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2038, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2039, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2040, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2041, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2042, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2043, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2044, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2045, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2056, srs::proj::somerc, srs_spheroid_tag, "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2057, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2058, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2059, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2060, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2061, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=41 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2062, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2063, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2064, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2065, srs::proj::krovak, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2066, srs::proj::cass, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2067, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2068, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2069, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2070, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2071, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2072, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2073, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2074, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2075, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2076, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2077, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2078, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2079, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2080, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2081, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2082, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2083, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2084, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2085, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2086, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2087, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2088, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2089, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2090, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2091, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2092, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2093, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2094, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2095, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2096, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2097, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2098, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2099, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2100, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2101, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2102, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2103, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2104, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2105, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2106, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2107, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2108, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2109, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2110, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2111, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2112, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2113, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2114, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2115, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2116, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2117, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2118, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2119, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2120, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2121, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2122, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2123, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2124, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2125, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2126, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2127, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2128, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2129, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2130, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2131, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2132, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2133, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2134, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2135, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2136, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2137, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2138, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2139, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2140, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2141, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2142, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2143, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2144, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2145, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2146, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2147, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2148, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2149, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2150, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2151, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2152, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2153, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2154, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2155, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2156, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +south +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2157, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2158, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2159, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2160, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2161, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2162, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m"); +// sphere +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2163, srs::proj::laea, srs_sphere_tag, "+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2164, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2165, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2166, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2167, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2168, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2169, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2170, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2171, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2172, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2173, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2174, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2175, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2176, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2177, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2178, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2179, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2180, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2188, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2189, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2190, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2191, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2192, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2193, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2194, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2195, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +south +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2196, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2197, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2198, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2199, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2200, srs::proj::sterea, srs_spheroid_tag, "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2201, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2202, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2203, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2204, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2205, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2206, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2207, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2208, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2209, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2210, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2211, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2212, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2213, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2214, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2215, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2216, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2217, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2219, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2220, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2222, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2223, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2224, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2225, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2226, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2227, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2228, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2229, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2230, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2231, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2232, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2233, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2234, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2235, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2236, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2237, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2238, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2239, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2240, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2241, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2242, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2243, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2244, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2245, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2246, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2247, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2248, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2249, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2250, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2251, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2252, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2253, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2254, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2255, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2256, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2257, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2258, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2259, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2260, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2261, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2262, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2263, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2264, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2265, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2266, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2267, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2268, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2269, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2270, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2271, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2272, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2273, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2274, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2275, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2276, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2277, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2278, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2279, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2280, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2281, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2282, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2283, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2284, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2285, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2286, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2287, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2288, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2289, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2290, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2291, srs::proj::sterea, srs_spheroid_tag, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2292, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2294, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2295, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2308, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2309, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2310, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2311, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2312, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2313, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2314, srs::proj::cass, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2315, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2316, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2317, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2318, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2319, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2320, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2321, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2322, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2323, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2324, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2325, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2326, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2327, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2328, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2329, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2330, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2331, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2332, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2333, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2334, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2335, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2336, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2337, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2338, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2339, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2340, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2341, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2342, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2343, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2344, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2345, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2346, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2347, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2348, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2349, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2350, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2351, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2352, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2353, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2354, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2355, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2356, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2357, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2358, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2359, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2360, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2361, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2362, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2363, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2364, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2365, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2366, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2367, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2368, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2369, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2370, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2371, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2372, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2373, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2374, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2375, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2376, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2377, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2378, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2379, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2380, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2381, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2382, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2383, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2384, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2385, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2386, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2387, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2388, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2389, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2390, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2391, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2392, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2393, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2394, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2395, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2396, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2397, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2398, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2399, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2400, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2401, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2402, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2403, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2404, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2405, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2406, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2407, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2408, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2409, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2410, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2411, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2412, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2413, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2414, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2415, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2416, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2417, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2418, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2419, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2420, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2421, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2422, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2423, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2424, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2425, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2426, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2427, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2428, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2429, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2430, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2431, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2432, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2433, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2434, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2435, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2436, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2437, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2438, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2439, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2440, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2441, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2442, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2443, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2444, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2445, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2446, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2447, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2448, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2449, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2450, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2451, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2452, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2453, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2454, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2455, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2456, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2457, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2458, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2459, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2460, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2461, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2462, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2463, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2464, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2465, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2466, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2467, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2468, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2469, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2470, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2471, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2472, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2473, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2474, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2475, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2476, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2477, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2478, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2479, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2480, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2481, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2482, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2483, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2484, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2485, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2486, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2487, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2488, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2489, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2490, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2491, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2492, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2493, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2494, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2495, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2496, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2497, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2498, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2499, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2500, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2501, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2502, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2503, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2504, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2505, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2506, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2507, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2508, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2509, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2510, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2511, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2512, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2513, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2514, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2515, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2516, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2517, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2518, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2519, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2520, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2521, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2522, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2523, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2524, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2525, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2526, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2527, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2528, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2529, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2530, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2531, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2532, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2533, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2534, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2535, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2536, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2537, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2538, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2539, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2540, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2541, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2542, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2543, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2544, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2545, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2546, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2547, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2548, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2549, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2550, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2551, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2552, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2553, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2554, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2555, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2556, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2557, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2558, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2559, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2560, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2561, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2562, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2563, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2564, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2565, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2566, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2567, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2568, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2569, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2570, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2571, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2572, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2573, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2574, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2575, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2576, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2577, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2578, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2579, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2580, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2581, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2582, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2583, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2584, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2585, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2586, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2587, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2588, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2589, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2590, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2591, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2592, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2593, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2594, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2595, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2596, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2597, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2598, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2599, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2600, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2601, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2602, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2603, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2604, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2605, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2606, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2607, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2608, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2609, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2610, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2611, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2612, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2613, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2614, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2615, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2616, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2617, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2618, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2619, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2620, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2621, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2622, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2623, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2624, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2625, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2626, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2627, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2628, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2629, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2630, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2631, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2632, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2633, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2634, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2635, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2636, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2637, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2638, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2639, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2640, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2641, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2642, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2643, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2644, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2645, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2646, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2647, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2648, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2649, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2650, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2651, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2652, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2653, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2654, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2655, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2656, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2657, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2658, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2659, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2660, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2661, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2662, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2663, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2664, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2665, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2666, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2667, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2668, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2669, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2670, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2671, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2672, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2673, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2674, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2675, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2676, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2677, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2678, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2679, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2680, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2681, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2682, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2683, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2684, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2685, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2686, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2687, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2688, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2689, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2690, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2691, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2692, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2693, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2694, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2695, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2696, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2697, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2698, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2699, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2700, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2701, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2702, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2703, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2704, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2705, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2706, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2707, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2708, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2709, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2710, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2711, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2712, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2713, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2714, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2715, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2716, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2717, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2718, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2719, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2720, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2721, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2722, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2723, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2724, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2725, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2726, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2727, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2728, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2729, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2730, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2731, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2732, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2733, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2734, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2735, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2736, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +south +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2737, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +south +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2738, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2739, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2740, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2741, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2742, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2743, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2744, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2745, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2746, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2747, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2748, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2749, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2750, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2751, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2752, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2753, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2754, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2755, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2756, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2757, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2758, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2759, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2760, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2761, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2762, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2763, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2764, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2765, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2766, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2767, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2768, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2769, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2770, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2771, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2772, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2773, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2774, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2775, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2776, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2777, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2778, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2779, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2780, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2781, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2782, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2783, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2784, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2785, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2786, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2787, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2788, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2789, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2790, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2791, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2792, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2793, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2794, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2795, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2796, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2797, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2798, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2799, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2800, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2801, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2802, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2803, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2804, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2805, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2806, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2807, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2808, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2809, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2810, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2811, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2812, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2813, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2814, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2815, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2816, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2817, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2818, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2819, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2820, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2821, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2822, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2823, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2824, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2825, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2826, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2827, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2828, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2829, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2830, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2831, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2832, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2833, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2834, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2835, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2836, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2837, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2838, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2839, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2840, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2841, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2842, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2843, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2844, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2845, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2846, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2847, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2848, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2849, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2850, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2851, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2852, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2853, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2854, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2855, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2856, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2857, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2858, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2859, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2860, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2861, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2862, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2863, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2864, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2865, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2866, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2867, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2868, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2869, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2870, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2871, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2872, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2873, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2874, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2875, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2876, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2877, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2878, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2879, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2880, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2881, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2882, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2883, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2884, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2885, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2886, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2887, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2888, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2889, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2890, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2891, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2892, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2893, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2894, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2895, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2896, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2897, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2898, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2899, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2900, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2901, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2902, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2903, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2904, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2905, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2906, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2907, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2908, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2909, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2910, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2911, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2912, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2913, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2914, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2915, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2916, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2917, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2918, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2919, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2920, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2921, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2922, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2923, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2924, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2925, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2926, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2927, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2928, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2929, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2930, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2931, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2932, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2933, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2934, srs::proj::merc, srs_spheroid_tag, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2935, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2936, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2937, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2938, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2939, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2940, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2941, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2942, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2943, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2944, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2945, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2946, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2947, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2948, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2949, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2950, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2951, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2952, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2953, srs::proj::sterea, srs_spheroid_tag, "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2954, srs::proj::sterea, srs_spheroid_tag, "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2955, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2956, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2957, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2958, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2959, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2960, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2961, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2962, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2964, srs::proj::aea, srs_spheroid_tag, "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2965, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2966, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2967, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2968, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2969, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2970, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2971, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2972, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2973, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2975, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2976, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2977, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2978, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2979, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2980, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2981, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2982, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2983, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2984, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2987, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2988, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2989, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2990, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2991, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2992, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2993, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2994, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2995, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2996, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2997, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2998, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(2999, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3000, srs::proj::merc, srs_spheroid_tag, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3001, srs::proj::merc, srs_spheroid_tag, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3002, srs::proj::merc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3003, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3004, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3005, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3006, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3007, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3008, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3009, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3010, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3011, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3012, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3013, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3014, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3015, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3016, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3017, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3018, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3019, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3020, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3021, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3022, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3023, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3024, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3025, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3026, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3027, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3028, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3029, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3030, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3031, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3032, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3033, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3034, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3035, srs::proj::laea, srs_spheroid_tag, "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3036, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3037, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3038, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3039, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3040, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3041, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3042, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3043, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3044, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3045, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3046, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3047, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3048, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3049, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3050, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3051, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3054, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3055, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3056, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3057, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3058, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3059, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3060, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3061, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3062, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3063, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3064, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3065, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3066, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3067, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3068, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3069, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3070, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3071, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3072, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3073, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3074, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3075, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3076, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3077, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3078, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3079, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3080, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3081, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3082, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3083, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3084, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3085, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3086, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3087, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3088, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3089, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3090, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3091, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3092, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3093, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3094, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3095, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3096, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3097, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3098, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3099, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3100, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3101, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3102, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3103, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3104, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3105, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3106, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3107, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3108, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000 +y_0=50000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3109, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001 +x_0=40000 +y_0=70000 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3110, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3111, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3112, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3113, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3114, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3115, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3116, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3117, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3118, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3119, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3120, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3121, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3122, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3123, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3124, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3125, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3126, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3127, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3128, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3129, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3130, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3131, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3132, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3133, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3134, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3135, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3136, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3137, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3138, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3140, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3141, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3142, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3143, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3146, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3147, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3148, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3149, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3150, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3151, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3152, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3153, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3154, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3155, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3156, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3157, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3158, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3159, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3160, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3161, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3162, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3163, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3164, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3165, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3166, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3167, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3168, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3169, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3170, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3171, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3172, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3174, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3175, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3176, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3177, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3178, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3179, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3180, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3181, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3182, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3183, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3184, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3185, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3186, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3187, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3188, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3189, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3190, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3191, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3192, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3193, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3194, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3195, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3196, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3197, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3198, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3199, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3200, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3201, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3202, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3203, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3204, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3205, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3206, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3207, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3208, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3209, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3210, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3211, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3212, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3213, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3214, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3215, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3216, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3217, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3218, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3219, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3220, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3221, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3222, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3223, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3224, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3225, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3226, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3227, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3228, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3229, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3230, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3231, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3232, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3233, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3234, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3235, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3236, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3237, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3238, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3239, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3240, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3241, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3242, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3243, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3244, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3245, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3246, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3247, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3248, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3249, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3250, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3251, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3252, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3253, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3254, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3255, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3256, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3257, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3258, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3259, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3260, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3261, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3262, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3263, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3264, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3265, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3266, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3267, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3268, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3269, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3270, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3271, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3272, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3273, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3274, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3275, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3276, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3277, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3278, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3279, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3280, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3281, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3282, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3283, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3284, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3285, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3286, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3287, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3288, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3289, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3290, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3291, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3292, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3293, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3294, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3296, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +south +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3297, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +south +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3298, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +south +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3299, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +south +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3300, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3301, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3302, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3303, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3304, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3305, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3306, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3307, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3308, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3309, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3310, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3311, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3312, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3313, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3314, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3315, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3316, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3317, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3318, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3319, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3320, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3321, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3322, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3323, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3324, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3325, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3326, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3327, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3328, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3329, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3330, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3331, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3332, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3333, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3334, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3335, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3336, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3337, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3338, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3339, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3340, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3341, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3342, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3343, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3344, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3345, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3346, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3347, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3348, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3349, srs::proj::merc, srs_spheroid_tag, "+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3350, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3351, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3352, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3353, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3354, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3355, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3356, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3357, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3358, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3359, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3360, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3361, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3362, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3363, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3364, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3365, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3366, srs::proj::cass, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3367, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3368, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3369, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3370, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3371, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3372, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3373, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3374, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3375, srs::proj::omerc, srs_spheroid_tag, "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3376, srs::proj::omerc, srs_spheroid_tag, "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3377, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3378, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3379, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3380, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3381, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3382, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3383, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3384, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3385, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3386, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3387, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3388, srs::proj::merc, srs_spheroid_tag, "+proj=merc +lon_0=51 +k=1 +x_0=0 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3389, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3390, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3391, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3392, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3393, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3394, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3395, srs::proj::merc, srs_spheroid_tag, "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3396, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3397, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3398, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3399, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3400, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3401, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3402, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3403, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3404, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3405, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +ellps=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3406, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +ellps=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3407, srs::proj::cass, srs_spheroid_tag, "+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"); +// sphere +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3408, srs::proj::laea, srs_sphere_tag, "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m"); +// sphere +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3409, srs::proj::laea, srs_sphere_tag, "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3411, srs::proj::stere, srs_spheroid_tag, "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3412, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3413, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3414, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3415, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3416, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3417, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3418, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3419, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3420, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3421, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3422, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3423, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3424, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3425, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3426, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3427, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3428, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3429, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3430, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3431, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3432, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3433, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3434, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3435, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3436, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3437, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3438, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3439, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3440, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3441, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3442, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3443, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3444, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3445, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3446, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3447, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3448, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3449, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3450, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3451, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3452, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3453, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3454, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3455, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3456, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3457, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3458, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3459, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3460, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3461, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3462, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3463, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3464, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3465, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3466, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3467, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3468, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3469, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3470, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3471, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3472, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3473, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3474, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3475, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3476, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3477, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3478, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3479, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3480, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3481, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3482, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3483, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3484, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3485, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3486, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3487, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3488, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3489, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3490, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3491, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3492, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3493, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3494, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3495, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3496, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3497, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3498, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3499, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3500, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3501, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3502, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3503, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3504, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3505, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3506, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3507, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3508, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3509, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3510, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3511, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3512, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3513, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3514, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3515, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3516, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3517, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3518, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3519, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3520, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3521, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3522, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3523, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3524, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3525, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3526, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3527, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3528, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3529, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3530, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3531, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3532, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3533, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3534, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3535, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3536, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3537, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3538, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3539, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3540, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3541, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3542, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3543, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3544, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3545, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3546, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3547, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3548, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3549, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3550, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3551, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3552, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3553, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3554, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3555, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3556, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3557, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3558, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3559, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3560, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3561, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3562, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3563, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3564, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3565, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3566, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3567, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3568, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3569, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3570, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3571, srs::proj::laea, srs_spheroid_tag, "+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3572, srs::proj::laea, srs_spheroid_tag, "+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3573, srs::proj::laea, srs_spheroid_tag, "+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3574, srs::proj::laea, srs_spheroid_tag, "+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3575, srs::proj::laea, srs_spheroid_tag, "+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3576, srs::proj::laea, srs_spheroid_tag, "+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3577, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3578, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3579, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3580, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3581, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3582, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3583, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3584, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3585, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3586, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3587, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3588, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3589, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3590, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3591, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3592, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3593, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3594, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3595, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3596, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3597, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3598, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3599, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3600, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3601, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3602, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3603, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3604, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3605, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3606, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3607, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3608, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3609, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3610, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3611, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3612, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3613, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3614, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3615, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3616, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3617, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3618, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3619, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3620, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3621, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3622, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3623, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3624, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3625, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3626, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3627, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3628, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3629, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3630, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3631, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3632, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3633, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3634, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3635, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3636, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3637, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3638, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3639, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3640, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3641, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3642, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3643, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3644, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3645, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3646, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3647, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3648, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3649, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3650, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3651, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3652, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3653, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3654, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3655, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3656, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3657, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3658, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3659, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3660, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3661, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3662, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3663, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3664, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3665, srs::proj::aea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3666, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3667, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3668, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3669, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3670, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3671, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3672, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3673, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3674, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3675, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3676, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3677, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3678, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3679, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3680, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3681, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3682, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3683, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3684, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3685, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3686, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3687, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3688, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3689, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3690, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3691, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3692, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3693, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3694, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3695, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3696, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3697, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3698, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3699, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3700, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3701, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3702, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3703, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3704, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3705, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3706, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3707, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3708, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3709, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3710, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3711, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3712, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3713, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3714, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3715, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3716, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3717, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3718, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3719, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3720, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3721, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3722, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3723, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3724, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3725, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3726, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3727, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3728, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3729, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3730, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3731, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3732, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3733, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3734, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3735, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3736, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3737, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3738, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3739, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3740, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3741, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3742, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3743, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3744, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3745, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3746, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3747, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3748, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3749, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3750, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3751, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3752, srs::proj::merc, srs_spheroid_tag, "+proj=merc +lon_0=100 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3753, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3754, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3755, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3756, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3757, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3758, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3759, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3760, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3761, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3762, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3920, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3991, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(3992, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4001, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=airy"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4002, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377340.189 +b=6356034.447938534"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4003, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=aust_SA"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4004, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4005, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377492.018 +b=6356173.508712696"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4006, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bess_nam"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4007, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4008, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4009, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378450.047548896 +b=6356826.621488444"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4010, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378300.789 +b=6356566.435"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4011, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4012, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4013, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.145 +b=6356514.966398753"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4014, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356514.996941779"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4015, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377276.345 +b=6356075.41314024"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4016, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=evrstSS"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4018, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377304.063 +b=6356103.038993155"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4019, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4020, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=helmert"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4021, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378160 +b=6356774.50408554"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4022, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4024, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4025, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4027, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6376523 +b=6355862.933255573"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4028, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378298.3 +b=6356657.142669561"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4029, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378300 +b=6356751.689189189"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4030, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4031, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4032, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378136.2 +b=6356751.516927429"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4033, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378136.3 +b=6356751.616592146"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4034, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +// sphere +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4035, srs::proj::longlat, srs_sphere_tag, "+proj=longlat +a=6371000 +b=6371000"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4036, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS67"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4041, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378135 +b=6356750.304921594"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4042, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377299.36559538 +b=6356098.357204818"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4043, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS72"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4044, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377301.243 +b=6356100.230165384"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4045, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377299.151 +b=6356098.145120132"); +// sphere +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4047, srs::proj::longlat, srs_sphere_tag, "+proj=longlat +a=6371007 +b=6371007"); +// sphere +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4052, srs::proj::longlat, srs_sphere_tag, "+proj=longlat +a=6370997 +b=6370997"); +// sphere +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4053, srs::proj::longlat, srs_sphere_tag, "+proj=longlat +a=6371228 +b=6371228"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4054, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378273 +b=6356889.449"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4120, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4121, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4122, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378135 +b=6356750.304921594"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4123, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4124, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4125, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4126, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4127, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4128, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4129, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4130, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4131, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377276.345 +b=6356075.41314024"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4132, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4133, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4134, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4135, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4136, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4137, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4138, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4139, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4140, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4141, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4142, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4143, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4144, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377276.345 +b=6356075.41314024"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4145, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377301.243 +b=6356100.230165384"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4146, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4147, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4148, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4149, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4150, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4151, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4152, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4153, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4154, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4155, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4156, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4157, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4158, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4159, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4160, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4161, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4162, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4163, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4164, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4165, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4166, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4167, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4168, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4169, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4170, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4171, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4172, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4173, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4174, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378300 +b=6356751.689189189"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4175, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4176, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4178, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4179, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4180, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4181, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4182, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4183, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4184, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4185, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4188, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4189, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4190, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4191, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4192, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4193, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4194, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4195, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4196, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4197, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4198, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4199, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4200, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4201, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4202, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=aust_SA"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4203, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=aust_SA"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4204, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4205, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4206, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4207, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4208, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4209, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.145 +b=6356514.966398753"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4210, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4211, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4212, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4213, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4214, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4215, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4216, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4218, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4219, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4220, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4221, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4222, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.145 +b=6356514.966398753"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4223, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4224, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4225, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4226, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4227, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4228, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4229, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=helmert"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4230, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4231, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4232, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4233, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4234, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4235, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4236, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4237, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS67"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4238, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378160 +b=6356774.50408554"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4239, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4240, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377276.345 +b=6356075.41314024"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4241, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4242, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4243, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377299.36559538 +b=6356098.357204818"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4244, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4245, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4246, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4247, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4248, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4249, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4250, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4251, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4252, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4253, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4254, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4255, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4256, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4257, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4258, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4259, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4260, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4261, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4262, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4263, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4264, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4265, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4266, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4267, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +datum=NAD27"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4268, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378450.047548896 +b=6356826.621488444"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4269, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +datum=NAD83"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4270, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4271, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4272, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +datum=nzgd49"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4273, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4274, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4275, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4276, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4277, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=airy +datum=OSGB36"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4278, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=airy"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4279, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=airy"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4280, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4281, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4282, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4283, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4284, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4285, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4286, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=helmert"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4287, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4288, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4289, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4291, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS67"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4292, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4293, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bess_nam"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4294, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4295, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4296, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4297, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4298, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=evrstSS"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4299, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377340.189 +b=6356034.447938534"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4300, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377340.189 +b=6356034.447938534"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4301, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4302, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4303, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=helmert"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4304, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4306, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4307, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4308, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4309, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4310, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4311, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4312, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4313, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4314, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +datum=potsdam"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4315, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4316, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4317, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4318, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4319, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4322, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS72"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4324, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4326, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +datum=WGS84"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4600, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4601, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4602, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4603, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4604, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4605, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4606, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4607, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4608, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4609, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4610, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378140 +b=6356755.288157528"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4611, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4612, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4613, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4614, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4615, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4616, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4617, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4618, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=aust_SA"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4619, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4620, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4621, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4622, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4623, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4624, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4625, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4626, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4627, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4628, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4629, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4630, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4631, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4632, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4633, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4634, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4635, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4636, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4637, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4638, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4639, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4640, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4641, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4642, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4643, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4644, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4645, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4646, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4657, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4658, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4659, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4660, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4661, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4662, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4663, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4664, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4665, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4666, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4667, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4668, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4669, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4670, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4671, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4672, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4673, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4674, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4675, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4676, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4677, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4678, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4679, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4680, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4681, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4682, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377276.345 +b=6356075.41314024"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4683, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4684, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4685, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4686, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4687, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4688, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4689, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4690, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4691, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4692, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4693, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4694, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4695, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4696, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4697, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4698, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4699, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4700, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4701, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4702, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4703, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4704, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4705, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4706, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4707, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4708, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4709, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4710, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4711, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4712, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4713, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4714, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4715, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4716, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4717, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4718, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4719, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4720, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS72"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4721, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4722, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4723, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4724, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4725, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4726, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4727, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4728, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4729, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4730, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4731, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4732, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4733, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4734, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4735, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4736, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4737, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4738, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378293.645208759 +b=6356617.987679838"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4739, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4740, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4741, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4742, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4743, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4744, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4745, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4746, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4747, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4748, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4749, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4750, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4751, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377295.664 +b=6356094.667915204"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4752, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4753, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4754, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4755, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4756, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4757, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4758, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4759, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4760, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=WGS66"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4801, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=bern"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4802, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +pm=bogota"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4803, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +pm=lisbon"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4804, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4805, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=ferro"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4806, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +pm=rome"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4807, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4808, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=jakarta"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4809, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +pm=brussels"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4810, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4811, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4813, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=jakarta"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4814, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=stockholm"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4815, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=athens"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4816, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4817, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4818, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=ferro"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4819, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=clrk80 +pm=paris"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4820, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=jakarta"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4821, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4901, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4902, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4903, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(4904, srs::proj::longlat, srs_spheroid_tag, "+proj=longlat +ellps=bessel +pm=lisbon"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20004, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20005, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20006, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20007, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20008, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20009, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20010, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20011, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20012, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20013, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20014, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20015, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20016, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20017, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20018, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20019, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20020, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20021, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20022, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20023, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20024, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20025, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20026, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20027, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20028, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20029, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20030, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20031, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20032, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20064, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20065, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20066, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20067, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20068, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20069, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20070, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20071, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20072, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20073, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20074, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20075, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20076, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20077, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20078, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20079, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20080, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20081, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20082, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20083, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20084, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20085, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20086, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20087, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20088, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20089, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20090, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20091, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20092, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20135, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20136, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20137, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20138, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20248, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20249, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20250, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20251, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20252, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20253, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20254, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20255, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20256, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20257, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20258, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20348, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20349, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20350, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20351, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20352, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20353, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20354, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20355, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20356, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20357, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20358, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20436, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20437, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20438, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20439, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20440, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20499, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20538, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20539, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20790, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +pm=lisbon +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20791, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +pm=lisbon +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20822, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20823, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20824, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20934, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20935, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(20936, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21035, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +south +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21036, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +south +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21037, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +south +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21095, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21096, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21097, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21100, srs::proj::merc, srs_spheroid_tag, "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21148, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21149, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21150, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21291, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21292, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21413, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21414, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21415, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21416, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21417, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21418, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21419, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21420, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21421, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21422, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21423, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21453, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21454, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21455, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21456, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21457, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21458, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21459, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21460, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21461, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21462, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21463, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21473, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21474, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21475, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21476, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21477, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21478, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21479, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21480, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21481, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21482, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21483, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21500, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21780, srs::proj::somerc, srs_spheroid_tag, "+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +x_0=0 +y_0=0 +ellps=bessel +pm=bern +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21781, srs::proj::somerc, srs_spheroid_tag, "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21817, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21818, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21891, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21892, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21893, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21894, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21896, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21897, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21898, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(21899, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22032, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22033, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +south +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22091, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22092, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22171, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22172, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22173, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22174, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22175, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22176, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22177, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22181, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22182, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22183, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22184, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22185, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22186, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22187, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22191, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22192, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22193, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22194, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22195, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22196, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22197, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22234, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22235, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22236, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22332, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22391, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22392, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22521, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22522, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22523, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22524, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22525, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22700, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22770, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22780, srs::proj::sterea, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22832, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22991, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22992, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22993, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(22994, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23028, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23029, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23030, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23031, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23032, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23033, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23034, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23035, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23036, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23037, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23038, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23090, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23095, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23239, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23240, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23433, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23700, srs::proj::somerc, srs_spheroid_tag, "+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +x_0=650000 +y_0=200000 +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23830, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23831, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23832, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23833, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23834, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23835, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23836, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23837, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23838, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23839, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23840, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23841, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23842, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23843, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23844, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23845, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23846, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23847, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23848, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23849, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23850, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23851, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23852, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23853, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23866, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23867, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23868, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23869, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23870, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23871, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23872, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23877, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23878, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23879, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23880, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23881, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23882, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23883, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23884, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23886, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23887, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23888, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23889, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23890, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23891, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23892, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23893, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23894, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23946, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23947, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(23948, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24047, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24048, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24100, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +ellps=clrk80 +to_meter=0.3047972654"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24200, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24305, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24306, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24311, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24312, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24313, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24342, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24343, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24344, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24345, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24346, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24347, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24370, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24371, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24372, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24373, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24374, srs::proj::lcc, srs_spheroid_tag, "+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.357204818 +to_meter=0.9143985307444408"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24375, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24376, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24377, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24378, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24379, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24380, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24381, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24382, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24383, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24500, srs::proj::cass, srs_spheroid_tag, "+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24547, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24548, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24571, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24600, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24718, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24719, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24720, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24817, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24818, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24819, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24820, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24821, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24877, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24878, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24879, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24880, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24881, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24882, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24891, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24892, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(24893, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25000, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25231, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25391, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25392, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25393, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25394, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25395, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25700, srs::proj::merc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25828, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25829, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25830, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25831, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25832, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25833, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25834, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25835, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25836, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25837, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25838, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25884, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(25932, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26191, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26192, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26193, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26194, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26195, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26237, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26331, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26332, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26391, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26392, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26393, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26432, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26591, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26592, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +pm=rome +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26632, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26692, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26701, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26702, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26703, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26704, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26705, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26706, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26707, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26708, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26709, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26710, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26711, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26712, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26713, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26714, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26715, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26716, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26717, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26718, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26719, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26720, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26721, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26722, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26729, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26730, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26731, srs::proj::omerc, srs_spheroid_tag, "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26732, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26733, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26734, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26735, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26736, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26737, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26738, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26739, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26740, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26741, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26742, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26743, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26744, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26745, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26746, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26747, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26748, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26749, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26750, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26751, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26752, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26753, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26754, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26755, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26756, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26757, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26758, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26759, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26760, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26766, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26767, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26768, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26769, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26770, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26771, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26772, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26773, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26774, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26775, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26776, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26777, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26778, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26779, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26780, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26781, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26782, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26783, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26784, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26785, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26786, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26787, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26791, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26792, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26793, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26794, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26795, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26796, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26797, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26798, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26799, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26801, srs::proj::tmerc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26802, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26803, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26811, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26812, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26813, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26901, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26902, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26903, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26904, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26905, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26906, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26907, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26908, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26909, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26910, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26911, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26912, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26913, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26914, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26915, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26916, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26917, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26918, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26919, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26920, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26921, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26922, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26923, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26929, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26930, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26931, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26932, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26933, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26934, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26935, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26936, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26937, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26938, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26939, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26940, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26941, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26942, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26943, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26944, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26945, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26946, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26948, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26949, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26950, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26951, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26952, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26953, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26954, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26955, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26956, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26957, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26958, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26959, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26960, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26961, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26962, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26963, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26964, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26965, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26966, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26967, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26968, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26969, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26970, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26971, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26972, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26973, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26974, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26975, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26976, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26977, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26978, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26979, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26980, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26981, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26982, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26983, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26984, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26985, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26986, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26987, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26988, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26989, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26990, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26991, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26992, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26993, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26994, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26995, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26996, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26997, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(26998, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27037, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27038, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27039, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27040, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27120, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27200, srs::proj::nzmg, srs_spheroid_tag, "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27205, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27206, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27207, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27208, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27209, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27210, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27211, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27212, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27213, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27214, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27215, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27216, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27217, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27218, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27219, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27220, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27221, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27222, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27223, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27224, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27225, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27226, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27227, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27228, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27229, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27230, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27231, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27232, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27258, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27259, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +south +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27260, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +south +ellps=intl +datum=nzgd49 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27291, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27292, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27391, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27392, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27393, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27394, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27395, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27396, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27397, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27398, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27429, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27492, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27500, srs::proj::lcc, srs_spheroid_tag, "+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=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27561, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27562, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27563, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27564, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27571, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27572, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27573, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27574, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27581, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27582, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27583, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27584, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27591, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27592, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27593, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27594, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(27700, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28191, srs::proj::cass, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28192, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28193, srs::proj::cass, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28232, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28348, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28349, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28350, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28351, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28352, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28353, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28354, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28355, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28356, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28357, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28358, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28402, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28403, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28404, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28405, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28406, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28407, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28408, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28409, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28410, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28411, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28412, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28413, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28414, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28415, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28416, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28417, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28418, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28419, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28420, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28421, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28422, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28423, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28424, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28425, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28426, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28427, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28428, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28429, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28430, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28431, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28432, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28462, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28463, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28464, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28465, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28466, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28467, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28468, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28469, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28470, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28471, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28472, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28473, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28474, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28475, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28476, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28477, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28478, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28479, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28480, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28481, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28482, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28483, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28484, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28485, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28486, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28487, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28488, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28489, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28490, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28491, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28492, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28600, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28991, srs::proj::sterea, srs_spheroid_tag, "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(28992, srs::proj::sterea, srs_spheroid_tag, "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29100, srs::proj::poly, srs_spheroid_tag, "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29101, srs::proj::poly, srs_spheroid_tag, "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29118, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29119, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29120, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29121, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29122, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29168, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29169, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29170, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29171, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29172, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29177, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29178, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29179, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29180, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29181, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29182, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29183, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29184, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29185, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +south +ellps=GRS67 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29187, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29188, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29189, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29190, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29191, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29192, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29193, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29194, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29195, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +south +ellps=aust_SA +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29220, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29221, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29333, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +south +ellps=bess_nam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29635, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29636, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29700, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29702, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29738, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29739, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29849, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +ellps=evrstSS +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29850, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +ellps=evrstSS +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29871, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29872, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29873, srs::proj::omerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29900, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29901, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29902, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(29903, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30161, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30162, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30163, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30164, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30165, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30166, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30167, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30168, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30169, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30170, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30171, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30172, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30173, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30174, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30175, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30176, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30177, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30178, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30179, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30200, srs::proj::cass, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30339, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=helmert +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30340, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=helmert +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30491, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30492, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30493, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30494, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30729, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30730, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30731, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30732, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=clrk80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30791, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30792, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(30800, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31028, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31121, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31154, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31170, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31171, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31251, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31252, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31253, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31254, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31255, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31256, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31257, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31258, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31259, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31265, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31266, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31267, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31268, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31275, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31276, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31277, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31278, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31279, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31281, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31282, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31283, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31284, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31285, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31286, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31287, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31288, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31289, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31290, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31291, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31292, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31293, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31294, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31295, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31296, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31297, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31300, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31370, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31461, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31462, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31463, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31464, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31465, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31466, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31467, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31468, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31469, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31528, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31529, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31600, srs::proj::sterea, srs_spheroid_tag, "+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31700, srs::proj::sterea, srs_spheroid_tag, "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31838, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31839, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31900, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31901, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31965, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31966, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31967, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31968, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31969, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31970, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31971, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31972, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31973, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31974, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31975, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31976, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31977, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31978, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31979, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31980, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31981, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31982, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31983, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31984, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31985, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31986, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31987, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31988, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31989, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31990, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31991, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31992, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31993, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31994, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31995, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31996, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31997, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31998, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(31999, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32000, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32001, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32002, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32003, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32005, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32006, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32007, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32008, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32009, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32010, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32011, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32012, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32013, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32014, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32015, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32016, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32017, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32018, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32019, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32020, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32021, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32022, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32023, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32024, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32025, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32026, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32027, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32028, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32029, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32030, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32031, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32033, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32034, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32035, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32036, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32037, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32038, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32039, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32040, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32041, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32042, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32043, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32044, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32045, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32046, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32047, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32048, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32049, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32050, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32051, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32052, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32053, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32054, srs::proj::lcc, srs_spheroid_tag, "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32055, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32056, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32057, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32058, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32061, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32062, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32064, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32065, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32066, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32067, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32074, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32075, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32076, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32077, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32081, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32082, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32083, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32084, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32085, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32086, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32098, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32099, srs::proj::lcc, srs_spheroid_tag, "+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 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32100, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32104, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32107, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32108, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32109, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32110, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32111, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32112, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32113, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32114, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32115, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32116, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32117, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32118, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32119, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32120, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32121, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32122, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32123, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32124, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32125, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32126, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32127, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32128, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32129, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32130, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32133, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32134, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32135, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32136, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32137, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32138, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32139, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32140, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32141, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32142, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32143, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32144, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32145, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32146, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32147, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32148, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32149, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32150, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32151, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32152, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32153, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32154, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32155, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32156, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32157, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32158, srs::proj::tmerc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32161, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32164, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32165, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32166, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32167, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32180, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32181, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32182, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32183, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32184, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32185, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32186, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32187, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32188, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32189, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32190, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32191, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32192, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32193, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32194, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32195, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32196, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32197, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32198, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32199, srs::proj::lcc, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32201, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32202, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32203, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32204, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32205, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32206, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32207, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32208, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32209, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32210, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32211, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32212, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32213, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32214, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32215, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32216, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32217, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32218, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32219, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32220, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32221, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32222, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32223, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32224, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32225, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32226, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32227, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32228, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32229, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32230, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32231, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32232, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32233, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32234, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32235, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32236, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32237, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32238, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32239, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32240, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32241, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=41 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32242, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32243, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=43 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32244, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=44 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32245, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=45 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32246, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32247, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32248, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32249, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32250, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32251, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32252, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32253, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32254, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32255, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32256, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32257, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32258, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32259, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32260, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32301, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32302, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32303, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32304, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32305, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32306, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32307, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32308, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32309, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32310, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32311, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32312, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32313, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32314, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32315, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32316, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32317, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32318, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32319, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32320, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32321, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32322, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32323, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32324, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32325, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32326, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32327, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32328, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32329, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32330, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32331, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32332, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32333, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32334, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32335, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32336, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32337, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32338, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32339, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32340, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32341, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=41 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32342, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32343, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=43 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32344, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=44 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32345, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=45 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32346, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32347, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32348, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32349, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32350, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32351, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32352, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32353, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32354, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32355, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32356, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32357, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32358, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32359, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32360, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +south +ellps=WGS72 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32401, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32402, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32403, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32404, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32405, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32406, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32407, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32408, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32409, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32410, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32411, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32412, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32413, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32414, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32415, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32416, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32417, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32418, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32419, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32420, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32421, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32422, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32423, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32424, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32425, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32426, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32427, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32428, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32429, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32430, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32431, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32432, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32433, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32434, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32435, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32436, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32437, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32438, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32439, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32440, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32441, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32442, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32443, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32444, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32445, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32446, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32447, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32448, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32449, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32450, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32451, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32452, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32453, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32454, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32455, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32456, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32457, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32458, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32459, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32460, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32501, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32502, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32503, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32504, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32505, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32506, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32507, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32508, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32509, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32510, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32511, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32512, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32513, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32514, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32515, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32516, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32517, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32518, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32519, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32520, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32521, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32522, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32523, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32524, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32525, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32526, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32527, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32528, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32529, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32530, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32531, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32532, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32533, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32534, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32535, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32536, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32537, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32538, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32539, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32540, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32541, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32542, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32543, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32544, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32545, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32546, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32547, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32548, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32549, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32550, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32551, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32552, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32553, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32554, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32555, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32556, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32557, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32558, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32559, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32560, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32601, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32602, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32603, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32604, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32605, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32606, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32607, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32608, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32609, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32610, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32611, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32612, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32613, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32614, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32615, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32616, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32617, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32618, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32619, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32620, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32621, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32622, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32623, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32624, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32625, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32626, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32627, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32628, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32629, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32630, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32631, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32632, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32633, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32634, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32635, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32636, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32637, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32638, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32639, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32640, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32641, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32642, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32643, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32644, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32645, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32646, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32647, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32648, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32649, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32650, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32651, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32652, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32653, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32654, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32655, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32656, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32657, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32658, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32659, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32660, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32661, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32662, srs::proj::eqc, srs_spheroid_tag, "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32664, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32665, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32666, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32667, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32701, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32702, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32703, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32704, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32705, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32706, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32707, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32708, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32709, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32710, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32711, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32712, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32713, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32714, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32715, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32716, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32717, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32718, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32719, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32720, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32721, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32722, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32723, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32724, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32725, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32726, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32727, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32728, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32729, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32730, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32731, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32732, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32733, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32734, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32735, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32736, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32737, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32738, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32739, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32740, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32741, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32742, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32743, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32744, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32745, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32746, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32747, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32748, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32749, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32750, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32751, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32752, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32753, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32754, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32755, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32756, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32757, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32758, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32759, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32760, srs::proj::utm, srs_spheroid_tag, "+proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32761, srs::proj::stere, srs_spheroid_tag, "+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"); +BOOST_GEOMETRY_PROJECTIONS_DETAIL_EPSG_TRAITS(32766, srs::proj::tmerc, srs_spheroid_tag, "+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m"); + +} // namespace detail +#endif // DOXYGEN_NO_DETAIL + +}}} // namespace boost::geometry::projections + + +#endif + diff --git a/include/boost/geometry/srs/projections/exception.hpp b/include/boost/geometry/srs/projections/exception.hpp new file mode 100644 index 0000000000..70aedbd68e --- /dev/null +++ b/include/boost/geometry/srs/projections/exception.hpp @@ -0,0 +1,97 @@ +// Boost.Geometry + +// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_PROJECTIONS_EXCEPTION_HPP +#define BOOST_GEOMETRY_PROJECTIONS_EXCEPTION_HPP + + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +// TODO: make more for forward/inverse/init/setup +class projection_exception : public geometry::exception +{ +public: + explicit projection_exception(int code = 0) + : m_code(code) + , m_msg(projections::detail::pj_strerrno(code)) + {} + + explicit projection_exception(std::string const& msg) + : m_code(0) + , m_msg(msg) + {} + + projection_exception(int code, std::string const& msg) + : m_code(code) + , m_msg(msg) + {} + + virtual char const* what() const throw() + { + //return "Boost.Geometry Projection exception"; + return m_msg.what(); + } + + int code() const { return m_code; } +private : + int m_code; + std::runtime_error m_msg; +}; + + +struct projection_not_named_exception + : projection_exception +{ + projection_not_named_exception() + : projection_exception(-4) + {} +}; + +struct projection_unknown_id_exception + : projection_exception +{ + projection_unknown_id_exception(std::string const& proj_name) + : projection_exception(-5, msg(proj_name)) + {} + +private: + static std::string msg(std::string const& proj_name) + { + return projections::detail::pj_strerrno(-5) + " (" + proj_name + ")"; + } +}; + +struct projection_not_invertable_exception + : projection_exception +{ + projection_not_invertable_exception(std::string const& proj_name) + : projection_exception(-17, msg(proj_name)) + {} + +private: + static std::string msg(std::string const& proj_name) + { + return std::string("projection (") + proj_name + ") is not invertable"; + } +}; + + +}} // namespace boost::geometry +#endif // BOOST_GEOMETRY_PROJECTIONS_EXCEPTION_HPP diff --git a/include/boost/geometry/srs/projections/factory.hpp b/include/boost/geometry/srs/projections/factory.hpp new file mode 100644 index 0000000000..067cbe1f10 --- /dev/null +++ b/include/boost/geometry/srs/projections/factory.hpp @@ -0,0 +1,274 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP +#define BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry { namespace projections +{ + +namespace detail +{ + +template +class factory : public detail::base_factory +{ +private: + + typedef std::map + < + std::string, + boost::shared_ptr + < + detail::factory_entry + < + CT, + Parameters + > + > + > prj_registry; + prj_registry m_registry; + +public: + + factory() + { + detail::aea_init(*this); + detail::aeqd_init(*this); + detail::airy_init(*this); + detail::aitoff_init(*this); + detail::august_init(*this); + detail::bacon_init(*this); + detail::bipc_init(*this); + detail::boggs_init(*this); + detail::bonne_init(*this); + detail::cass_init(*this); + detail::cc_init(*this); + detail::cea_init(*this); + detail::chamb_init(*this); + detail::collg_init(*this); + detail::crast_init(*this); + detail::denoy_init(*this); + detail::eck1_init(*this); + detail::eck2_init(*this); + detail::eck3_init(*this); + detail::eck4_init(*this); + detail::eck5_init(*this); + detail::eqc_init(*this); + detail::eqdc_init(*this); + detail::etmerc_init(*this); + detail::fahey_init(*this); + detail::fouc_s_init(*this); + detail::gall_init(*this); + detail::geocent_init(*this); + detail::geos_init(*this); + detail::gins8_init(*this); + detail::gn_sinu_init(*this); + detail::gnom_init(*this); + detail::goode_init(*this); + detail::gstmerc_init(*this); + detail::hammer_init(*this); + detail::hatano_init(*this); + detail::healpix_init(*this); + detail::krovak_init(*this); + detail::igh_init(*this); + detail::imw_p_init(*this); + detail::isea_init(*this); + detail::labrd_init(*this); + detail::laea_init(*this); + detail::lagrng_init(*this); + detail::larr_init(*this); + detail::lask_init(*this); + detail::latlong_init(*this); + detail::lcc_init(*this); + detail::lcca_init(*this); + detail::loxim_init(*this); + detail::lsat_init(*this); + detail::mbtfpp_init(*this); + detail::mbtfpq_init(*this); + detail::mbt_fps_init(*this); + detail::merc_init(*this); + detail::mill_init(*this); + detail::mod_ster_init(*this); + detail::moll_init(*this); + detail::natearth_init(*this); + detail::nell_init(*this); + detail::nell_h_init(*this); + detail::nocol_init(*this); + detail::nsper_init(*this); + detail::nzmg_init(*this); + detail::ob_tran_init(*this); + detail::ocea_init(*this); + detail::oea_init(*this); + detail::omerc_init(*this); + detail::ortho_init(*this); + detail::qsc_init(*this); + detail::poly_init(*this); + detail::putp2_init(*this); + detail::putp3_init(*this); + detail::putp4p_init(*this); + detail::putp5_init(*this); + detail::putp6_init(*this); + detail::robin_init(*this); + detail::rouss_init(*this); + detail::rpoly_init(*this); + detail::sconics_init(*this); + detail::somerc_init(*this); + detail::stere_init(*this); + detail::sterea_init(*this); + detail::sts_init(*this); + detail::tcc_init(*this); + detail::tcea_init(*this); + detail::tmerc_init(*this); + detail::tpeqd_init(*this); + detail::urm5_init(*this); + detail::urmfps_init(*this); + detail::vandg_init(*this); + detail::vandg2_init(*this); + detail::vandg4_init(*this); + detail::wag2_init(*this); + detail::wag3_init(*this); + detail::wag7_init(*this); + detail::wink1_init(*this); + detail::wink2_init(*this); + } + + virtual ~factory() {} + + virtual void add_to_factory(std::string const& name, + detail::factory_entry* sub) + { + m_registry[name].reset(sub); + } + + inline detail::base_v* create_new(Parameters const& parameters) const + { + typename prj_registry::const_iterator it = m_registry.find(parameters.name); + if (it != m_registry.end()) + { + return it->second->create_new(parameters); + } + + return 0; + } +}; + +} // namespace detail + +}}} // namespace boost::geometry::projections + +#endif // BOOST_GEOMETRY_PROJECTIONS_FACTORY_HPP diff --git a/include/boost/geometry/extensions/gis/projections/impl/aasincos.hpp b/include/boost/geometry/srs/projections/impl/aasincos.hpp similarity index 71% rename from include/boost/geometry/extensions/gis/projections/impl/aasincos.hpp rename to include/boost/geometry/srs/projections/impl/aasincos.hpp index 316de4816a..4678029bc0 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/aasincos.hpp +++ b/include/boost/geometry/srs/projections/impl/aasincos.hpp @@ -49,52 +49,59 @@ namespace detail namespace aasincos { - static const double ONE_TOL= 1.00000000000001; - //static const double TOL = 0.000000001; - static const double ATOL = 1e-50; + template + inline T ONE_TOL() { return 1.00000000000001; } + //template + //inline T TOL() { return 0.000000001; } + template + inline T ATOL() { return 1e-50; } } -inline double aasin(double v) +template +inline T aasin(T const& v) { - double av = 0; + T av = 0; if ((av = geometry::math::abs(v)) >= 1.0) { - if (av > aasincos::ONE_TOL) + if (av > aasincos::ONE_TOL()) { - throw proj_exception(-19); + BOOST_THROW_EXCEPTION( projection_exception(-19) ); } - return (v < 0.0 ? -geometry::math::half_pi() : geometry::math::half_pi()); + return (v < 0.0 ? -geometry::math::half_pi() : geometry::math::half_pi()); } return asin(v); } -inline double aacos(double v) +template +inline T aacos(T const& v) { - double av = 0; + T av = 0; if ((av = geometry::math::abs(v)) >= 1.0) { - if (av > aasincos::ONE_TOL) + if (av > aasincos::ONE_TOL()) { - throw proj_exception(-19); + BOOST_THROW_EXCEPTION( projection_exception(-19) ); } - return (v < 0.0 ? geometry::math::pi() : 0.0); + return (v < 0.0 ? geometry::math::pi() : 0.0); } return acos(v); } -inline double asqrt(double v) +template +inline T asqrt(T const& v) { return ((v <= 0) ? 0 : sqrt(v)); } -inline double aatan2(double n, double d) +template +inline T aatan2(T const& n, T const& d) { - return ((geometry::math::abs(n) < aasincos::ATOL - && geometry::math::abs(d) < aasincos::ATOL) ? 0.0 : atan2(n, d)); + return ((geometry::math::abs(n) < aasincos::ATOL() + && geometry::math::abs(d) < aasincos::ATOL()) ? 0.0 : atan2(n, d)); } diff --git a/include/boost/geometry/extensions/gis/projections/impl/adjlon.hpp b/include/boost/geometry/srs/projections/impl/adjlon.hpp similarity index 100% rename from include/boost/geometry/extensions/gis/projections/impl/adjlon.hpp rename to include/boost/geometry/srs/projections/impl/adjlon.hpp diff --git a/include/boost/geometry/srs/projections/impl/base_dynamic.hpp b/include/boost/geometry/srs/projections/impl/base_dynamic.hpp new file mode 100644 index 0000000000..dca05cebbe --- /dev/null +++ b/include/boost/geometry/srs/projections/impl/base_dynamic.hpp @@ -0,0 +1,137 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP +#define BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP + +#include + +#include + +namespace boost { namespace geometry { namespace projections +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +/*! + \brief projection virtual base class + \details class containing virtual methods + \ingroup projection + \tparam CT calculation type + \tparam P parameters type +*/ +template +class base_v +{ +public : + /// Forward projection, from Latitude-Longitude to Cartesian + template + inline bool forward(LL const& lp, XY& xy) const + { + try + { + pj_fwd(*this, this->params(), lp, xy); + return true; + } + catch (...) + { + return false; + } + } + + /// Inverse projection, from Cartesian to Latitude-Longitude + template + inline bool inverse(XY const& xy, LL& lp) const + { + try + { + pj_inv(*this, this->params(), xy, lp); + return true; + } + catch (projection_not_invertable_exception &) + { + BOOST_RETHROW + } + catch (...) + { + return false; + } + } + + /// Forward projection using lon / lat and x / y separately + virtual void fwd(CT& lp_lon, CT& lp_lat, CT& xy_x, CT& xy_y) const = 0; + + /// Inverse projection using x / y and lon / lat + virtual void inv(CT& xy_x, CT& xy_y, CT& lp_lon, CT& lp_lat) const = 0; + + /// Returns name of projection + virtual std::string name() const = 0; + + /// Returns parameters of projection + virtual P const& params() const = 0; + + /// Returns mutable parameters of projection + virtual P& mutable_params() = 0; + + virtual ~base_v() {} +}; + +// Base-virtual-forward +template +class base_v_f : public base_v +{ +public: + base_v_f(P const& params) : m_proj(params) {} + + virtual void fwd(CT& lp_lon, CT& lp_lat, CT& xy_x, CT& xy_y) const + { + m_proj.fwd(lp_lon, lp_lat, xy_x, xy_y); + } + + virtual void inv(CT& , CT& , CT& , CT& ) const + { + BOOST_THROW_EXCEPTION(projection_not_invertable_exception(params().name)); + } + + virtual std::string name() const { return m_proj.name(); } + + virtual P const& params() const { return m_proj.params(); } + + virtual P& mutable_params() { return m_proj.mutable_params(); } + +protected: + Prj m_proj; +}; + +// Base-virtual-forward/inverse +template +class base_v_fi : public base_v_f +{ + typedef base_v_f base_t; + +public: + base_v_fi(P const& params) : base_t(params) {} + + virtual void inv(CT& xy_x, CT& xy_y, CT& lp_lon, CT& lp_lat) const + { + this->m_proj.inv(xy_x, xy_y, lp_lon, lp_lat); + } +}; + +} // namespace detail +#endif // DOXYGEN_NO_DETAIL + +}}} // namespace boost::geometry::projections + +#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP diff --git a/include/boost/geometry/extensions/gis/projections/impl/base_static.hpp b/include/boost/geometry/srs/projections/impl/base_static.hpp similarity index 55% rename from include/boost/geometry/extensions/gis/projections/impl/base_static.hpp rename to include/boost/geometry/srs/projections/impl/base_static.hpp index 15e86aab3a..e7719d13b0 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/base_static.hpp +++ b/include/boost/geometry/srs/projections/impl/base_static.hpp @@ -2,6 +2,10 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -17,8 +21,13 @@ #include -#include -#include +#include + +#include +#include + +#include + namespace boost { namespace geometry { namespace projections { @@ -28,15 +37,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { +template +struct static_projection_type +{ + BOOST_MPL_ASSERT_MSG((false), + NOT_IMPLEMENTED_FOR_THIS_PROJECTION_OR_CSTAG, + (Prj, CSTag)); +}; + +#define BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(PROJ, P_SPHERE, P_SPHEROID) \ +template \ +struct static_projection_type \ +{ \ + typedef P_SPHERE type; \ +}; \ +template \ +struct static_projection_type \ +{ \ + typedef P_SPHEROID type; \ +}; \ + // Base-template-forward -template +template struct base_t_f { public: - typedef LL geographic_point_type; ///< latlong point type - typedef XY cartesian_point_type; ///< xy point type - inline base_t_f(Prj const& prj, P const& params) : m_par(params), m_prj(prj) {} @@ -45,6 +71,7 @@ struct base_t_f inline P& mutable_params() { return m_par; } + template inline bool forward(LL const& lp, XY& xy) const { try @@ -58,6 +85,15 @@ struct base_t_f } } + template + inline bool inverse(XY const& , LL& ) const + { + BOOST_MPL_ASSERT_MSG((false), + PROJECTION_IS_NOT_INVERTABLE, + (Prj)); + return false; + } + inline std::string name() const { return this->m_par.name; @@ -65,27 +101,20 @@ struct base_t_f protected: - // Some projections do not work with float -> wrong results - // TODO: make traits which select from int/float/double and else selects T - - //typedef typename geometry::coordinate_type::type LL_T; - //typedef typename geometry::coordinate_type::type XY_T; - typedef double LL_T; - typedef double XY_T; - P m_par; const Prj& m_prj; }; // Base-template-forward/inverse -template -struct base_t_fi : public base_t_f +template +struct base_t_fi : public base_t_f { public : inline base_t_fi(Prj const& prj, P const& params) - : base_t_f(prj, params) + : base_t_f(prj, params) {} + template inline bool inverse(XY const& xy, LL& lp) const { try diff --git a/include/boost/geometry/srs/projections/impl/dms_parser.hpp b/include/boost/geometry/srs/projections/impl/dms_parser.hpp new file mode 100644 index 0000000000..137b68e2e5 --- /dev/null +++ b/include/boost/geometry/srs/projections/impl/dms_parser.hpp @@ -0,0 +1,265 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_DMS_PARSER_HPP +#define BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_DMS_PARSER_HPP + +// This file is totally revised from PROJ4 dmstor.c + +// PROJ4 is originally written by Gerald Evenden (then of the USGS) +// PROJ4 is maintained by Frank Warmerdam +// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) + +// Original copyright notice: + +// 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 + +#if !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) +#include +#endif // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) + +#include + +#include + +#include + +namespace boost { namespace geometry { namespace projections +{ + +namespace detail +{ + +template +struct dms_result +{ + enum axis_selector {axis_lat = 1, axis_lon = 0}; + + private : + T m_angle; + axis_selector m_axis; + + public : + + explicit dms_result(T const& v, axis_selector ax) + : m_angle(v) + , m_axis(ax) + {} + + inline axis_selector axis() const { return m_axis; } + + inline T angle() const { return m_angle; } + + template + inline friend std::basic_ostream& operator<<(std::basic_ostream& os, + const dms_result& d) + { + os << d.m_angle; + return os; + } + +}; + + +template +struct dms_parser +{ + + + // Question from Barend: can we compile-time select that it is case-sensitive/case-insensitive? + // We have to change the switch then -> specializations + + // For now: make it (compile-time) case sensitive + static const int diff = 'a' - 'A'; +#ifndef __GNUC__ + BOOST_STATIC_ASSERT((diff > 0)); // make sure we've the right assumption. GCC does not accept this here. +#endif + static const char n_alter = N <= 'Z' ? N + diff : N - diff; + static const char e_alter = E <= 'Z' ? E + diff : E - diff; + static const char s_alter = S <= 'Z' ? S + diff : S - diff; + static const char w_alter = W <= 'Z' ? W + diff : W - diff; + + static const char r_alter = R <= 'Z' ? R + diff : R - diff; + + // degree is normally D (proj4) but might be superscript o + // Note d_alter is not correct then, so map it to NULL now, guarded by the while + static const char d_alter = + ((D >= 'A' && D <= 'Z') || (D >= 'a' && D <= 'z')) ? (D <= 'Z' ? D + diff : D - diff) : '\0'; + + + struct dms_value + { + T dms[3]; + bool has_dms[3]; + + dms_value() + { + memset(this, 0, sizeof(dms_value)); + } + }; + + + template + static inline void assign_dms(dms_value& dms, std::string& value, bool& has_value) + { +#if !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) + dms.dms[I] = boost::lexical_cast(value.c_str()); +#else // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) + dms.dms[I] = std::atof(value.c_str()); +#endif // !defined(BOOST_GEOMETRY_NO_LEXICAL_CAST) + dms.has_dms[I] = true; + has_value = false; + value.clear(); + } + + static inline void process(dms_value& dms, std::string& value, bool& has_value) + { + if (has_value) + { + // Assign last one, sequentially + if (! dms.has_dms[0]) assign_dms<0>(dms, value, has_value); + else if (! dms.has_dms[1]) assign_dms<1>(dms, value, has_value); + else if (! dms.has_dms[2]) assign_dms<2>(dms, value, has_value); + } + } + + + dms_result apply(const char* is) const + { + dms_value dms; + bool has_value = false; + std::string value; + + T factor = 1.0; // + denotes N/E values, -1 denotes S/W values + typename dms_result::axis_selector axis = dms_result::axis_lon; // true denotes N/S values + bool in_radian = false; // true denotes values as "0.1R" + + while(*is) + { + switch(*is) + { + case '-' : + if (! has_value && ! dms.has_dms[0]) + { + factor = -factor; + } + break; + case N : + case n_alter : + axis = dms_result::axis_lat; + break; + case S : + case s_alter : + axis = dms_result::axis_lat; + factor = -factor; + break; + case E : + case e_alter : + axis = dms_result::axis_lon; + break; + case W : + case w_alter : + axis = dms_result::axis_lon; + factor = -factor; + break; + case D : + case d_alter : + if (! dms.has_dms[0] && has_value) + { + assign_dms<0>(dms, value, has_value); + } + break; + case R : + case r_alter : + if (! dms.has_dms[0] && has_value) + { + // specified value is in radian! + in_radian = true; + assign_dms<0>(dms, value, has_value); + } + break; + case MIN: + if (! dms.has_dms[1] && has_value) + { + assign_dms<1>(dms, value, has_value); + } + break; + case SEC : + if (! dms.has_dms[2] && has_value) + { + assign_dms<2>(dms, value, has_value); + } + break; + case ' ' : + case '\t' : + case '\n' : + process(dms, value, has_value); + break; + default : + value += *is; + has_value = true; + break; + } + is++; + } + + // Assign last one, if any + process(dms, value, has_value); + + T const d2r = math::d2r(); + T const r2d = math::r2d(); + + return dms_result(factor * + (in_radian && as_radian + ? dms.dms[0] + : in_radian && ! as_radian + ? dms.dms[0] * r2d + : ! in_radian && as_radian + ? dms.dms[0] * d2r + dms.dms[1] * d2r / 60.0 + dms.dms[2] * d2r / 3600.0 + : dms.dms[0] + dms.dms[1] / 60.0 + dms.dms[2] / 3600.0) + , axis); + } +}; + + +} // namespace detail + + +}}} // namespace boost::geometry::projections + + +#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_DMS_PARSER_HPP diff --git a/include/boost/geometry/extensions/gis/projections/impl/factory_entry.hpp b/include/boost/geometry/srs/projections/impl/factory_entry.hpp similarity index 62% rename from include/boost/geometry/extensions/gis/projections/impl/factory_entry.hpp rename to include/boost/geometry/srs/projections/impl/factory_entry.hpp index 0b8dba67e7..7c587af5b6 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/factory_entry.hpp +++ b/include/boost/geometry/srs/projections/impl/factory_entry.hpp @@ -2,6 +2,10 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -11,7 +15,7 @@ #include -#include +#include namespace boost { namespace geometry { namespace projections { @@ -19,22 +23,26 @@ namespace boost { namespace geometry { namespace projections namespace detail { -template +// forward declaration needed by some projections +template +class factory; + +template class factory_entry { public: virtual ~factory_entry() {} - virtual projection* create_new(P const& par) const = 0; + virtual base_v* create_new(P const& par) const = 0; }; -template +template class base_factory { public: virtual ~base_factory() {} - virtual void add_to_factory(std::string const& name, factory_entry* sub) = 0; + virtual void add_to_factory(std::string const& name, factory_entry* sub) = 0; }; } // namespace detail diff --git a/include/boost/geometry/extensions/gis/projections/impl/function_overloads.hpp b/include/boost/geometry/srs/projections/impl/function_overloads.hpp similarity index 59% rename from include/boost/geometry/extensions/gis/projections/impl/function_overloads.hpp rename to include/boost/geometry/srs/projections/impl/function_overloads.hpp index 3a853380d7..43d33c6bea 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/function_overloads.hpp +++ b/include/boost/geometry/srs/projections/impl/function_overloads.hpp @@ -2,6 +2,10 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -15,19 +19,26 @@ namespace boost { namespace geometry { namespace projections { // Functions to resolve ambiguity when compiling with coordinates of different types -/*inline double atan2(double a, double b) +/* +template +inline T atan2(T const& a, T const& b) { - return std::atan2(a, b); + using std::atan2; + return atan2(a, b); } -inline double pow(double a, double b) +template +inline T pow(T const& a, T const& b) { - return std::pow(a, b); + using std::pow; + return pow(a, b); } */ -inline int int_floor(double f) +template +inline int int_floor(T const& f) { - return int(std::floor(f)); + using std::floor; + return int(floor(f)); } }}} // namespace boost::geometry::projections diff --git a/include/boost/geometry/srs/projections/impl/geocent.hpp b/include/boost/geometry/srs/projections/impl/geocent.hpp new file mode 100644 index 0000000000..8ae2f393ce --- /dev/null +++ b/include/boost/geometry/srs/projections/impl/geocent.hpp @@ -0,0 +1,487 @@ +// Boost.Geometry +// This file is manually converted from PROJ4 + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This file is converted from PROJ4, http://trac.osgeo.org/proj +// PROJ4 is originally written by Gerald Evenden (then of the USGS) +// PROJ4 is maintained by Frank Warmerdam +// This file was converted to Geometry Library by Adam Wulkiewicz + +// Original copyright notice: + +/***************************************************************************/ +/* RSC IDENTIFIER: GEOCENTRIC + * + * ABSTRACT + * + * This component provides conversions between Geodetic coordinates (latitude, + * longitude in radians and height in meters) and Geocentric coordinates + * (X, Y, Z) in meters. + * + * ERROR HANDLING + * + * This component checks parameters for valid values. If an invalid value + * is found, the error code is combined with the current error code using + * the bitwise or. This combining allows multiple error codes to be + * returned. The possible error codes are: + * + * GEOCENT_NO_ERROR : No errors occurred in function + * GEOCENT_LAT_ERROR : Latitude out of valid range + * (-90 to 90 degrees) + * GEOCENT_LON_ERROR : Longitude out of valid range + * (-180 to 360 degrees) + * GEOCENT_A_ERROR : Semi-major axis lessthan or equal to zero + * GEOCENT_B_ERROR : Semi-minor axis lessthan or equal to zero + * GEOCENT_A_LESS_B_ERROR : Semi-major axis less than semi-minor axis + * + * + * REUSE NOTES + * + * GEOCENTRIC is intended for reuse by any application that performs + * coordinate conversions between geodetic coordinates and geocentric + * coordinates. + * + * + * REFERENCES + * + * An Improved Algorithm for Geocentric to Geodetic Coordinate Conversion, + * Ralph Toms, February 1996 UCRL-JC-123138. + * + * Further information on GEOCENTRIC can be found in the Reuse Manual. + * + * GEOCENTRIC originated from : U.S. Army Topographic Engineering Center + * Geospatial Information Division + * 7701 Telegraph Road + * Alexandria, VA 22310-3864 + * + * LICENSES + * + * None apply to this component. + * + * RESTRICTIONS + * + * GEOCENTRIC has no restrictions. + * + * ENVIRONMENT + * + * GEOCENTRIC was tested and certified in the following environments: + * + * 1. Solaris 2.5 with GCC version 2.8.1 + * 2. Windows 95 with MS Visual C++ version 6 + * + * MODIFICATIONS + * + * Date Description + * ---- ----------- + * 25-02-97 Original Code + * + */ + + +#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_GEOCENT_HPP +#define BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_GEOCENT_HPP + + +#include + + +namespace boost { namespace geometry { namespace projections +{ + +namespace detail +{ + +/***************************************************************************/ +/* + * DEFINES + */ +static const long GEOCENT_NO_ERROR = 0x0000; +static const long GEOCENT_LAT_ERROR = 0x0001; +static const long GEOCENT_LON_ERROR = 0x0002; +static const long GEOCENT_A_ERROR = 0x0004; +static const long GEOCENT_B_ERROR = 0x0008; +static const long GEOCENT_A_LESS_B_ERROR = 0x0010; + +template +struct GeocentricInfo +{ + T Geocent_a; /* Semi-major axis of ellipsoid in meters */ + T Geocent_b; /* Semi-minor axis of ellipsoid */ + T Geocent_a2; /* Square of semi-major axis */ + T Geocent_b2; /* Square of semi-minor axis */ + T Geocent_e2; /* Eccentricity squared */ + T Geocent_ep2; /* 2nd eccentricity squared */ +}; + +template +inline T COS_67P5() +{ + /*return 0.38268343236508977*/; + return cos(T(67.5) * math::d2r()); /* cosine of 67.5 degrees */ +} +template +inline T AD_C() +{ + return 1.0026000; /* Toms region 1 constant */ +} + + +/***************************************************************************/ +/* + * FUNCTIONS + */ + +template +inline long pj_Set_Geocentric_Parameters (GeocentricInfo & gi, T const& a, T const& b) + +{ /* BEGIN Set_Geocentric_Parameters */ +/* + * The function Set_Geocentric_Parameters receives the ellipsoid parameters + * as inputs and sets the corresponding state variables. + * + * a : Semi-major axis, in meters. (input) + * b : Semi-minor axis, in meters. (input) + */ + long Error_Code = GEOCENT_NO_ERROR; + + if (a <= 0.0) + Error_Code |= GEOCENT_A_ERROR; + if (b <= 0.0) + Error_Code |= GEOCENT_B_ERROR; + if (a < b) + Error_Code |= GEOCENT_A_LESS_B_ERROR; + if (!Error_Code) + { + gi.Geocent_a = a; + gi.Geocent_b = b; + gi.Geocent_a2 = a * a; + gi.Geocent_b2 = b * b; + gi.Geocent_e2 = (gi.Geocent_a2 - gi.Geocent_b2) / gi.Geocent_a2; + gi.Geocent_ep2 = (gi.Geocent_a2 - gi.Geocent_b2) / gi.Geocent_b2; + } + return (Error_Code); +} /* END OF Set_Geocentric_Parameters */ + + +template +inline void pj_Get_Geocentric_Parameters (GeocentricInfo const& gi, + T & a, + T & b) +{ /* BEGIN Get_Geocentric_Parameters */ +/* + * The function Get_Geocentric_Parameters returns the ellipsoid parameters + * to be used in geocentric coordinate conversions. + * + * a : Semi-major axis, in meters. (output) + * b : Semi-minor axis, in meters. (output) + */ + + a = gi.Geocent_a; + b = gi.Geocent_b; +} /* END OF Get_Geocentric_Parameters */ + + +template +inline long pj_Convert_Geodetic_To_Geocentric (GeocentricInfo const& gi, + T Longitude, T Latitude, T Height, + T & X, T & Y, T & Z) +{ /* BEGIN Convert_Geodetic_To_Geocentric */ +/* + * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates + * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), + * according to the current ellipsoid parameters. + * + * Latitude : Geodetic latitude in radians (input) + * Longitude : Geodetic longitude in radians (input) + * Height : Geodetic height, in meters (input) + * X : Calculated Geocentric X coordinate, in meters (output) + * Y : Calculated Geocentric Y coordinate, in meters (output) + * Z : Calculated Geocentric Z coordinate, in meters (output) + * + */ + long Error_Code = GEOCENT_NO_ERROR; + T Rn; /* Earth radius at location */ + T Sin_Lat; /* sin(Latitude) */ + T Sin2_Lat; /* Square of sin(Latitude) */ + T Cos_Lat; /* cos(Latitude) */ + + static const T PI = math::pi(); + static const T PI_OVER_2 = math::half_pi(); + + /* + ** Don't blow up if Latitude is just a little out of the value + ** range as it may just be a rounding issue. Also removed longitude + ** test, it should be wrapped by cos() and sin(). NFW for PROJ.4, Sep/2001. + */ + if( Latitude < -PI_OVER_2 && Latitude > -1.001 * PI_OVER_2 ) + Latitude = -PI_OVER_2; + else if( Latitude > PI_OVER_2 && Latitude < 1.001 * PI_OVER_2 ) + Latitude = PI_OVER_2; + else if ((Latitude < -PI_OVER_2) || (Latitude > PI_OVER_2)) + { /* Latitude out of range */ + Error_Code |= GEOCENT_LAT_ERROR; + } + + if (!Error_Code) + { /* no errors */ + if (Longitude > PI) + Longitude -= (2*PI); + Sin_Lat = sin(Latitude); + Cos_Lat = cos(Latitude); + Sin2_Lat = Sin_Lat * Sin_Lat; + Rn = gi.Geocent_a / (sqrt(1.0e0 - gi.Geocent_e2 * Sin2_Lat)); + X = (Rn + Height) * Cos_Lat * cos(Longitude); + Y = (Rn + Height) * Cos_Lat * sin(Longitude); + Z = ((Rn * (1 - gi.Geocent_e2)) + Height) * Sin_Lat; + } + return (Error_Code); +} /* END OF Convert_Geodetic_To_Geocentric */ + +/* + * The function Convert_Geocentric_To_Geodetic converts geocentric + * coordinates (X, Y, Z) to geodetic coordinates (latitude, longitude, + * and height), according to the current ellipsoid parameters. + * + * X : Geocentric X coordinate, in meters. (input) + * Y : Geocentric Y coordinate, in meters. (input) + * Z : Geocentric Z coordinate, in meters. (input) + * Latitude : Calculated latitude value in radians. (output) + * Longitude : Calculated longitude value in radians. (output) + * Height : Calculated height value, in meters. (output) + */ + +#define BOOST_GEOMETRY_PROJECTIONS_USE_ITERATIVE_METHOD + +template +inline void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo const& gi, + T X, T Y, T Z, + T & Longitude, T & Latitude, T & Height) +{ /* BEGIN Convert_Geocentric_To_Geodetic */ + + static const T PI_OVER_2 = math::half_pi(); + +#if !defined(BOOST_GEOMETRY_PROJECTIONS_USE_ITERATIVE_METHOD) + + static const T COS_67P5 = detail::COS_67P5(); + static const T AD_C = detail::AD_C(); + +/* + * The method used here is derived from 'An Improved Algorithm for + * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996 + */ + +/* Note: Variable names follow the notation used in Toms, Feb 1996 */ + + T W; /* distance from Z axis */ + T W2; /* square of distance from Z axis */ + T T0; /* initial estimate of vertical component */ + T T1; /* corrected estimate of vertical component */ + T S0; /* initial estimate of horizontal component */ + T S1; /* corrected estimate of horizontal component */ + T Sin_B0; /* sin(B0), B0 is estimate of Bowring aux variable */ + T Sin3_B0; /* cube of sin(B0) */ + T Cos_B0; /* cos(B0) */ + T Sin_p1; /* sin(phi1), phi1 is estimated latitude */ + T Cos_p1; /* cos(phi1) */ + T Rn; /* Earth radius at location */ + T Sum; /* numerator of cos(phi1) */ + bool At_Pole; /* indicates location is in polar region */ + + At_Pole = false; + if (X != 0.0) + { + Longitude = atan2(Y,X); + } + else + { + if (Y > 0) + { + Longitude = PI_OVER_2; + } + else if (Y < 0) + { + Longitude = -PI_OVER_2; + } + else + { + At_Pole = true; + Longitude = 0.0; + if (Z > 0.0) + { /* north pole */ + Latitude = PI_OVER_2; + } + else if (Z < 0.0) + { /* south pole */ + Latitude = -PI_OVER_2; + } + else + { /* center of earth */ + Latitude = PI_OVER_2; + Height = -Geocent_b; + return; + } + } + } + W2 = X*X + Y*Y; + W = sqrt(W2); + T0 = Z * AD_C; + S0 = sqrt(T0 * T0 + W2); + Sin_B0 = T0 / S0; + Cos_B0 = W / S0; + Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0; + T1 = Z + gi.Geocent_b * gi.Geocent_ep2 * Sin3_B0; + Sum = W - gi.Geocent_a * gi.Geocent_e2 * Cos_B0 * Cos_B0 * Cos_B0; + S1 = sqrt(T1*T1 + Sum * Sum); + Sin_p1 = T1 / S1; + Cos_p1 = Sum / S1; + Rn = gi.Geocent_a / sqrt(1.0 - gi.Geocent_e2 * Sin_p1 * Sin_p1); + if (Cos_p1 >= COS_67P5) + { + Height = W / Cos_p1 - Rn; + } + else if (Cos_p1 <= -COS_67P5) + { + Height = W / -Cos_p1 - Rn; + } + else + { + Height = Z / Sin_p1 + Rn * (gi.Geocent_e2 - 1.0); + } + if (At_Pole == false) + { + Latitude = atan(Sin_p1 / Cos_p1); + } +#else /* defined(BOOST_GEOMETRY_PROJECTIONS_USE_ITERATIVE_METHOD) */ +/* +* Reference... +* ============ +* Wenzel, H.-G.(1985): Hochauflösende Kugelfunktionsmodelle für +* das Gravitationspotential der Erde. Wiss. Arb. Univ. Hannover +* Nr. 137, p. 130-131. + +* Programmed by GGA- Leibniz-Institute of Applied Geophysics +* Stilleweg 2 +* D-30655 Hannover +* Federal Republic of Germany +* Internet: www.gga-hannover.de +* +* Hannover, March 1999, April 2004. +* see also: comments in statements +* remarks: +* Mathematically exact and because of symmetry of rotation-ellipsoid, +* each point (X,Y,Z) has at least two solutions (Latitude1,Longitude1,Height1) and +* (Latitude2,Longitude2,Height2). Is point=(0.,0.,Z) (P=0.), so you get even +* four solutions, every two symmetrical to the semi-minor axis. +* Here Height1 and Height2 have at least a difference in order of +* radius of curvature (e.g. (0,0,b)=> (90.,0.,0.) or (-90.,0.,-2b); +* (a+100.)*(sqrt(2.)/2.,sqrt(2.)/2.,0.) => (0.,45.,100.) or +* (0.,225.,-(2a+100.))). +* The algorithm always computes (Latitude,Longitude) with smallest |Height|. +* For normal computations, that means |Height|<10000.m, algorithm normally +* converges after to 2-3 steps!!! +* But if |Height| has the amount of length of ellipsoid's axis +* (e.g. -6300000.m), algorithm needs about 15 steps. +*/ + +/* local definitions and variables */ +/* end-criterium of loop, accuracy of sin(Latitude) */ +static const T genau = 1.E-12; +static const T genau2 = (genau*genau); +static const int maxiter = 30; + + T P; /* distance between semi-minor axis and location */ + T RR; /* distance between center and location */ + T CT; /* sin of geocentric latitude */ + T ST; /* cos of geocentric latitude */ + T RX; + T RK; + T RN; /* Earth radius at location */ + T CPHI0; /* cos of start or old geodetic latitude in iterations */ + T SPHI0; /* sin of start or old geodetic latitude in iterations */ + T CPHI; /* cos of searched geodetic latitude */ + T SPHI; /* sin of searched geodetic latitude */ + T SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */ + int iter; /* # of continuous iteration, max. 30 is always enough (s.a.) */ + + P = sqrt(X*X+Y*Y); + RR = sqrt(X*X+Y*Y+Z*Z); + +/* special cases for latitude and longitude */ + if (P/gi.Geocent_a < genau) { + +/* special case, if P=0. (X=0., Y=0.) */ + Longitude = 0.; + +/* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis + * of ellipsoid (=center of mass), Latitude becomes PI/2 */ + if (RR/gi.Geocent_a < genau) { + Latitude = PI_OVER_2; + Height = -gi.Geocent_b; + return ; + + } + } + else { +/* ellipsoidal (geodetic) longitude + * interval: -PI < Longitude <= +PI */ + Longitude=atan2(Y,X); + } + +/* -------------------------------------------------------------- + * Following iterative algorithm was developed by + * "Institut für Erdmessung", University of Hannover, July 1988. + * Internet: www.ife.uni-hannover.de + * Iterative computation of CPHI,SPHI and Height. + * Iteration of CPHI and SPHI to 10**-12 radian resp. + * 2*10**-7 arcsec. + * -------------------------------------------------------------- + */ + CT = Z/RR; + ST = P/RR; + RX = 1.0/sqrt(1.0-gi.Geocent_e2*(2.0-gi.Geocent_e2)*ST*ST); + CPHI0 = ST*(1.0-gi.Geocent_e2)*RX; + SPHI0 = CT*RX; + iter = 0; + +/* loop to find sin(Latitude) resp. Latitude + * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */ + do + { + iter++; + RN = gi.Geocent_a/sqrt(1.0-gi.Geocent_e2*SPHI0*SPHI0); + +/* ellipsoidal (geodetic) height */ + Height = P*CPHI0+Z*SPHI0-RN*(1.0-gi.Geocent_e2*SPHI0*SPHI0); + + RK = gi.Geocent_e2*RN/(RN+Height); + RX = 1.0/sqrt(1.0-RK*(2.0-RK)*ST*ST); + CPHI = ST*(1.0-RK)*RX; + SPHI = CT*RX; + SDPHI = SPHI*CPHI0-CPHI*SPHI0; + CPHI0 = CPHI; + SPHI0 = SPHI; + } + while (SDPHI*SDPHI > genau2 && iter < maxiter); + +/* ellipsoidal (geodetic) latitude */ + Latitude=atan(SPHI/fabs(CPHI)); + + return; +#endif /* defined(BOOST_GEOMETRY_PROJECTIONS_USE_ITERATIVE_METHOD) */ +} /* END OF Convert_Geocentric_To_Geodetic */ + + +} // namespace detail + + +}}} // namespace boost::geometry::projections + + +#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_GEOCENT_HPP diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_auth.hpp b/include/boost/geometry/srs/projections/impl/pj_auth.hpp similarity index 80% rename from include/boost/geometry/extensions/gis/projections/impl/pj_auth.hpp rename to include/boost/geometry/srs/projections/impl/pj_auth.hpp index 7e8d9244dc..899d0b25b1 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_auth.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_auth.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -44,20 +48,22 @@ namespace boost { namespace geometry { namespace projections { namespace detail { -static const double P00 = .33333333333333333333; -static const double P01 = .17222222222222222222; -static const double P02 = .10257936507936507936; -static const double P10 = .06388888888888888888; -static const double P11 = .06640211640211640211; -static const double P20 = .01641501294219154443; static const int APA_SIZE = 3; /* determine latitude from authalic latitude */ -inline bool pj_authset(double es, double* APA) +template +inline bool pj_authset(T const& es, T* APA) { BOOST_GEOMETRY_ASSERT(0 != APA); - double t = 0; + static const T P00 = .33333333333333333333; + static const T P01 = .17222222222222222222; + static const T P02 = .10257936507936507936; + static const T P10 = .06388888888888888888; + static const T P11 = .06640211640211640211; + static const T P20 = .01641501294219154443; + + T t = 0; // if (APA = (double *)pj_malloc(APA_SIZE * sizeof(double))) { @@ -73,11 +79,12 @@ inline bool pj_authset(double es, double* APA) return true; } -inline double pj_authlat(double beta, const double* APA) +template +inline T pj_authlat(T const& beta, const T* APA) { BOOST_GEOMETRY_ASSERT(0 != APA); - double const t = beta + beta; + T const t = beta + beta; return(beta + APA[0] * sin(t) + APA[1] * sin(t + t) + APA[2] * sin(t + t + t)); } diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_datum_set.hpp b/include/boost/geometry/srs/projections/impl/pj_datum_set.hpp similarity index 88% rename from include/boost/geometry/extensions/gis/projections/impl/pj_datum_set.hpp rename to include/boost/geometry/srs/projections/impl/pj_datum_set.hpp index 66b56355aa..07fb810d12 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_datum_set.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_datum_set.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -35,14 +39,16 @@ #ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUM_SET_HPP #define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUM_SET_HPP + #include #include #include -#include -#include -#include +#include +#include +#include + namespace boost { namespace geometry { namespace projections { @@ -50,14 +56,18 @@ namespace detail { /* SEC_TO_RAD = Pi/180/3600 */ -const double SEC_TO_RAD = 4.84813681109535993589914102357e-6; +template +inline T SEC_TO_RAD() { return 4.84813681109535993589914102357e-6; } /************************************************************************/ /* pj_datum_set() */ /************************************************************************/ -inline void pj_datum_set(std::vector& pvalues, parameters& projdef) +template +inline void pj_datum_set(std::vector >& pvalues, parameters& projdef) { + static const T SEC_TO_RAD = detail::SEC_TO_RAD(); + std::string name, towgs84, nadgrids; projdef.datum_type = PJD_UNKNOWN; @@ -88,19 +98,19 @@ inline void pj_datum_set(std::vector& pvalues, parameters& projdef) if (index == -1) { - throw proj_exception(-9); + BOOST_THROW_EXCEPTION( projection_exception(-9) ); } if(! pj_datums[index].ellipse_id.empty()) { std::string entry("ellps="); entry +=pj_datums[index].ellipse_id; - pvalues.push_back(pj_mkparam(entry)); + pvalues.push_back(pj_mkparam(entry)); } if(! pj_datums[index].defn.empty()) { - pvalues.push_back(pj_mkparam(pj_datums[index].defn)); + pvalues.push_back(pj_mkparam(pj_datums[index].defn)); } } diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_datums.hpp b/include/boost/geometry/srs/projections/impl/pj_datums.hpp similarity index 94% rename from include/boost/geometry/extensions/gis/projections/impl/pj_datums.hpp rename to include/boost/geometry/srs/projections/impl/pj_datums.hpp index 539b9d8bfd..41834cd25d 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_datums.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_datums.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -35,7 +39,7 @@ #ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUMS_HPP #define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_DATUMS_HPP -#include +#include namespace boost { namespace geometry { namespace projections { diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_ell_set.hpp b/include/boost/geometry/srs/projections/impl/pj_ell_set.hpp similarity index 56% rename from include/boost/geometry/extensions/gis/projections/impl/pj_ell_set.hpp rename to include/boost/geometry/srs/projections/impl/pj_ell_set.hpp index 98f84917e1..56b84be415 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_ell_set.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_ell_set.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -38,27 +42,36 @@ #include #include +#include #include -#include -#include +#include +#include +#include + namespace boost { namespace geometry { namespace projections { namespace detail { /* set ellipsoid parameters a and es */ -static const double SIXTH = .1666666666666666667; /* 1/6 */ -static const double RA4 = .04722222222222222222; /* 17/360 */ -static const double RA6 = .02215608465608465608; /* 67/3024 */ -static const double RV4 = .06944444444444444444; /* 5/72 */ -static const double RV6 = .04243827160493827160; /* 55/1296 */ +template +inline T SIXTH() { return .1666666666666666667; } /* 1/6 */ +template +inline T RA4() { return .04722222222222222222; } /* 17/360 */ +template +inline T RA6() { return .02215608465608465608; } /* 67/3024 */ +template +inline T RV4() { return .06944444444444444444; } /* 5/72 */ +template +inline T RV6() { return .04243827160493827160; } /* 55/1296 */ /* initialize geographic shape parameters */ -inline void pj_ell_set(std::vector& parameters, double &a, double &es) +template +inline void pj_ell_set(BGParams const& bg_params, std::vector >& parameters, T &a, T &es) { - double b = 0.0; - double e = 0.0; + T b = 0.0; + T e = 0.0; std::string name; /* check for varying forms of ellipsoid input */ @@ -83,10 +96,12 @@ inline void pj_ell_set(std::vector& parameters, double &a, double &es) } } - if (index == -1) { throw proj_exception(-9); } + if (index == -1) { + BOOST_THROW_EXCEPTION( projection_exception(-9) ); + } - parameters.push_back(pj_mkparam(pj_ellps[index].major)); - parameters.push_back(pj_mkparam(pj_ellps[index].ell)); + parameters.push_back(pj_mkparam(pj_ellps[index].major)); + parameters.push_back(pj_mkparam(pj_ellps[index].ell)); } a = pj_param(parameters, "da").f; if (pj_param(parameters, "tes").i) /* eccentricity squared */ @@ -97,7 +112,7 @@ inline void pj_ell_set(std::vector& parameters, double &a, double &es) } else if (pj_param(parameters, "trf").i) { /* recip flattening */ es = pj_param(parameters, "drf").f; if (!es) { - throw proj_exception(-10); + BOOST_THROW_EXCEPTION( projection_exception(-10) ); } es = 1./ es; es = es * (2. - es); @@ -112,10 +127,10 @@ inline void pj_ell_set(std::vector& parameters, double &a, double &es) b = a * sqrt(1. - es); /* following options turn ellipsoid into equivalent sphere */ if (pj_param(parameters, "bR_A").i) { /* sphere--area of ellipsoid */ - a *= 1. - es * (SIXTH + es * (RA4 + es * RA6)); + a *= 1. - es * (SIXTH() + es * (RA4() + es * RA6())); es = 0.; } else if (pj_param(parameters, "bR_V").i) { /* sphere--vol. of ellipsoid */ - a *= 1. - es * (SIXTH + es * (RV4 + es * RV6)); + a *= 1. - es * (SIXTH() + es * (RV4() + es * RV6())); es = 0.; } else if (pj_param(parameters, "bR_a").i) { /* sphere--arithmetic mean */ a = .5 * (a + b); @@ -130,11 +145,11 @@ inline void pj_ell_set(std::vector& parameters, double &a, double &es) int i = pj_param(parameters, "tR_lat_a").i; if (i || /* sphere--arith. */ pj_param(parameters, "tR_lat_g").i) { /* or geom. mean at latitude */ - double tmp; + T tmp; tmp = sin(pj_param(parameters, i ? "rR_lat_a" : "rR_lat_g").f); - if (geometry::math::abs(tmp) > geometry::math::half_pi()) { - throw proj_exception(-11); + if (geometry::math::abs(tmp) > geometry::math::half_pi()) { + BOOST_THROW_EXCEPTION( projection_exception(-11) ); } tmp = 1. - es * tmp * tmp; a *= i ? .5 * (1. - es + tmp) / ( tmp * sqrt(tmp)) : @@ -145,10 +160,67 @@ inline void pj_ell_set(std::vector& parameters, double &a, double &es) } /* some remaining checks */ - if (es < 0.) - { throw proj_exception(-12); } - if (a <= 0.) - { throw proj_exception(-13); } + if (es < 0.) { + BOOST_THROW_EXCEPTION( projection_exception(-12) ); + } + if (a <= 0.) { + BOOST_THROW_EXCEPTION( projection_exception(-13) ); + } +} + +// TODO: change result type to CalculationType +// TODO: move common ellipsoid->sphere code into one function +template +inline void pj_ell_set(srs::static_proj4 const& bg_params, std::vector >& parameters, T &a, T &es) +{ + a = geometry::get_radius<0>(bg_params.model); + T b = geometry::get_radius<2>(bg_params.model); + es = 0.; + if (a != b) + { + es = formula::eccentricity_sqr(bg_params.model); + + /* following options turn ellipsoid into equivalent sphere */ + if (pj_param(parameters, "bR_A").i) { /* sphere--area of ellipsoid */ + a *= 1. - es * (SIXTH() + es * (RA4() + es * RA6())); + es = 0.; + } else if (pj_param(parameters, "bR_V").i) { /* sphere--vol. of ellipsoid */ + a *= 1. - es * (SIXTH() + es * (RV4() + es * RV6())); + es = 0.; + } else if (pj_param(parameters, "bR_a").i) { /* sphere--arithmetic mean */ + a = .5 * (a + b); + es = 0.; + } else if (pj_param(parameters, "bR_g").i) { /* sphere--geometric mean */ + a = sqrt(a * b); + es = 0.; + } else if (pj_param(parameters, "bR_h").i) { /* sphere--harmonic mean */ + a = 2. * a * b / (a + b); + es = 0.; + } else { + int i = pj_param(parameters, "tR_lat_a").i; + if (i || /* sphere--arith. */ + pj_param(parameters, "tR_lat_g").i) { /* or geom. mean at latitude */ + T tmp; + + tmp = sin(pj_param(parameters, i ? "rR_lat_a" : "rR_lat_g").f); + if (geometry::math::abs(tmp) > geometry::math::half_pi()) { + BOOST_THROW_EXCEPTION( projection_exception(-11) ); + } + tmp = 1. - es * tmp * tmp; + a *= i ? .5 * (1. - es + tmp) / ( tmp * sqrt(tmp)) : + sqrt(1. - es) / tmp; + es = 0.; + } + } + } + + /* some remaining checks */ + if (es < 0.) { + BOOST_THROW_EXCEPTION( projection_exception(-12) ); + } + if (a <= 0.) { + BOOST_THROW_EXCEPTION( projection_exception(-13) ); + } } } // namespace detail diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_ellps.hpp b/include/boost/geometry/srs/projections/impl/pj_ellps.hpp similarity index 95% rename from include/boost/geometry/extensions/gis/projections/impl/pj_ellps.hpp rename to include/boost/geometry/srs/projections/impl/pj_ellps.hpp index 780db85a5b..6047936efd 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_ellps.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_ellps.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -35,7 +39,7 @@ #ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_ELLPS_HPP #define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_ELLPS_HPP -#include +#include namespace boost { namespace geometry { namespace projections { diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_fwd.hpp b/include/boost/geometry/srs/projections/impl/pj_fwd.hpp similarity index 77% rename from include/boost/geometry/extensions/gis/projections/impl/pj_fwd.hpp rename to include/boost/geometry/srs/projections/impl/pj_fwd.hpp index 06562b5d4d..73101b7f40 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_fwd.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_fwd.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -38,8 +42,8 @@ #include #include -#include -#include +#include +#include #include @@ -49,30 +53,28 @@ namespace boost { namespace geometry { namespace projections { namespace detail { -namespace forwrd -{ - static const double EPS = 1.0e-12; -} - /* forward projection entry */ template inline void pj_fwd(Prj const& prj, P const& par, LL const& ll, XY& xy) { + typedef typename P::type calc_t; + static const calc_t EPS = 1.0e-12; + using namespace detail; - double lp_lon = geometry::get_as_radian<0>(ll); - double lp_lat = geometry::get_as_radian<1>(ll); - const double t = geometry::math::abs(lp_lat) - geometry::math::half_pi(); + calc_t lp_lon = geometry::get_as_radian<0>(ll); + calc_t lp_lat = geometry::get_as_radian<1>(ll); + calc_t const t = geometry::math::abs(lp_lat) - geometry::math::half_pi(); /* check for forward and latitude or longitude overange */ - if (t > forwrd::EPS || geometry::math::abs(lp_lon) > 10.) + if (t > EPS || geometry::math::abs(lp_lon) > 10.) { - throw proj_exception(); + BOOST_THROW_EXCEPTION( projection_exception(-14) ); } - if (geometry::math::abs(t) <= forwrd::EPS) + if (geometry::math::abs(t) <= EPS) { - lp_lat = lp_lat < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); + lp_lat = lp_lat < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); } else if (par.geoc) { @@ -85,8 +87,8 @@ inline void pj_fwd(Prj const& prj, P const& par, LL const& ll, XY& xy) lp_lon = adjlon(lp_lon); /* post_forward del longitude */ } - double x = 0; - double y = 0; + calc_t x = 0; + calc_t y = 0; prj.fwd(lp_lon, lp_lat, x, y); geometry::set<0>(xy, par.fr_meter * (par.a * x + par.x0)); diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_gauss.hpp b/include/boost/geometry/srs/projections/impl/pj_gauss.hpp similarity index 72% rename from include/boost/geometry/extensions/gis/projections/impl/pj_gauss.hpp rename to include/boost/geometry/srs/projections/impl/pj_gauss.hpp index c8fc8fd4c8..2c90870434 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_gauss.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_gauss.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -46,34 +50,37 @@ namespace detail { namespace gauss { static const int MAX_ITER = 20; +template struct GAUSS { - double C; - double K; - double e; - double ratexp; + T C; + T K; + T e; + T ratexp; }; -static const double DEL_TOL = 1e-14; - -inline double srat(double esinp, double exp) +template +inline T srat(T const& esinp, T const& exp) { return (pow((1.0 - esinp) / (1.0 + esinp), exp)); } -inline GAUSS gauss_ini(double e, double phi0, double &chi, double &rc) +template +inline GAUSS gauss_ini(T const& e, T const& phi0, T& chi, T& rc) { + static const T FORTPI = detail::FORTPI(); + using std::asin; using std::cos; using std::sin; using std::sqrt; using std::tan; - double sphi = 0; - double cphi = 0; - double es = 0; + T sphi = 0; + T cphi = 0; + T es = 0; - GAUSS en; + GAUSS en; es = e * e; en.e = e; sphi = sin(phi0); @@ -84,31 +91,36 @@ inline GAUSS gauss_ini(double e, double phi0, double &chi, double &rc) en.C = sqrt(1.0 + es * cphi * cphi / (1.0 - es)); chi = asin(sphi / en.C); en.ratexp = 0.5 * en.C * e; - en.K = tan(0.5 * chi + detail::FORTPI) - / (pow(tan(0.5 * phi0 + detail::FORTPI), en.C) * srat(en.e * sphi, en.ratexp)); + en.K = tan(0.5 * chi + FORTPI) + / (pow(tan(0.5 * phi0 + FORTPI), en.C) * srat(en.e * sphi, en.ratexp)); return en; } template -inline void gauss(GAUSS const& en, T& lam, T& phi) +inline void gauss(GAUSS const& en, T& lam, T& phi) { + static const T FORTPI = detail::FORTPI(); + phi = 2.0 * atan(en.K * pow(tan(0.5 * phi + FORTPI), en.C) - * srat(en.e * sin(phi), en.ratexp) ) - geometry::math::half_pi(); + * srat(en.e * sin(phi), en.ratexp) ) - geometry::math::half_pi(); lam *= en.C; } template -inline void inv_gauss(GAUSS const& en, T& lam, T& phi) +inline void inv_gauss(GAUSS const& en, T& lam, T& phi) { + static const T FORTPI = detail::FORTPI(); + static const T DEL_TOL = 1e-14; + lam /= en.C; - const double num = pow(tan(0.5 * phi + FORTPI) / en.K, 1.0 / en.C); + const T num = pow(tan(0.5 * phi + FORTPI) / en.K, 1.0 / en.C); int i = 0; for (i = MAX_ITER; i; --i) { - const double elp_phi = 2.0 * atan(num * srat(en.e * sin(phi), - 0.5 * en.e)) - geometry::math::half_pi(); + const T elp_phi = 2.0 * atan(num * srat(en.e * sin(phi), - 0.5 * en.e)) - geometry::math::half_pi(); if (geometry::math::abs(elp_phi - phi) < DEL_TOL) { @@ -120,7 +132,7 @@ inline void inv_gauss(GAUSS const& en, T& lam, T& phi) /* convergence failed */ if (!i) { - throw proj_exception(-17); + BOOST_THROW_EXCEPTION( projection_exception(-17) ); } } diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_init.hpp b/include/boost/geometry/srs/projections/impl/pj_init.hpp similarity index 62% rename from include/boost/geometry/extensions/gis/projections/impl/pj_init.hpp rename to include/boost/geometry/srs/projections/impl/pj_init.hpp index afee6c3203..a8df8aa39e 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_init.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_init.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -40,21 +44,21 @@ #include #include -#include #include +#include +#include #include +#include - -#include -#include -#include -#include -#include -#include -#include - -#include +#include +#include +#include +#include +#include +#include +#include +#include namespace boost { namespace geometry { namespace projections @@ -64,6 +68,113 @@ namespace boost { namespace geometry { namespace projections namespace detail { +template +inline void pj_push_defaults(BGParams const& bg_params, parameters& pin) +{ + pin.params.push_back(pj_mkparam("ellps=WGS84")); + + if (pin.name == "aea") + { + pin.params.push_back(pj_mkparam("lat_1=29.5")); + pin.params.push_back(pj_mkparam("lat_2=45.5 ")); + } + else if (pin.name == "lcc") + { + pin.params.push_back(pj_mkparam("lat_1=33")); + pin.params.push_back(pj_mkparam("lat_2=45")); + } + else if (pin.name == "lagrng") + { + pin.params.push_back(pj_mkparam("W=2")); + } +} + +template +inline void pj_push_defaults(srs::static_proj4 const& bg_params, parameters& pin) +{ + // always set in the model + //pin.params.push_back(pj_mkparam("ellps=WGS84")); + + if (BOOST_GEOMETRY_CONDITION((boost::is_same::value))) + { + pin.params.push_back(pj_mkparam("lat_1=29.5")); + pin.params.push_back(pj_mkparam("lat_2=45.5 ")); + } + else if (BOOST_GEOMETRY_CONDITION((boost::is_same::value))) + { + pin.params.push_back(pj_mkparam("lat_1=33")); + pin.params.push_back(pj_mkparam("lat_2=45")); + } + else if (BOOST_GEOMETRY_CONDITION((boost::is_same::value))) + { + pin.params.push_back(pj_mkparam("W=2")); + } +} + +template +inline void pj_init_units(std::vector > const& params, + std::string const& sunits, + std::string const& sto_meter, + T & to_meter, + T & fr_meter, + T const& default_to_meter, + T const& default_fr_meter) +{ + std::string s; + std::string units = pj_param(params, sunits).s; + if (! units.empty()) + { + const int n = sizeof(pj_units) / sizeof(pj_units[0]); + int index = -1; + for (int i = 0; i < n && index == -1; i++) + { + if(pj_units[i].id == units) + { + index = i; + } + } + + if (index == -1) { + BOOST_THROW_EXCEPTION( projection_exception(-7) ); + } + s = pj_units[index].to_meter; + } + + if (s.empty()) + { + s = pj_param(params, sto_meter).s; + } + + if (! s.empty()) + { + std::size_t const pos = s.find('/'); + if (pos == std::string::npos) + { + to_meter = lexical_cast(s); + } + else + { + T const numerator = lexical_cast(s.substr(0, pos)); + T const denominator = lexical_cast(s.substr(pos + 1)); + if (numerator == 0.0 || denominator == 0.0) + { + BOOST_THROW_EXCEPTION( projection_exception(-99) ); + } + to_meter = numerator / denominator; + } + if (to_meter == 0.0) + { + BOOST_THROW_EXCEPTION( projection_exception(-99) ); + } + fr_meter = 1. / to_meter; + } + else + { + to_meter = default_to_meter; + fr_meter = default_fr_meter; + } +} + /************************************************************************/ /* pj_init() */ /* */ @@ -72,14 +183,14 @@ namespace detail /* called to do the initial allocation so it can be created */ /* large enough to hold projection specific parameters. */ /************************************************************************/ -template -inline parameters pj_init(R const& arguments, bool use_defaults = true) +template +inline parameters pj_init(BGParams const& bg_params, R const& arguments, bool use_defaults = true) { - parameters pin; + parameters pin; for (std::vector::const_iterator it = boost::begin(arguments); it != boost::end(arguments); it++) { - pin.params.push_back(pj_mkparam(*it)); + pin.params.push_back(pj_mkparam(*it)); } /* check if +init present */ @@ -91,8 +202,9 @@ inline parameters pj_init(R const& arguments, bool use_defaults = true) // find projection -> implemented in projection factory pin.name = pj_param(pin.params, "sproj").s; + // exception thrown in projection<> //if (pin.name.empty()) - //{ throw proj_exception(-4); } + //{ BOOST_THROW_EXCEPTION( projection_not_named_exception() ); } // set defaults, unless inhibited @@ -101,34 +213,23 @@ inline parameters pj_init(R const& arguments, bool use_defaults = true) { // proj4 gets defaults from "proj_def.dat", file of 94/02/23 with a few defaults. // Here manually - if (pin.name == "lcc") - { - pin.params.push_back(pj_mkparam("lat_1=33")); - pin.params.push_back(pj_mkparam("lat_2=45")); - } - else if (pin.name == "aea") - { - pin.params.push_back(pj_mkparam("lat_1=29.5")); - pin.params.push_back(pj_mkparam("lat_2=45.5 ")); - } - else - { - //ellps=WGS84 - } + pj_push_defaults(bg_params, pin); //curr = get_defaults(&arguments, curr, name); } /* allocate projection structure */ - // done by constructor: + // done by BGParams constructor: // pin.is_latlong = 0; // pin.is_geocent = 0; // pin.long_wrap_center = 0.0; + // pin.long_wrap_center = 0.0; + pin.is_long_wrap_set = false; /* set datum parameters */ pj_datum_set(pin.params, pin); /* set ellipsoid/sphere parameters */ - pj_ell_set(pin.params, pin.a, pin.es); + pj_ell_set(bg_params, pin.params, pin.a, pin.es); pin.a_orig = pin.a; pin.es_orig = pin.es; @@ -136,7 +237,9 @@ inline parameters pj_init(R const& arguments, bool use_defaults = true) pin.e = sqrt(pin.es); pin.ra = 1. / pin.a; pin.one_es = 1. - pin.es; - if (pin.one_es == 0.) { throw proj_exception(-6); } + if (pin.one_es == 0.) { + BOOST_THROW_EXCEPTION( projection_exception(-6) ); + } pin.rone_es = 1./pin.one_es; /* Now that we have ellipse information check for WGS84 datum */ @@ -157,7 +260,9 @@ inline parameters pj_init(R const& arguments, bool use_defaults = true) pin.over = pj_param(pin.params, "bover").i; /* longitude center for wrapping */ - pin.long_wrap_center = pj_param(pin.params, "rlon_wrap").f; + pin.is_long_wrap_set = pj_param(pin.params, "tlon_wrap").i != 0; + if (pin.is_long_wrap_set) + pin.long_wrap_center = pj_param(pin.params, "rlon_wrap").f; /* central meridian */ pin.lam0 = pj_param(pin.params, "rlon_0").f; @@ -177,63 +282,16 @@ inline parameters pj_init(R const& arguments, bool use_defaults = true) else pin.k0 = 1.; if (pin.k0 <= 0.) { - throw proj_exception(-31); + BOOST_THROW_EXCEPTION( projection_exception(-31) ); } /* set units */ - std::string s; - std::string units = pj_param(pin.params, "sunits").s; - if (! units.empty()) - { - const int n = sizeof(pj_units) / sizeof(pj_units[0]); - int index = -1; - for (int i = 0; i < n && index == -1; i++) - { - if(pj_units[i].id == units) - { - index = i; - } - } - - if (index == -1) { throw proj_exception(-7); } - s = pj_units[index].to_meter; - } - - if (s.empty()) - { - s = pj_param(pin.params, "sto_meter").s; - } - - if (! s.empty()) - { - std::size_t const pos = s.find('/'); - if (pos == std::string::npos) - { - pin.to_meter = lexical_cast(s); - } - else - { - double const numerator = lexical_cast(s.substr(0, pos)); - double const denominator = lexical_cast(s.substr(pos + 1)); - if (numerator == 0.0 || denominator == 0.0) - { - throw proj_exception(-99); - } - pin.to_meter = numerator / denominator; - } - if (pin.to_meter == 0.0) - { - throw proj_exception(-99); - } - pin.fr_meter = 1. / pin.to_meter; - } - else - { - pin.to_meter = pin.fr_meter = 1.; - } + pj_init_units(pin.params, "sunits", "sto_meter", + pin.to_meter, pin.fr_meter, 1., 1.); + pj_init_units(pin.params, "svunits", "svto_meter", + pin.vto_meter, pin.vfr_meter, pin.to_meter, pin.fr_meter); /* prime meridian */ - s.clear(); std::string pm = pj_param(pin.params, "spm").s; if (! pm.empty()) { @@ -250,11 +308,15 @@ inline parameters pj_init(R const& arguments, bool use_defaults = true) } } - if (index == -1) { throw proj_exception(-7); } - if (value.empty()) { throw proj_exception(-46); } + if (index == -1) { + BOOST_THROW_EXCEPTION( projection_exception(-7) ); + } + if (value.empty()) { + BOOST_THROW_EXCEPTION( projection_exception(-46) ); + } - geometry::strategy::dms_parser parser; - pin.from_greenwich = parser(value.c_str()); + dms_parser parser; + pin.from_greenwich = parser.apply(value.c_str()).angle(); } else { @@ -271,8 +333,8 @@ inline parameters pj_init(R const& arguments, bool use_defaults = true) /* individual arguments preceeded by '+', such as "+proj=utm */ /* +zone=11 +ellps=WGS84". */ /************************************************************************/ - -inline parameters pj_init_plus(std::string const& definition, bool use_defaults = true) +template +inline parameters pj_init_plus(BGParams const& bg_params, std::string const& definition, bool use_defaults = true) { const char* sep = " +"; @@ -309,7 +371,7 @@ inline parameters pj_init_plus(std::string const& definition, bool use_defaults { boost::trim(*it); }*/ - return pj_init(arguments, use_defaults); + return pj_init(bg_params, arguments, use_defaults); } } // namespace detail diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_inv.hpp b/include/boost/geometry/srs/projections/impl/pj_inv.hpp similarity index 82% rename from include/boost/geometry/extensions/gis/projections/impl/pj_inv.hpp rename to include/boost/geometry/srs/projections/impl/pj_inv.hpp index dceabdf2be..91cf4c50f6 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_inv.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_inv.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,7 +41,7 @@ -#include +#include #include #include @@ -49,25 +53,23 @@ namespace boost { namespace geometry { namespace projections namespace detail { -namespace inv -{ - static const double EPS = 1.0e-12; -} - /* inverse projection entry */ template inline void pj_inv(PRJ const& prj, PAR const& par, XY const& xy, LL& ll) { + typedef typename PAR::type calc_t; + static const calc_t EPS = 1.0e-12; + /* can't do as much preliminary checking as with forward */ /* descale and de-offset */ - double xy_x = (geometry::get<0>(xy) * par.to_meter - par.x0) * par.ra; - double xy_y = (geometry::get<1>(xy) * par.to_meter - par.y0) * par.ra; - double lon = 0, lat = 0; + calc_t xy_x = (geometry::get<0>(xy) * par.to_meter - par.x0) * par.ra; + calc_t xy_y = (geometry::get<1>(xy) * par.to_meter - par.y0) * par.ra; + calc_t lon = 0, lat = 0; prj.inv(xy_x, xy_y, lon, lat); /* inverse project */ lon += par.lam0; /* reduce from del lp.lam */ if (!par.over) lon = adjlon(lon); /* adjust longitude to CM */ - if (par.geoc && geometry::math::abs(fabs(lat)-geometry::math::half_pi()) > inv::EPS) + if (par.geoc && geometry::math::abs(geometry::math::abs(lat)-geometry::math::half_pi()) > EPS) lat = atan(par.one_es * tan(lat)); geometry::set_from_radian<0>(ll, lon); diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_mlfn.hpp b/include/boost/geometry/srs/projections/impl/pj_mlfn.hpp similarity index 68% rename from include/boost/geometry/extensions/gis/projections/impl/pj_mlfn.hpp rename to include/boost/geometry/srs/projections/impl/pj_mlfn.hpp index c4bbf266ef..1317dd2e2f 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_mlfn.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_mlfn.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -44,30 +48,25 @@ namespace boost { namespace geometry { namespace projections { namespace detail { -/* meridinal distance for ellipsoid and inverse -** 8th degree - accurate to < 1e-5 meters when used in conjuction -** with typical major axis values. -** Inverse determines phi to EPS (1e-11) radians, about 1e-6 seconds. -*/ -static const double C00 = 1.; -static const double C02 = .25; -static const double C04 = .046875; -static const double C06 = .01953125; -static const double C08 = .01068115234375; -static const double C22 = .75; -static const double C44 = .46875; -static const double C46 = .01302083333333333333; -static const double C48 = .00712076822916666666; -static const double C66 = .36458333333333333333; -static const double C68 = .00569661458333333333; -static const double C88 = .3076171875; -static const double EPS = 1e-11; -static const int MAX_ITER = 10; static const int EN_SIZE = 5; -inline bool pj_enfn(double es, double* en) +template +inline bool pj_enfn(T const& es, T* en) { - double t; //, *en; + static const T C00 = 1.; + static const T C02 = .25; + static const T C04 = .046875; + static const T C06 = .01953125; + static const T C08 = .01068115234375; + static const T C22 = .75; + static const T C44 = .46875; + static const T C46 = .01302083333333333333; + static const T C48 = .00712076822916666666; + static const T C66 = .36458333333333333333; + static const T C68 = .00569661458333333333; + static const T C88 = .3076171875; + + T t; //, *en; //if (en = (double *)pj_malloc(EN_SIZE * sizeof(double))) { @@ -81,7 +80,8 @@ inline bool pj_enfn(double es, double* en) return true; } -inline double pj_mlfn(double phi, double sphi, double cphi, const double *en) +template +inline T pj_mlfn(T const& phi, T sphi, T cphi, const T *en) { cphi *= sphi; sphi *= sphi; @@ -89,9 +89,18 @@ inline double pj_mlfn(double phi, double sphi, double cphi, const double *en) + sphi*(en[3] + sphi*en[4])))); } -inline double pj_inv_mlfn(double arg, double es, const double *en) +template +inline T pj_inv_mlfn(T const& arg, T const& es, const T *en) { - double s, t, phi, k = 1./(1.-es); + /* meridinal distance for ellipsoid and inverse + ** 8th degree - accurate to < 1e-5 meters when used in conjuction + ** with typical major axis values. + ** Inverse determines phi to EPS (1e-11) radians, about 1e-6 seconds. + */ + static const T EPS = 1e-11; + static const int MAX_ITER = 10; + + T s, t, phi, k = 1./(1.-es); int i; phi = arg; @@ -102,7 +111,7 @@ inline double pj_inv_mlfn(double arg, double es, const double *en) if (geometry::math::abs(t) < EPS) return phi; } - throw proj_exception(-17); + BOOST_THROW_EXCEPTION( projection_exception(-17) ); return phi; } diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_msfn.hpp b/include/boost/geometry/srs/projections/impl/pj_msfn.hpp similarity index 88% rename from include/boost/geometry/extensions/gis/projections/impl/pj_msfn.hpp rename to include/boost/geometry/srs/projections/impl/pj_msfn.hpp index 80c86ef471..f99cc2c843 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_msfn.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_msfn.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -42,7 +46,8 @@ namespace detail { /* determine constant small m */ -inline double pj_msfn(double sinphi, double cosphi, double es) +template +inline T pj_msfn(T const& sinphi, T const& cosphi, T const& es) { return (cosphi / sqrt (1. - es * sinphi * sinphi)); } diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_param.hpp b/include/boost/geometry/srs/projections/impl/pj_param.hpp similarity index 86% rename from include/boost/geometry/extensions/gis/projections/impl/pj_param.hpp rename to include/boost/geometry/srs/projections/impl/pj_param.hpp index 8e49ba46a6..4f33ad837f 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_param.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_param.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,9 +43,8 @@ #include #include -#include - -#include +#include +#include namespace boost { namespace geometry { namespace projections { @@ -51,7 +54,8 @@ namespace detail { /* create pvalue list entry */ -inline pvalue pj_mkparam(std::string const& str) +template +inline pvalue pj_mkparam(std::string const& str) { std::string name = str; std::string value; @@ -64,7 +68,7 @@ inline pvalue pj_mkparam(std::string const& str) } - pvalue newitem; + pvalue newitem; newitem.param = name; newitem.s = value; newitem.used = 0; @@ -90,15 +94,17 @@ inline pvalue pj_mkparam(std::string const& str) /* */ /************************************************************************/ -inline pvalue pj_param(std::vector const& pl, std::string opt) +template +inline pvalue pj_param(std::vector > const& pl, std::string opt) { char type = opt[0]; opt.erase(opt.begin()); - pvalue value; + pvalue value; /* simple linear lookup */ - for (std::vector::const_iterator it = pl.begin(); it != pl.end(); it++) + typedef typename std::vector >::const_iterator iterator; + for (iterator it = pl.begin(); it != pl.end(); it++) { if (it->param == opt) { @@ -116,8 +122,8 @@ inline pvalue pj_param(std::vector const& pl, std::string opt) break; case 'r': /* degrees input */ { - geometry::strategy::dms_parser parser; - value.f = parser(it->s.c_str()); + dms_parser parser; + value.f = parser.apply(it->s.c_str()).angle(); } break; case 's': /* char string */ diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_phi2.hpp b/include/boost/geometry/srs/projections/impl/pj_phi2.hpp similarity index 79% rename from include/boost/geometry/extensions/gis/projections/impl/pj_phi2.hpp rename to include/boost/geometry/srs/projections/impl/pj_phi2.hpp index fec02240d5..71f0cf1249 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_phi2.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_phi2.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -40,28 +44,26 @@ namespace boost { namespace geometry { namespace projections { namespace detail { -namespace phi2 +template +inline T pj_phi2(T const& ts, T const& e) { - static const double TOL = 1.0e-10; + static const T TOL = 1.0e-10; static const int N_ITER = 15; -} -inline double pj_phi2(double ts, double e) -{ - double eccnth, Phi, con, dphi; + T eccnth, Phi, con, dphi; int i; eccnth = .5 * e; - Phi = geometry::math::half_pi() - 2. * atan (ts); - i = phi2::N_ITER; + Phi = geometry::math::half_pi() - 2. * atan (ts); + i = N_ITER; do { con = e * sin (Phi); - dphi = geometry::math::half_pi() - 2. * atan (ts * pow((1. - con) / + dphi = geometry::math::half_pi() - 2. * atan (ts * pow((1. - con) / (1. + con), eccnth)) - Phi; Phi += dphi; - } while ( geometry::math::abs(dphi) > phi2::TOL && --i); + } while ( geometry::math::abs(dphi) > TOL && --i); if (i <= 0) - throw proj_exception(-18); + BOOST_THROW_EXCEPTION( projection_exception(-18) ); return Phi; } diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_qsfn.hpp b/include/boost/geometry/srs/projections/impl/pj_qsfn.hpp similarity index 82% rename from include/boost/geometry/extensions/gis/projections/impl/pj_qsfn.hpp rename to include/boost/geometry/srs/projections/impl/pj_qsfn.hpp index 713802420f..606fab5e4e 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_qsfn.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_qsfn.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,16 +41,19 @@ namespace boost { namespace geometry { namespace projections -{ namespace detail { +{ + +namespace detail { /* determine small q */ -inline double pj_qsfn(double sinphi, double e, double one_es) +template +inline T pj_qsfn(T const& sinphi, T const& e, T const& one_es) { - static const double EPSILON = 1.0e-7; + static const T EPSILON = 1.0e-7; if (e >= EPSILON) { - double con = e * sinphi; + T con = e * sinphi; return (one_es * (sinphi / (1. - con * con) - (.5 / e) * log ((1. - con) / (1. + con)))); } else @@ -54,10 +61,12 @@ inline double pj_qsfn(double sinphi, double e, double one_es) } -#define MAX_C 9 +static const int MAX_C = 9; + +template struct AUTHALIC { - double C[MAX_C], CP[MAX_C], CQ[MAX_C]; + T C[MAX_C], CP[MAX_C], CQ[MAX_C]; }; /** @@ -66,9 +75,10 @@ struct AUTHALIC * @param[in] a initialized structure pointer * @return authalic latitude */ -inline double proj_qsfn(double phi, const AUTHALIC& a) +template +inline T proj_qsfn(T const& phi, AUTHALIC const& a) { - double s, s2, sum; + T s, s2, sum; int i = MAX_C; s = sin(phi); @@ -79,6 +89,7 @@ inline double proj_qsfn(double phi, const AUTHALIC& a) } } // namespace detail + }}} // namespace boost::geometry::projections #endif diff --git a/include/boost/geometry/srs/projections/impl/pj_strerrno.hpp b/include/boost/geometry/srs/projections/impl/pj_strerrno.hpp new file mode 100644 index 0000000000..54467d4a32 --- /dev/null +++ b/include/boost/geometry/srs/projections/impl/pj_strerrno.hpp @@ -0,0 +1,120 @@ +// Boost.Geometry +// This file is manually converted from PROJ4 + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This file is converted from PROJ4, http://trac.osgeo.org/proj +// PROJ4 is originally written by Gerald Evenden (then of the USGS) +// PROJ4 is maintained by Frank Warmerdam +// This file was converted to Geometry Library by Adam Wulkiewicz + +// Original copyright notice: + +// None + +/* list of projection system pj_errno values */ + +#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP +#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP + +#include +#include +#include + +namespace boost { namespace geometry { namespace projections +{ + +namespace detail +{ + + static const char * +pj_err_list[] = { + "no arguments in initialization list", /* -1 */ + "no options found in 'init' file", /* -2 */ + "no colon in init= string", /* -3 */ + "projection not named", /* -4 */ + "unknown projection id", /* -5 */ + "effective eccentricity = 1.", /* -6 */ + "unknown unit conversion id", /* -7 */ + "invalid boolean param argument", /* -8 */ + "unknown elliptical parameter name", /* -9 */ + "reciprocal flattening (1/f) = 0", /* -10 */ + "|radius reference latitude| > 90", /* -11 */ + "squared eccentricity < 0", /* -12 */ + "major axis or radius = 0 or not given", /* -13 */ + "latitude or longitude exceeded limits", /* -14 */ + "invalid x or y", /* -15 */ + "improperly formed DMS value", /* -16 */ + "non-convergent inverse meridional dist", /* -17 */ + "non-convergent inverse phi2", /* -18 */ + "acos/asin: |arg| >1.+1e-14", /* -19 */ + "tolerance condition error", /* -20 */ + "conic lat_1 = -lat_2", /* -21 */ + "lat_1 >= 90", /* -22 */ + "lat_1 = 0", /* -23 */ + "lat_ts >= 90", /* -24 */ + "no distance between control points", /* -25 */ + "projection not selected to be rotated", /* -26 */ + "W <= 0 or M <= 0", /* -27 */ + "lsat not in 1-5 range", /* -28 */ + "path not in range", /* -29 */ + "h <= 0", /* -30 */ + "k <= 0", /* -31 */ + "lat_0 = 0 or 90 or alpha = 90", /* -32 */ + "lat_1=lat_2 or lat_1=0 or lat_2=90", /* -33 */ + "elliptical usage required", /* -34 */ + "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 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 */ + "|lat_1| == |lat_2|", /* -42 */ + "lat_0 is pi/2 from mean lat", /* -43 */ + "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 */ + "invalid sweep axis, choose x or y", /* -49 */ + "malformed pipeline", /* -50 */ +}; + +inline std::string pj_strerrno(int err) { + if (0==err) + return ""; + + if (err > 0) { +//#ifdef HAVE_STRERROR + return ::strerror(err); +//#else +// std::stringstream ss; +// ss << "no system list, errno: " << err; +// return ss.str(); +//#endif + } + + else /*if (err < 0)*/ { + size_t adjusted_err = - err - 1; + if (adjusted_err < (sizeof(pj_err_list) / sizeof(char *))) + return(pj_err_list[adjusted_err]); + else { + std::stringstream ss; + ss << "invalid projection system error (" << err << ")"; + return ss.str(); + } + } +} + +} // namespace detail + +}}} // namespace boost::geometry::projections + +#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_STRERRNO_HPP diff --git a/include/boost/geometry/srs/projections/impl/pj_transform.hpp b/include/boost/geometry/srs/projections/impl/pj_transform.hpp new file mode 100644 index 0000000000..7572d03839 --- /dev/null +++ b/include/boost/geometry/srs/projections/impl/pj_transform.hpp @@ -0,0 +1,1145 @@ +// Boost.Geometry +// This file is manually converted from PROJ4 + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This file is converted from PROJ4, http://trac.osgeo.org/proj +// PROJ4 is originally written by Gerald Evenden (then of the USGS) +// PROJ4 is maintained by Frank Warmerdam +// This file was converted to Geometry Library by Adam Wulkiewicz + +// Original copyright notice: + +// Copyright (c) 2000, Frank Warmerdam + +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +#ifndef BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_PJ_TRANSFORM_HPP +#define BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_PJ_TRANSFORM_HPP + + +#include +#include + +#include +#include + +#include + +#include +#include + + +namespace boost { namespace geometry { namespace projections +{ + +namespace detail +{ + +// ----------------------------------------------------------- +// Boost.Geometry helpers begin +// ----------------------------------------------------------- + +template +< + typename Point, + bool HasCoord2 = (dimension::value > 2) +> +struct z_access +{ + typedef typename coordinate_type::type type; + static inline type get(Point const& point) + { + return geometry::get<2>(point); + } + static inline void set(Point & point, type const& h) + { + return geometry::set<2>(point, h); + } +}; + +template +struct z_access +{ + typedef typename coordinate_type::type type; + static inline type get(Point const& point) + { + return type(0); + } + static inline void set(Point & , type const& ) + {} +}; + +template +inline typename z_access::type +get_z(XYorXYZ const& xy_or_xyz) +{ + return z_access::get(xy_or_xyz); +} + +template +inline void set_z(XYorXYZ & xy_or_xyz, + typename z_access::type const& z) +{ + return z_access::set(xy_or_xyz, z); +} + +template +< + typename Range, + bool AddZ = (dimension::type>::value < 3) +> +struct range_wrapper +{ + typedef Range range_type; + typedef typename boost::range_value::type point_type; + typedef typename coordinate_type::type coord_t; + + range_wrapper(Range & range) + : m_range(range) + {} + + range_type & get_range() { return m_range; } + + coord_t get_z(std::size_t i) { return detail::get_z(range::at(m_range, i)); } + void set_z(std::size_t i, coord_t const& v) { return detail::set_z(range::at(m_range, i), v); } + +private: + Range & m_range; +}; + +template +struct range_wrapper +{ + typedef Range range_type; + typedef typename boost::range_value::type point_type; + typedef typename coordinate_type::type coord_t; + + range_wrapper(Range & range) + : m_range(range) + , m_zs(boost::size(range), coord_t(0)) + {} + + range_type & get_range() { return m_range; } + + coord_t get_z(std::size_t i) { return m_zs[i]; } + void set_z(std::size_t i, coord_t const& v) { m_zs[i] = v; } + +private: + Range & m_range; + std::vector m_zs; +}; + +// ----------------------------------------------------------- +// Boost.Geometry helpers end +// ----------------------------------------------------------- + +/* +template +static int pj_adjust_axis( projCtx ctx, const char *axis, int denormalize_flag, + long point_count, int point_offset, + T & x, T & y, T & z ); +*/ + +/*#ifndef SRS_WGS84_SEMIMAJOR +#define SRS_WGS84_SEMIMAJOR 6378137.0 +#endif + +#ifndef SRS_WGS84_ESQUARED +#define SRS_WGS84_ESQUARED 0.0066943799901413165 +#endif*/ + +template +inline typename Par::type Dx_BF(Par const& defn) { return defn.datum_params[0]; } +template +inline typename Par::type Dy_BF(Par const& defn) { return defn.datum_params[1]; } +template +inline typename Par::type Dz_BF(Par const& defn) { return defn.datum_params[2]; } +template +inline typename Par::type Rx_BF(Par const& defn) { return defn.datum_params[3]; } +template +inline typename Par::type Ry_BF(Par const& defn) { return defn.datum_params[4]; } +template +inline typename Par::type Rz_BF(Par const& defn) { return defn.datum_params[5]; } +template +inline typename Par::type M_BF(Par const& defn) { return defn.datum_params[6]; } + +/* +** This table is intended to indicate for any given error code in +** the range 0 to -44, whether that error will occur for all locations (ie. +** it is a problem with the coordinate system as a whole) in which case the +** value would be 0, or if the problem is with the point being transformed +** in which case the value is 1. +** +** At some point we might want to move this array in with the error message +** list or something, but while experimenting with it this should be fine. +*/ + +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, 0, 0, + /* 40 to 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }; + + +template +inline int pj_geocentric_to_geodetic( T const& a, T const& es, + Range & range ); +template +inline int pj_geodetic_to_geocentric( T const& a, T const& es, + Range & range ); + +/************************************************************************/ +/* pj_transform() */ +/* */ +/* Currently this function doesn't recognise if two projections */ +/* are identical (to short circuit reprojection) because it is */ +/* difficult to compare PJ structures (since there are some */ +/* projection specific components). */ +/************************************************************************/ + +template +inline void pj_transform(SrcPrj const& srcprj, Par const& srcdefn, + DstPrj2 const& dstprj, Par const& dstdefn, + Range & range) + +{ + typedef typename boost::range_value::type point_type; + typedef typename coordinate_type::type coord_t; + static const std::size_t dimension = geometry::dimension::value; + std::size_t point_count = boost::size(range); + + /*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 && dimension > 2 ) + { + for( std::size_t i = 0; i < point_count; i++ ) + { + point_type const& point = geometry::range::at(range, i); + set_z(point, get_z(point) * srcdefn.vto_meter); + } + } + +/* -------------------------------------------------------------------- */ +/* Transform geocentric source coordinates to lat/long. */ +/* -------------------------------------------------------------------- */ + if( srcdefn.is_geocent ) + { + // Point should be cartesian 3D (ECEF) + if (dimension < 3) + BOOST_THROW_EXCEPTION( projection_exception(PJD_ERR_GEOCENTRIC) ); + //return PJD_ERR_GEOCENTRIC; + + if( srcdefn.to_meter != 1.0 ) + { + for(std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(range, i); + if( get<0>(point) != HUGE_VAL ) + { + set<0>(point, get<0>(point) * srcdefn.to_meter); + set<1>(point, get<1>(point) * srcdefn.to_meter); + } + } + } + + range_wrapper rng(range); + int err = pj_geocentric_to_geodetic( srcdefn.a_orig, srcdefn.es_orig, + rng ); + if( err != 0 ) + BOOST_THROW_EXCEPTION( projection_exception(err) ); + //return err; + + // NOTE: here 3D cartesian ECEF is converted into 3D geodetic LLH + } + +/* -------------------------------------------------------------------- */ +/* Transform source points to lat/long, if they aren't */ +/* already. */ +/* -------------------------------------------------------------------- */ + else if( !srcdefn.is_latlong ) + { + // Point should be cartesian 2D or 3D (map projection) + + /* Check first if projection is invertible. */ + /*if( (srcdefn->inv3d == NULL) && (srcdefn->inv == NULL)) + { + 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; + }*/ + + /* If invertible - First try inv3d if defined */ + //if (srcdefn->inv3d != NULL) + //{ + // /* Three dimensions must be defined */ + // if ( z == NULL) + // { + // pj_ctx_set_errno( pj_get_ctx(srcdefn), PJD_ERR_GEOCENTRIC); + // return PJD_ERR_GEOCENTRIC; + // } + + // for (i=0; i < point_count; i++) + // { + // XYZ projected_loc; + // XYZ geodetic_loc; + + // projected_loc.u = x[point_offset*i]; + // projected_loc.v = y[point_offset*i]; + // projected_loc.w = z[point_offset*i]; + + // if (projected_loc.u == HUGE_VAL) + // continue; + + // geodetic_loc = pj_inv3d(projected_loc, srcdefn); + // if( srcdefn->ctx->last_errno != 0 ) + // { + // 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; + // geodetic_loc.v = HUGE_VAL; + // geodetic_loc.w = HUGE_VAL; + // } + // } + + // x[point_offset*i] = geodetic_loc.u; + // y[point_offset*i] = geodetic_loc.v; + // z[point_offset*i] = geodetic_loc.w; + + // } + + //} + //else + { + /* Fallback to the original PROJ.4 API 2d inversion - inv */ + for( std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(range, i); + + model::point projected_loc; + model::point > geodetic_loc; + + set<0>(projected_loc, get<0>(point)); + set<1>(projected_loc, get<1>(point)); + + if( get<0>(projected_loc) == HUGE_VAL ) + continue; + + try + { + pj_inv(srcprj, srcdefn, projected_loc, geodetic_loc); + } + catch(projection_exception const& e) + { + if( (e.code() != 33 /*EDOM*/ + && e.code() != 34 /*ERANGE*/ ) + && (e.code() > 0 + || e.code() < -44 || point_count == 1 + || transient_error[-e.code()] == 0) ) { + BOOST_RETHROW + } else { + set<0>(geodetic_loc, HUGE_VAL); + set<1>(geodetic_loc, HUGE_VAL); + } + } + + set<0>(point, get<0>(geodetic_loc)); + set<1>(point, get<1>(geodetic_loc)); + } + } + } +/* -------------------------------------------------------------------- */ +/* But if they are already lat long, adjust for the prime */ +/* meridian if there is one in effect. */ +/* -------------------------------------------------------------------- */ + if( srcdefn.from_greenwich != 0.0 ) + { + for( std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(range, i); + + if( get<0>(point) != HUGE_VAL ) + set<0>(point, get<0>(point) + srcdefn.from_greenwich); + } + } + +/* -------------------------------------------------------------------- */ +/* Do we need to translate from geoid to ellipsoidal vertical */ +/* datum? */ +/* -------------------------------------------------------------------- */ + /*if( srcdefn->has_geoid_vgrids && z != NULL ) + { + 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. */ +/* -------------------------------------------------------------------- */ + pj_datum_transform( srcdefn, dstdefn, range ); + +/* -------------------------------------------------------------------- */ +/* Do we need to translate from ellipsoidal to geoid vertical */ +/* datum? */ +/* -------------------------------------------------------------------- */ + /*if( dstdefn->has_geoid_vgrids && z != NULL ) + { + 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. */ +/* -------------------------------------------------------------------- */ + if( dstdefn.from_greenwich != 0.0 ) + { + for( std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(range, i); + + if( get<0>(point) != HUGE_VAL ) + set<0>(point, get<0>(point) - dstdefn.from_greenwich); + } + } + +/* -------------------------------------------------------------------- */ +/* Transform destination latlong to geocentric if required. */ +/* -------------------------------------------------------------------- */ + if( dstdefn.is_geocent ) + { + // Point should be cartesian 3D (ECEF) + if (dimension < 3) + BOOST_THROW_EXCEPTION( projection_exception(PJD_ERR_GEOCENTRIC) ); + //return PJD_ERR_GEOCENTRIC; + + // NOTE: In the original code the return value of the following + // function is not checked + range_wrapper rng(range); + pj_geodetic_to_geocentric( dstdefn.a_orig, dstdefn.es_orig, + rng ); + + if( dstdefn.fr_meter != 1.0 ) + { + for( std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(range, i); + if( get<0>(point) != HUGE_VAL ) + { + set<0>(point, get<0>(point) * dstdefn.fr_meter); + set<1>(point, get<1>(point) * dstdefn.fr_meter); + } + } + } + } + +/* -------------------------------------------------------------------- */ +/* Transform destination points to projection coordinates, if */ +/* desired. */ +/* -------------------------------------------------------------------- */ + else if( !dstdefn.is_latlong ) + { + + //if( dstdefn->fwd3d != NULL) + //{ + // for( i = 0; i < point_count; i++ ) + // { + // XYZ projected_loc; + // LPZ geodetic_loc; + + // geodetic_loc.u = x[point_offset*i]; + // geodetic_loc.v = y[point_offset*i]; + // geodetic_loc.w = z[point_offset*i]; + + // if (geodetic_loc.u == HUGE_VAL) + // continue; + + // projected_loc = pj_fwd3d( geodetic_loc, dstdefn); + // if( dstdefn->ctx->last_errno != 0 ) + // { + // 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; + // projected_loc.v = HUGE_VAL; + // projected_loc.w = HUGE_VAL; + // } + // } + + // x[point_offset*i] = projected_loc.u; + // y[point_offset*i] = projected_loc.v; + // z[point_offset*i] = projected_loc.w; + // } + + //} + //else + { + for(std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(range, i); + + model::point projected_loc; + model::point > geodetic_loc; + + set<0>(geodetic_loc, get<0>(point)); + set<1>(geodetic_loc, get<1>(point)); + + if( get<0>(geodetic_loc) == HUGE_VAL ) + continue; + + try { + pj_fwd(dstprj, dstdefn, geodetic_loc, projected_loc); + } catch (projection_exception const& e) { + if( (e.code() != 33 /*EDOM*/ + && e.code() != 34 /*ERANGE*/ ) + && (e.code() > 0 + || e.code() < -44 || point_count == 1 + || transient_error[-e.code()] == 0) ) { + BOOST_RETHROW + } else { + set<0>(projected_loc, HUGE_VAL); + set<1>(projected_loc, HUGE_VAL); + } + } + + set<0>(point, get<0>(projected_loc)); + set<1>(point, get<1>(projected_loc)); + } + } + } + +/* -------------------------------------------------------------------- */ +/* 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.is_long_wrap_set ) + { + for( std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(range, i); + coord_t x = get_as_radian<0>(point); + + if( x == HUGE_VAL ) + continue; + + while( x < dstdefn.long_wrap_center - math::pi() ) + x += math::two_pi(); + while( x > dstdefn.long_wrap_center + math::pi() ) + x -= math::two_pi(); + + set_from_radian<0>(point, x); + } + } + +/* -------------------------------------------------------------------- */ +/* Transform Z from meters if needed. */ +/* -------------------------------------------------------------------- */ + if( dstdefn.vto_meter != 1.0 && dimension > 2 ) + { + for( std::size_t i = 0; i < point_count; i++ ) + { + point_type const& point = geometry::range::at(range, i); + set_z(point, get_z(point) * 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; + }*/ +} + +/************************************************************************/ +/* pj_geodetic_to_geocentric() */ +/************************************************************************/ + +template +inline int pj_geodetic_to_geocentric( T const& a, T const& es, + range_wrapper & range_wrapper ) + +{ + //typedef typename boost::range_iterator::type iterator; + typedef typename boost::range_value::type point_type; + //typedef typename coordinate_type::type coord_t; + + Range & rng = range_wrapper.get_range(); + std::size_t point_count = boost::size(rng); + + int ret_errno = 0; + + T const b = (es == 0.0) ? a : a * sqrt(1-es); + + GeocentricInfo gi; + if( pj_Set_Geocentric_Parameters( gi, a, b ) != 0 ) + { + return PJD_ERR_GEOCENTRIC; + } + + for( std::size_t i = 0 ; i < point_count ; ++i ) + { + point_type & point = range::at(rng, i); + + if( get<1>(point) == HUGE_VAL ) + continue; + + T X = 0, Y = 0, Z = 0; + if( pj_Convert_Geodetic_To_Geocentric( gi, + get_as_radian<0>(point), + get_as_radian<1>(point), + range_wrapper.get_z(i), // Height + X, Y, Z ) != 0 ) + { + ret_errno = -14; + set<0>(point, HUGE_VAL); + set<1>(point, HUGE_VAL); + /* but keep processing points! */ + } + else + { + set<0>(point, X); + set<1>(point, Y); + range_wrapper.set_z(i, Z); + } + } + + return ret_errno; +} + +/************************************************************************/ +/* pj_geodetic_to_geocentric() */ +/************************************************************************/ + +template +inline int pj_geocentric_to_geodetic( T const& a, T const& es, + range_wrapper & range_wrapper ) + +{ + //typedef typename boost::range_iterator::type iterator; + typedef typename boost::range_value::type point_type; + //typedef typename coordinate_type::type coord_t; + + Range & rng = range_wrapper.get_range(); + std::size_t point_count = boost::size(rng); + + T const b = (es == 0.0) ? a : a * sqrt(1-es); + + GeocentricInfo gi; + if( pj_Set_Geocentric_Parameters( gi, a, b ) != 0 ) + { + return PJD_ERR_GEOCENTRIC; + } + + for( std::size_t i = 0 ; i < point_count ; ++i ) + { + point_type & point = range::at(rng, i); + + if( get<0>(point) == HUGE_VAL ) + continue; + + T Longitude = 0, Latitude = 0, Height = 0; + pj_Convert_Geocentric_To_Geodetic( gi, + get<0>(point), + get<1>(point), + range_wrapper.get_z(i), // z + Longitude, Latitude, Height ); + + set_from_radian<0>(point, Longitude); + set_from_radian<1>(point, Latitude); + range_wrapper.set_z(i, Height); // Height + } + + return 0; +} + +/************************************************************************/ +/* pj_compare_datums() */ +/* */ +/* Returns TRUE if the two datums are identical, otherwise */ +/* FALSE. */ +/************************************************************************/ + +template +inline bool pj_compare_datums( Par & srcdefn, Par & dstdefn ) +{ + if( srcdefn.datum_type != dstdefn.datum_type ) + { + return false; + } + else if( srcdefn.a_orig != dstdefn.a_orig + || math::abs(srcdefn.es_orig - dstdefn.es_orig) > 0.000000000050 ) + { + /* the tolerance for es is to ensure that GRS80 and WGS84 are + considered identical */ + return false; + } + else if( srcdefn.datum_type == PJD_3PARAM ) + { + return (srcdefn.datum_params[0] == dstdefn.datum_params[0] + && srcdefn.datum_params[1] == dstdefn.datum_params[1] + && srcdefn.datum_params[2] == dstdefn.datum_params[2]); + } + else if( srcdefn.datum_type == PJD_7PARAM ) + { + return (srcdefn.datum_params[0] == dstdefn.datum_params[0] + && srcdefn.datum_params[1] == dstdefn.datum_params[1] + && srcdefn.datum_params[2] == dstdefn.datum_params[2] + && srcdefn.datum_params[3] == dstdefn.datum_params[3] + && srcdefn.datum_params[4] == dstdefn.datum_params[4] + && srcdefn.datum_params[5] == dstdefn.datum_params[5] + && srcdefn.datum_params[6] == dstdefn.datum_params[6]); + } + else if( srcdefn.datum_type == PJD_GRIDSHIFT ) + { + return pj_param(srcdefn.params,"snadgrids").s + == pj_param(dstdefn.params,"snadgrids").s; + } + else + return true; +} + +/************************************************************************/ +/* pj_geocentic_to_wgs84() */ +/************************************************************************/ + +template +inline int pj_geocentric_to_wgs84( Par const& defn, + range_wrapper & range_wrapper ) + +{ + typedef typename boost::range_value::type point_type; + typedef typename coordinate_type::type coord_t; + + Range & rng = range_wrapper.get_range(); + std::size_t point_count = boost::size(rng); + + if( defn.datum_type == PJD_3PARAM ) + { + for(std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(rng, i); + + if( get<0>(point) == HUGE_VAL ) + continue; + + set<0>(point, get<0>(point) + Dx_BF(defn)); + set<1>(point, get<1>(point) + Dy_BF(defn)); + range_wrapper.set_z(i, range_wrapper.get_z(i) + Dz_BF(defn)); + } + } + else if( defn.datum_type == PJD_7PARAM ) + { + for(std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(rng, i); + + if( get<0>(point) == HUGE_VAL ) + continue; + + coord_t x = get<0>(point); + coord_t y = get<1>(point); + coord_t z = range_wrapper.get_z(i); + + coord_t x_out, y_out, z_out; + + x_out = M_BF(defn)*( x - Rz_BF(defn)*y + Ry_BF(defn)*z) + Dx_BF(defn); + y_out = M_BF(defn)*( Rz_BF(defn)*x + y - Rx_BF(defn)*z) + Dy_BF(defn); + z_out = M_BF(defn)*(-Ry_BF(defn)*x + Rx_BF(defn)*y + z) + Dz_BF(defn); + + set<0>(point, x_out); + set<1>(point, y_out); + range_wrapper.set_z(i, z_out); + } + } + + return 0; +} + +/************************************************************************/ +/* pj_geocentic_from_wgs84() */ +/************************************************************************/ + +template +inline int pj_geocentric_from_wgs84( Par const& defn, + range_wrapper & range_wrapper ) + +{ + typedef typename boost::range_value::type point_type; + typedef typename coordinate_type::type coord_t; + + Range & rng = range_wrapper.get_range(); + std::size_t point_count = boost::size(rng); + + if( defn.datum_type == PJD_3PARAM ) + { + for(std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(rng, i); + + if( get<0>(point) == HUGE_VAL ) + continue; + + set<0>(point, get<0>(point) - Dx_BF(defn)); + set<1>(point, get<1>(point) - Dy_BF(defn)); + range_wrapper.set_z(i, range_wrapper.get_z(i) - Dz_BF(defn)); + } + } + else if( defn.datum_type == PJD_7PARAM ) + { + for(std::size_t i = 0; i < point_count; i++ ) + { + point_type & point = range::at(rng, i); + + coord_t x = get<0>(point); + + if( x == HUGE_VAL ) + continue; + + coord_t y = get<1>(point); + coord_t z = range_wrapper.get_z(i); + + coord_t x_tmp = (x - Dx_BF(defn)) / M_BF(defn); + coord_t y_tmp = (y - Dy_BF(defn)) / M_BF(defn); + coord_t z_tmp = (z - Dz_BF(defn)) / M_BF(defn); + + x = x_tmp + Rz_BF(defn)*y_tmp - Ry_BF(defn)*z_tmp; + y = -Rz_BF(defn)*x_tmp + y_tmp + Rx_BF(defn)*z_tmp; + z = Ry_BF(defn)*x_tmp - Rx_BF(defn)*y_tmp + z_tmp; + + set<0>(point, x); + set<1>(point, y); + range_wrapper.set_z(i, z); + } + } + + return 0; +} + + +inline bool pj_datum_check_error(int err) +{ + return err != 0 && (err > 0 || transient_error[-err] == 0); +} + +/************************************************************************/ +/* pj_datum_transform() */ +/* */ +/* The input should be long/lat/z coordinates in radians in the */ +/* source datum, and the output should be long/lat/z */ +/* coordinates in radians in the destination datum. */ +/************************************************************************/ + +template +inline void pj_datum_transform( Par const& srcdefn, Par const& dstdefn, + Range & range ) + +{ + typedef typename Par::type calc_t; + + calc_t src_a, src_es, dst_a, dst_es; + +/* -------------------------------------------------------------------- */ +/* We cannot do any meaningful datum transformation if either */ +/* the source or destination are of an unknown datum type */ +/* (ie. only a +ellps declaration, no +datum). This is new */ +/* behavior for PROJ 4.6.0. */ +/* -------------------------------------------------------------------- */ + if( srcdefn.datum_type == PJD_UNKNOWN + || dstdefn.datum_type == PJD_UNKNOWN ) + return; + +/* -------------------------------------------------------------------- */ +/* Short cut if the datums are identical. */ +/* -------------------------------------------------------------------- */ + if( pj_compare_datums( srcdefn, dstdefn ) ) + return; + + src_a = srcdefn.a_orig; + src_es = srcdefn.es_orig; + + dst_a = dstdefn.a_orig; + dst_es = dstdefn.es_orig; + +/* -------------------------------------------------------------------- */ +/* Create a temporary Z array if one is not provided. */ +/* -------------------------------------------------------------------- */ + + range_wrapper z_range(range); + +/* -------------------------------------------------------------------- */ +/* If this datum requires grid shifts, then apply it to geodetic */ +/* coordinates. */ +/* -------------------------------------------------------------------- */ + /*if( srcdefn.datum_type == PJD_GRIDSHIFT ) + { + try { + pj_apply_gridshift_2( srcdefn, 0, point_count, point_offset, x, y, z ); + } catch (projection_exception const& e) { + if (pj_datum_check_error(e.code())) { + BOOST_RETHROW + } + } + + src_a = SRS_WGS84_SEMIMAJOR; + src_es = SRS_WGS84_ESQUARED; + } + + if( dstdefn.datum_type == PJD_GRIDSHIFT ) + { + dst_a = SRS_WGS84_SEMIMAJOR; + dst_es = SRS_WGS84_ESQUARED; + }*/ + +/* ==================================================================== */ +/* Do we need to go through geocentric coordinates? */ +/* ==================================================================== */ + if( src_es != dst_es || src_a != dst_a + || srcdefn.datum_type == PJD_3PARAM + || srcdefn.datum_type == PJD_7PARAM + || dstdefn.datum_type == PJD_3PARAM + || dstdefn.datum_type == PJD_7PARAM) + { +/* -------------------------------------------------------------------- */ +/* Convert to geocentric coordinates. */ +/* -------------------------------------------------------------------- */ + int err = pj_geodetic_to_geocentric( src_a, src_es, z_range ); + if (pj_datum_check_error(err)) + BOOST_THROW_EXCEPTION( projection_exception(err) ); + +/* -------------------------------------------------------------------- */ +/* Convert between datums. */ +/* -------------------------------------------------------------------- */ + if( srcdefn.datum_type == PJD_3PARAM + || srcdefn.datum_type == PJD_7PARAM ) + { + try { + pj_geocentric_to_wgs84( srcdefn, z_range ); + } catch (projection_exception const& e) { + if (pj_datum_check_error(e.code())) { + BOOST_RETHROW + } + } + } + + if( dstdefn.datum_type == PJD_3PARAM + || dstdefn.datum_type == PJD_7PARAM ) + { + try { + pj_geocentric_from_wgs84( dstdefn, z_range ); + } catch (projection_exception const& e) { + if (pj_datum_check_error(e.code())) { + BOOST_RETHROW + } + } + } + +/* -------------------------------------------------------------------- */ +/* Convert back to geodetic coordinates. */ +/* -------------------------------------------------------------------- */ + err = pj_geocentric_to_geodetic( dst_a, dst_es, z_range ); + if (pj_datum_check_error(err)) + BOOST_THROW_EXCEPTION( projection_exception(err) ); + } + +/* -------------------------------------------------------------------- */ +/* Apply grid shift to destination if required. */ +/* -------------------------------------------------------------------- */ + /*if( dstdefn.datum_type == PJD_GRIDSHIFT ) + { + try { + pj_apply_gridshift_2( dstdefn, 1, point_count, point_offset, x, y, z ); + } catch (projection_exception const& e) { + if (pj_datum_check_error(e.code())) + BOOST_RETHROW + } + }*/ + + return; +} + +///************************************************************************/ +///* 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; +//} + +} // namespace detail + +}}} // namespace boost::geometry::projections + +#endif // BOOST_GEOMETRY_SRS_PROJECTIONS_IMPL_PJ_TRANSFORM_HPP diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_tsfn.hpp b/include/boost/geometry/srs/projections/impl/pj_tsfn.hpp similarity index 86% rename from include/boost/geometry/extensions/gis/projections/impl/pj_tsfn.hpp rename to include/boost/geometry/srs/projections/impl/pj_tsfn.hpp index 2e74e99aa1..d39a0fb2fc 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_tsfn.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_tsfn.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -41,10 +45,11 @@ namespace boost { namespace geometry { namespace projections { namespace detail { /* determine small t */ - inline double pj_tsfn(double phi, double sinphi, double e) + template + inline T pj_tsfn(T const& phi, T sinphi, T const& e) { sinphi *= e; - return (tan (.5 * (geometry::math::half_pi() - phi)) / + return (tan (.5 * (geometry::math::half_pi() - phi)) / pow((1. - sinphi) / (1. + sinphi), .5 * e)); } diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_units.hpp b/include/boost/geometry/srs/projections/impl/pj_units.hpp similarity index 93% rename from include/boost/geometry/extensions/gis/projections/impl/pj_units.hpp rename to include/boost/geometry/srs/projections/impl/pj_units.hpp index 55f0252e74..269b8ff92e 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_units.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_units.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -35,7 +39,7 @@ #ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_UNITS_HPP #define BOOST_GEOMETRY_PROJECTIONS_IMPL_PJ_UNITS_HPP -#include +#include namespace boost { namespace geometry { namespace projections { namespace detail { diff --git a/include/boost/geometry/extensions/gis/projections/impl/pj_zpoly1.hpp b/include/boost/geometry/srs/projections/impl/pj_zpoly1.hpp similarity index 84% rename from include/boost/geometry/extensions/gis/projections/impl/pj_zpoly1.hpp rename to include/boost/geometry/srs/projections/impl/pj_zpoly1.hpp index af5708fd9b..613b6d2b35 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/pj_zpoly1.hpp +++ b/include/boost/geometry/srs/projections/impl/pj_zpoly1.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -36,7 +40,7 @@ #define BOOST_GEOMETRY_PROJECTIONS_ZPOLY1_HPP -#include +#include namespace boost { namespace geometry { namespace projections { namespace detail { @@ -47,11 +51,12 @@ namespace boost { namespace geometry { namespace projections { namespace detail ** i.e. C_0 == (0., 0) ** n should always be >= 1 though no checks are made */ - inline COMPLEX - pj_zpoly1(COMPLEX z, COMPLEX *C, int n) + template + inline COMPLEX + pj_zpoly1(COMPLEX z, const COMPLEX *C, int n) { - COMPLEX a; - double t; + COMPLEX a; + T t; a = *(C += n); while (n-- > 0) @@ -65,14 +70,15 @@ namespace boost { namespace geometry { namespace projections { namespace detail } /* evaluate complex polynomial and derivative */ - inline COMPLEX - pj_zpolyd1(COMPLEX z, COMPLEX *C, int n, COMPLEX *der) + template + inline COMPLEX + pj_zpolyd1(COMPLEX z, const COMPLEX *C, int n, COMPLEX *der) { - double t; + T t; bool first = true; - COMPLEX a = *(C += n); - COMPLEX b = a; + COMPLEX a = *(C += n); + COMPLEX b = a; while (n-- > 0) { if (first) diff --git a/include/boost/geometry/extensions/gis/projections/impl/proj_mdist.hpp b/include/boost/geometry/srs/projections/impl/proj_mdist.hpp similarity index 85% rename from include/boost/geometry/extensions/gis/projections/impl/proj_mdist.hpp rename to include/boost/geometry/srs/projections/impl/proj_mdist.hpp index 9069b47b45..1c325df1c6 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/proj_mdist.hpp +++ b/include/boost/geometry/srs/projections/impl/proj_mdist.hpp @@ -45,19 +45,21 @@ namespace detail { static const int MDIST_MAX_ITER = 20; + template struct MDIST { int nb; - double es; - double E; - double b[MDIST_MAX_ITER]; + T es; + T E; + T b[MDIST_MAX_ITER]; }; - inline bool proj_mdist_ini(double es, MDIST& b) + template + inline bool proj_mdist_ini(CT const& es, MDIST& b) { - double numf, numfi, twon1, denf, denfi, ens, T, twon; - double den, El, Es; - double E[MDIST_MAX_ITER]; + CT numf, numfi, twon1, denf, denfi, ens, T, twon; + CT den, El, Es; + CT E[MDIST_MAX_ITER]; int i, j; /* generate E(e^2) and its terms E[] */ @@ -99,9 +101,11 @@ namespace detail } return true; } - inline double proj_mdist(double phi, double sphi, double cphi, const MDIST& b) + + template + inline T proj_mdist(T const& phi, T const& sphi, T const& cphi, MDIST const& b) { - double sc, sum, sphi2, D; + T sc, sum, sphi2, D; int i; sc = sphi * cphi; @@ -111,10 +115,12 @@ namespace detail while (i) sum = b.b[--i] + sphi2 * sum; return(D + sc * sum); } - inline double proj_inv_mdist(double dist, const MDIST& b) + + template + inline T proj_inv_mdist(T const& dist, MDIST const& b) { - static const double TOL = 1e-14; - double s, t, phi, k; + static const T TOL = 1e-14; + T s, t, phi, k; int i; k = 1./(1.- b.es); @@ -129,7 +135,7 @@ namespace detail return phi; } /* convergence failed */ - throw proj_exception(-17); + BOOST_THROW_EXCEPTION( projection_exception(-17) ); } } // namespace detail diff --git a/include/boost/geometry/srs/projections/impl/projects.hpp b/include/boost/geometry/srs/projections/impl/projects.hpp new file mode 100644 index 0000000000..232ae67ae9 --- /dev/null +++ b/include/boost/geometry/srs/projections/impl/projects.hpp @@ -0,0 +1,272 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) +// This file is manually converted from PROJ4 (projects.h) + +// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This file is converted from PROJ4, http://trac.osgeo.org/proj +// PROJ4 is originally written by Gerald Evenden (then of the USGS) +// PROJ4 is maintained by Frank Warmerdam +// PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) + +// Original copyright notice: + +// 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. + +#ifndef BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP +#define BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP + + +#include +#include +#include + +#include +#include +#include +#include + + +namespace boost { namespace geometry { namespace projections +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +/* some useful constants */ +template +inline T ONEPI() { return boost::math::constants::pi(); } +template +inline T HALFPI() { return boost::math::constants::half_pi(); } +template +inline T FORTPI() { return boost::math::constants::pi() / T(4); } +template +inline T TWOPI() { return boost::math::constants::two_pi(); } +template +inline T TWO_D_PI() { return boost::math::constants::two_div_pi(); } +template +inline T HALFPI_SQR() { return 2.4674011002723396547086227499689; } +template +inline T PI_SQR() { return boost::math::constants::pi_sqr(); } +template +inline T THIRD() { return 0.3333333333333333333333333333333; } +template +inline T TWOTHIRD() { return 0.6666666666666666666666666666666; } +template +inline T PI_HALFPI() { return 4.7123889803846898576939650749193; } +template +inline T TWOPI_HALFPI() { return 7.8539816339744830961566084581988; } +template +inline T PI_DIV_3() { return 1.0471975511965977461542144610932; } + +/* datum_type values */ +static const int PJD_UNKNOWN = 0; +static const int PJD_3PARAM = 1; +static const int PJD_7PARAM = 2; +static const int PJD_GRIDSHIFT = 3; +static const int PJD_WGS84 = 4; /* WGS84 (or anything considered equivelent) */ + +/* library errors */ +static const int PJD_ERR_GEOCENTRIC = -45; +static const int PJD_ERR_AXIS = -47; +static const int PJD_ERR_GRID_AREA = -48; +static const int PJD_ERR_CATALOG = -49; + +template +struct pvalue +{ + std::string param; + int used; + + int i; + T f; + std::string s; +}; + +template +struct pj_const_pod +{ + int over; /* over-range flag */ + int geoc; /* geocentric latitude flag */ + int is_latlong; /* proj=latlong ... not really a projection at all */ + int is_geocent; /* proj=geocent ... not really a projection at all */ + T + a, /* major axis or radius if es==0 */ + a_orig, /* major axis before any +proj related adjustment */ + es, /* e ^ 2 */ + es_orig, /* es before any +proj related adjustment */ + e, /* eccentricity */ + ra, /* 1/A */ + one_es, /* 1 - e^2 */ + rone_es, /* 1/one_es */ + lam0, phi0, /* central longitude, latitude */ + x0, y0, /* easting and northing */ + k0, /* general scaling factor */ + to_meter, fr_meter, /* cartesian scaling */ + vto_meter, vfr_meter; /* Vertical scaling. Internal unit [m] */ + + int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */ + T datum_params[7]; + T from_greenwich; /* prime meridian offset (in radians) */ + T long_wrap_center; /* 0.0 for -180 to 180, actually in radians*/ + bool is_long_wrap_set; + + // Initialize all variables to zero + pj_const_pod() + { + std::memset(this, 0, sizeof(pj_const_pod)); + } +}; + +template +struct pj_const_non_pod +{ + int over; /* over-range flag */ + int geoc; /* geocentric latitude flag */ + int is_latlong; /* proj=latlong ... not really a projection at all */ + int is_geocent; /* proj=geocent ... not really a projection at all */ + T + a, /* major axis or radius if es==0 */ + a_orig, /* major axis before any +proj related adjustment */ + es, /* e ^ 2 */ + es_orig, /* es before any +proj related adjustment */ + e, /* eccentricity */ + ra, /* 1/A */ + one_es, /* 1 - e^2 */ + rone_es, /* 1/one_es */ + lam0, phi0, /* central longitude, latitude */ + x0, y0, /* easting and northing */ + k0, /* general scaling factor */ + to_meter, fr_meter, /* cartesian scaling */ + vto_meter, vfr_meter; /* Vertical scaling. Internal unit [m] */ + + int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */ + T datum_params[7]; + T from_greenwich; /* prime meridian offset (in radians) */ + T long_wrap_center; /* 0.0 for -180 to 180, actually in radians*/ + bool is_long_wrap_set; + + // Initialize all variables to zero + pj_const_non_pod() + : over(0), geoc(0), is_latlong(0), is_geocent(0) + , a(0), a_orig(0), es(0), es_orig(0), e(0), ra(0) + , one_es(0), rone_es(0), lam0(0), phi0(0), x0(0), y0(0), k0(0) + , to_meter(0), fr_meter(0), vto_meter(0), vfr_meter(0) + , datum_type(PJD_UNKNOWN) + , from_greenwich(0), long_wrap_center(0), is_long_wrap_set(false) + { + datum_params[0] = 0; + datum_params[1] = 0; + datum_params[2] = 0; + datum_params[3] = 0; + datum_params[4] = 0; + datum_params[5] = 0; + datum_params[6] = 0; + } +}; + +template +struct pj_const + : boost::mpl::if_c + < + boost::is_pod::value, + pj_const_pod, + pj_const_non_pod + >::type +{}; + +// PROJ4 complex. Might be replaced with std::complex +template +struct COMPLEX { T r, i; }; + +struct PJ_ELLPS +{ + std::string id; /* ellipse keyword name */ + std::string major; /* a= value */ + std::string ell; /* elliptical parameter */ + std::string name; /* comments */ +}; + +struct PJ_DATUMS +{ + std::string id; /* datum keyword */ + std::string defn; /* ie. "to_wgs84=..." */ + std::string ellipse_id; /* ie from ellipse table */ + std::string comments; /* EPSG code, etc */ +}; + +struct PJ_PRIME_MERIDIANS +{ + std::string id; /* prime meridian keyword */ + std::string defn; /* offset from greenwich in DMS format. */ +}; + +struct PJ_UNITS +{ + std::string id; /* units keyword */ + std::string to_meter; /* multiply by value to get meters */ + std::string name; /* comments */ +}; + +template +struct DERIVS +{ + T x_l, x_p; /* derivatives of x for lambda-phi */ + T y_l, y_p; /* derivatives of y for lambda-phi */ +}; + +template +struct FACTORS +{ + DERIVS der; + T h, k; /* meridinal, parallel scales */ + T omega, thetap; /* angular distortion, theta prime */ + T conv; /* convergence */ + T s; /* areal scale factor */ + T a, b; /* max-min scale error */ + int code; /* info as to analytics, see following */ +}; + +} // namespace detail +#endif // DOXYGEN_NO_DETAIL + +/*! + \brief parameters, projection parameters + \details This structure initializes all projections + \ingroup projection +*/ +template +struct parameters : public detail::pj_const +{ + typedef T type; + + std::string name; + std::vector > params; +}; + +}}} // namespace boost::geometry::projections +#endif // BOOST_GEOMETRY_PROJECTIONS_IMPL_PROJECTS_HPP diff --git a/include/boost/geometry/srs/projections/proj/aea.hpp b/include/boost/geometry/srs/projections/proj/aea.hpp new file mode 100644 index 0000000000..aad5ca4b6e --- /dev/null +++ b/include/boost/geometry/srs/projections/proj/aea.hpp @@ -0,0 +1,350 @@ +#ifndef BOOST_GEOMETRY_PROJECTIONS_AEA_HPP +#define BOOST_GEOMETRY_PROJECTIONS_AEA_HPP + +// Boost.Geometry - extensions-gis-projections (based on PROJ4) +// This file is automatically generated. DO NOT EDIT. + +// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This file is converted from PROJ4, http://trac.osgeo.org/proj +// PROJ4 is originally written by Gerald Evenden (then of the USGS) +// PROJ4 is maintained by Frank Warmerdam +// PROJ4 is converted to Boost.Geometry by Barend Gehrels + +// Last updated version of proj: 4.9.1 + +// Original copyright notice: + +// Purpose: Implementation of the aea (Albers Equal Area) projection. +// Author: Gerald Evenden +// Copyright (c) 1995, Gerald 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. + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct aea {}; + struct leac {}; + +}} //namespace srs::proj + +namespace projections +{ + #ifndef DOXYGEN_NO_DETAIL + namespace detail { namespace aea + { + + static const double EPS10 = 1.e-10; + static const double TOL7 = 1.e-7; + static const double EPSILON = 1.0e-7; + static const double TOL = 1.0e-10; + static const int N_ITER = 15; + + template + struct par_aea + { + T ec; + T n; + T c; + T dd; + T n2; + T rho0; + T phi1; + T phi2; + T en[EN_SIZE]; + int ellips; + }; + + /* determine latitude angle phi-1 */ + template + inline T phi1_(T const& qs, T const& Te, T const& Tone_es) + { + int i; + T Phi, sinpi, cospi, con, com, dphi; + + Phi = asin (.5 * qs); + if (Te < EPSILON) + return( Phi ); + i = N_ITER; + do { + sinpi = sin (Phi); + cospi = cos (Phi); + con = Te * sinpi; + com = 1. - con * con; + dphi = .5 * com * com / cospi * (qs / Tone_es - + sinpi / com + .5 / Te * log ((1. - con) / + (1. + con))); + Phi += dphi; + } while (fabs(dphi) > TOL && --i); + return( i ? Phi : HUGE_VAL ); + } + + // template class, using CRTP to implement forward/inverse + template + struct base_aea_ellipsoid : public base_t_fi, + CalculationType, Parameters> + { + + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; + + par_aea m_proj_parm; + + inline base_aea_ellipsoid(const Parameters& par) + : base_t_fi, + CalculationType, Parameters>(*this, par) {} + + // FORWARD(e_forward) ellipsoid & spheroid + // Project coordinates from geographic (lon, lat) to cartesian (x, y) + inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const + { + CalculationType rho = 0.0; + if ((rho = this->m_proj_parm.c - (this->m_proj_parm.ellips ? this->m_proj_parm.n * pj_qsfn(sin(lp_lat), + this->m_par.e, this->m_par.one_es) : this->m_proj_parm.n2 * sin(lp_lat))) < 0.) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + rho = this->m_proj_parm.dd * sqrt(rho); + xy_x = rho * sin( lp_lon *= this->m_proj_parm.n ); + xy_y = this->m_proj_parm.rho0 - rho * cos(lp_lon); + } + + // INVERSE(e_inverse) ellipsoid & spheroid + // Project coordinates from cartesian (x, y) to geographic (lon, lat) + inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const + { + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType rho = 0.0; + if( (rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0 ) { + if (this->m_proj_parm.n < 0.) { + rho = -rho; + xy_x = -xy_x; + xy_y = -xy_y; + } + lp_lat = rho / this->m_proj_parm.dd; + if (this->m_proj_parm.ellips) { + lp_lat = (this->m_proj_parm.c - lp_lat * lp_lat) / this->m_proj_parm.n; + if (fabs(this->m_proj_parm.ec - fabs(lp_lat)) > TOL7) { + if ((lp_lat = phi1_(lp_lat, this->m_par.e, this->m_par.one_es)) == HUGE_VAL) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + } else + lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; + } else if (fabs(lp_lat = (this->m_proj_parm.c - lp_lat * lp_lat) / this->m_proj_parm.n2) <= 1.) + lp_lat = asin(lp_lat); + else + lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; + lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n; + } else { + lp_lon = 0.; + lp_lat = this->m_proj_parm.n > 0. ? HALFPI : - HALFPI; + } + } + + static inline std::string get_name() + { + return "aea_ellipsoid"; + } + + }; + + template + void setup(Parameters& par, par_aea& proj_parm) + { + T cosphi, sinphi; + int secant; + + if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10) + BOOST_THROW_EXCEPTION( projection_exception(-21) ); + proj_parm.n = sinphi = sin(proj_parm.phi1); + cosphi = cos(proj_parm.phi1); + secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10; + if( (proj_parm.ellips = (par.es > 0.))) { + T ml1, m1; + + if (!pj_enfn(par.es, proj_parm.en)) + BOOST_THROW_EXCEPTION( projection_exception(0) ); + m1 = pj_msfn(sinphi, cosphi, par.es); + ml1 = pj_qsfn(sinphi, par.e, par.one_es); + if (secant) { /* secant cone */ + T ml2, m2; + + sinphi = sin(proj_parm.phi2); + cosphi = cos(proj_parm.phi2); + m2 = pj_msfn(sinphi, cosphi, par.es); + ml2 = pj_qsfn(sinphi, par.e, par.one_es); + proj_parm.n = (m1 * m1 - m2 * m2) / (ml2 - ml1); + } + proj_parm.ec = 1. - .5 * par.one_es * log((1. - par.e) / + (1. + par.e)) / par.e; + proj_parm.c = m1 * m1 + proj_parm.n * ml1; + proj_parm.dd = 1. / proj_parm.n; + proj_parm.rho0 = proj_parm.dd * sqrt(proj_parm.c - proj_parm.n * pj_qsfn(sin(par.phi0), + par.e, par.one_es)); + } else { + if (secant) proj_parm.n = .5 * (proj_parm.n + sin(proj_parm.phi2)); + proj_parm.n2 = proj_parm.n + proj_parm.n; + proj_parm.c = cosphi * cosphi + proj_parm.n2 * sinphi; + proj_parm.dd = 1. / proj_parm.n; + proj_parm.rho0 = proj_parm.dd * sqrt(proj_parm.c - proj_parm.n2 * sin(par.phi0)); + } + } + + + // Albers Equal Area + template + void setup_aea(Parameters& par, par_aea& proj_parm) + { + proj_parm.phi1 = pj_param(par.params, "rlat_1").f; + proj_parm.phi2 = pj_param(par.params, "rlat_2").f; + setup(par, proj_parm); + } + + // Lambert Equal Area Conic + template + void setup_leac(Parameters& par, par_aea& proj_parm) + { + static const T HALFPI = detail::HALFPI(); + + proj_parm.phi2 = pj_param(par.params, "rlat_1").f; + proj_parm.phi1 = pj_param(par.params, "bsouth").i ? -HALFPI : HALFPI; + setup(par, proj_parm); + } + + }} // namespace detail::aea + #endif // doxygen + + /*! + \brief Albers Equal Area projection + \ingroup projections + \tparam Geographic latlong point type + \tparam Cartesian xy point type + \tparam Parameters parameter type + \par Projection characteristics + - Conic + - Spheroid + - Ellipsoid + \par Projection parameters + - lat_1: Latitude of first standard parallel (degrees) + - lat_2: Latitude of second standard parallel (degrees) + \par Example + \image html ex_aea.gif + */ + template + struct aea_ellipsoid : public detail::aea::base_aea_ellipsoid + { + inline aea_ellipsoid(const Parameters& par) : detail::aea::base_aea_ellipsoid(par) + { + detail::aea::setup_aea(this->m_par, this->m_proj_parm); + } + }; + + /*! + \brief Lambert Equal Area Conic projection + \ingroup projections + \tparam Geographic latlong point type + \tparam Cartesian xy point type + \tparam Parameters parameter type + \par Projection characteristics + - Conic + - Spheroid + - Ellipsoid + \par Projection parameters + - lat_1: Latitude of first standard parallel (degrees) + - south: Denotes southern hemisphere UTM zone (boolean) + \par Example + \image html ex_leac.gif + */ + template + struct leac_ellipsoid : public detail::aea::base_aea_ellipsoid + { + inline leac_ellipsoid(const Parameters& par) : detail::aea::base_aea_ellipsoid(par) + { + detail::aea::setup_leac(this->m_par, this->m_proj_parm); + } + }; + + #ifndef DOXYGEN_NO_DETAIL + namespace detail + { + + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::aea, aea_ellipsoid, aea_ellipsoid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::leac, leac_ellipsoid, leac_ellipsoid) + + // Factory entry(s) + template + class aea_entry : public detail::factory_entry + { + public : + virtual base_v* create_new(const Parameters& par) const + { + return new base_v_fi, CalculationType, Parameters>(par); + } + }; + + template + class leac_entry : public detail::factory_entry + { + public : + virtual base_v* create_new(const Parameters& par) const + { + return new base_v_fi, CalculationType, Parameters>(par); + } + }; + + template + inline void aea_init(detail::base_factory& factory) + { + factory.add_to_factory("aea", new aea_entry); + factory.add_to_factory("leac", new leac_entry); + } + + } // namespace detail + #endif // doxygen + +} // namespace projections + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_PROJECTIONS_AEA_HPP + diff --git a/include/boost/geometry/extensions/gis/projections/proj/aeqd.hpp b/include/boost/geometry/srs/projections/proj/aeqd.hpp similarity index 73% rename from include/boost/geometry/extensions/gis/projections/proj/aeqd.hpp rename to include/boost/geometry/srs/projections/proj/aeqd.hpp index 55bcae3aa4..6a2e583af5 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/aeqd.hpp +++ b/include/boost/geometry/srs/projections/proj/aeqd.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -44,14 +48,24 @@ #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct aeqd {}; + struct aeqd_guam {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace aeqd @@ -64,39 +78,40 @@ namespace boost { namespace geometry { namespace projections static const int EQUIT = 2; static const int OBLIQ = 3; + template struct par_aeqd { - double sinph0; - double cosph0; - double en[EN_SIZE]; - double M1; - double N1; - double Mp; - double He; - double G; + T sinph0; + T cosph0; + T en[EN_SIZE]; + T M1; + T N1; + T Mp; + T He; + T G; int mode; }; // template class, using CRTP to implement forward/inverse - template - struct base_aeqd_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_aeqd_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_aeqd m_proj_parm; + par_aeqd m_proj_parm; inline base_aeqd_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_forward) elliptical // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double coslam, cosphi, sinphi, rho, s, H, H2, c, Az, t, ct, st, cA, sA; + CalculationType coslam, cosphi, sinphi, rho, s, H, H2, c, Az, t, ct, st, cA, sA; coslam = cos(lp_lon); cosphi = cos(lp_lat); @@ -139,7 +154,9 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double c, Az, cosAz, A, B, D, E, F, psi, t; + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType c, Az, cosAz, A, B, D, E, F, psi, t; if ((c = boost::math::hypot(xy_x, xy_y)) < EPS10) { lp_lat = this->m_par.phi0; @@ -159,8 +176,8 @@ namespace boost { namespace geometry { namespace projections lp_lon = aasin(sin(Az) * sin(E) / cos(psi)); if ((t = fabs(psi)) < EPS10) lp_lat = 0.; - else if (fabs(t - geometry::math::half_pi()) < 0.) - lp_lat = geometry::math::half_pi(); + else if (fabs(t - HALFPI) < 0.) + lp_lat = HALFPI; else lp_lat = atan((1. - this->m_par.es * F * this->m_proj_parm.sinph0 / sin(psi)) * tan(psi) / this->m_par.one_es); @@ -179,25 +196,25 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_aeqd_guam : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_aeqd_guam : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_aeqd m_proj_parm; + par_aeqd m_proj_parm; inline base_aeqd_guam(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_guam_fwd) Guam elliptical // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double cosphi, sinphi, t; + CalculationType cosphi, sinphi, t; cosphi = cos(lp_lat); sinphi = sin(lp_lat); @@ -211,7 +228,7 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double x2, t; + CalculationType x2, t; int i; x2 = 0.5 * xy_x * xy_x; @@ -232,25 +249,27 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_aeqd_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_aeqd_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_aeqd m_proj_parm; + par_aeqd m_proj_parm; inline base_aeqd_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spherical // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double coslam, cosphi, sinphi; + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType coslam, cosphi, sinphi; sinphi = sin(lp_lat); cosphi = cos(lp_lat); @@ -264,7 +283,7 @@ namespace boost { namespace geometry { namespace projections oblcon: if (fabs(fabs(xy_y) - 1.) < TOL) if (xy_y < 0.) - throw proj_exception(); + BOOST_THROW_EXCEPTION( projection_exception(-20) ); else xy_x = xy_y = 0.; else { @@ -279,8 +298,9 @@ namespace boost { namespace geometry { namespace projections lp_lat = -lp_lat; coslam = -coslam; case S_POLE: - if (fabs(lp_lat - geometry::math::half_pi()) < EPS10) throw proj_exception();; - xy_x = (xy_y = (geometry::math::half_pi() + lp_lat)) * sin(lp_lon); + if (fabs(lp_lat - HALFPI) < EPS10) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + xy_x = (xy_y = (HALFPI + lp_lat)) * sin(lp_lon); xy_y *= coslam; break; } @@ -290,11 +310,15 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double cosc, c_rh, sinc; - - if ((c_rh = boost::math::hypot(xy_x, xy_y)) > geometry::math::pi()) { - if (c_rh - EPS10 > geometry::math::pi()) throw proj_exception();; - c_rh = geometry::math::pi(); + static const CalculationType ONEPI = detail::ONEPI(); + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType cosc, c_rh, sinc; + + if ((c_rh = boost::math::hypot(xy_x, xy_y)) > ONEPI) { + if (c_rh - EPS10 > ONEPI) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + c_rh = ONEPI; } else if (c_rh < EPS10) { lp_lat = this->m_par.phi0; lp_lon = 0.; @@ -315,10 +339,10 @@ namespace boost { namespace geometry { namespace projections } lp_lon = atan2(xy_x, xy_y); } else if (this->m_proj_parm.mode == N_POLE) { - lp_lat = geometry::math::half_pi() - c_rh; + lp_lat = HALFPI - c_rh; lp_lon = atan2(xy_x, -xy_y); } else { - lp_lat = c_rh - geometry::math::half_pi(); + lp_lat = c_rh - HALFPI; lp_lon = atan2(xy_x, xy_y); } } @@ -331,11 +355,13 @@ namespace boost { namespace geometry { namespace projections }; // Azimuthal Equidistant - template - void setup_aeqd(Parameters& par, par_aeqd& proj_parm) + template + void setup_aeqd(Parameters& par, par_aeqd& proj_parm) { + static const T HALFPI = detail::HALFPI(); + par.phi0 = pj_param(par.params, "rlat_0").f; - if (fabs(fabs(par.phi0) - geometry::math::half_pi()) < EPS10) { + if (fabs(fabs(par.phi0) - HALFPI) < EPS10) { proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE; proj_parm.sinph0 = par.phi0 < 0. ? -1. : 1.; proj_parm.cosph0 = 0.; @@ -350,16 +376,17 @@ namespace boost { namespace geometry { namespace projections } if (! par.es) { } else { - if (!pj_enfn(par.es, proj_parm.en)) throw proj_exception(0); + if (!pj_enfn(par.es, proj_parm.en)) + BOOST_THROW_EXCEPTION( projection_exception(0) ); if (pj_param(par.params, "bguam").i) { proj_parm.M1 = pj_mlfn(par.phi0, proj_parm.sinph0, proj_parm.cosph0, proj_parm.en); } else { switch (proj_parm.mode) { case N_POLE: - proj_parm.Mp = pj_mlfn(geometry::math::half_pi(), 1., 0., proj_parm.en); + proj_parm.Mp = pj_mlfn(HALFPI, 1., 0., proj_parm.en); break; case S_POLE: - proj_parm.Mp = pj_mlfn(-geometry::math::half_pi(), -1., 0., proj_parm.en); + proj_parm.Mp = pj_mlfn(-HALFPI, -1., 0., proj_parm.en); break; case EQUIT: case OBLIQ: @@ -372,7 +399,7 @@ namespace boost { namespace geometry { namespace projections } } - }} // namespace detail::aeqd + }} // namespace detail::aeqd #endif // doxygen /*! @@ -391,10 +418,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_aeqd.gif */ - template - struct aeqd_ellipsoid : public detail::aeqd::base_aeqd_ellipsoid + template + struct aeqd_ellipsoid : public detail::aeqd::base_aeqd_ellipsoid { - inline aeqd_ellipsoid(const Parameters& par) : detail::aeqd::base_aeqd_ellipsoid(par) + inline aeqd_ellipsoid(const Parameters& par) : detail::aeqd::base_aeqd_ellipsoid(par) { detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm); } @@ -416,10 +443,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_aeqd.gif */ - template - struct aeqd_guam : public detail::aeqd::base_aeqd_guam + template + struct aeqd_guam : public detail::aeqd::base_aeqd_guam { - inline aeqd_guam(const Parameters& par) : detail::aeqd::base_aeqd_guam(par) + inline aeqd_guam(const Parameters& par) : detail::aeqd::base_aeqd_guam(par) { detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm); } @@ -441,10 +468,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_aeqd.gif */ - template - struct aeqd_spheroid : public detail::aeqd::base_aeqd_spheroid + template + struct aeqd_spheroid : public detail::aeqd::base_aeqd_spheroid { - inline aeqd_spheroid(const Parameters& par) : detail::aeqd::base_aeqd_spheroid(par) + inline aeqd_spheroid(const Parameters& par) : detail::aeqd::base_aeqd_spheroid(par) { detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm); } @@ -454,34 +481,40 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::aeqd, aeqd_spheroid, aeqd_ellipsoid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::aeqd_guam, aeqd_guam, aeqd_guam) + // Factory entry(s) - template - class aeqd_entry : public detail::factory_entry + template + class aeqd_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - bool const guam = pj_param(par.params, "bguam").i; + bool const guam = pj_param(par.params, "bguam").i != 0; if (par.es && ! guam) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); else if (par.es && guam) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); else - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void aeqd_init(detail::base_factory& factory) + template + inline void aeqd_init(detail::base_factory& factory) { - factory.add_to_factory("aeqd", new aeqd_entry); + factory.add_to_factory("aeqd", new aeqd_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_AEQD_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/airy.hpp b/include/boost/geometry/srs/projections/proj/airy.hpp similarity index 69% rename from include/boost/geometry/extensions/gis/projections/proj/airy.hpp rename to include/boost/geometry/srs/projections/proj/airy.hpp index d7396cab4e..5310ba6ab9 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/airy.hpp +++ b/include/boost/geometry/srs/projections/proj/airy.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -43,12 +47,21 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct airy {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace airy @@ -60,36 +73,39 @@ namespace boost { namespace geometry { namespace projections static const int EQUIT = 2; static const int OBLIQ = 3; + template struct par_airy { - double p_halfpi; - double sinph0; - double cosph0; - double Cb; - int mode; - int no_cut; /* do not cut at hemisphere limit */ + T p_halfpi; + T sinph0; + T cosph0; + T Cb; + int mode; + int no_cut; /* do not cut at hemisphere limit */ }; // template class, using CRTP to implement forward/inverse - template - struct base_airy_spheroid : public base_t_f, - Geographic, Cartesian, Parameters> + template + struct base_airy_spheroid : public base_t_f, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_airy m_proj_parm; + par_airy m_proj_parm; inline base_airy_spheroid(const Parameters& par) - : base_t_f, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_f, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double sinlam, coslam, cosphi, sinphi, t, s, Krho, cosz; + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType sinlam, coslam, cosphi, sinphi, t, s, Krho, cosz; sinlam = sin(lp_lon); coslam = cos(lp_lon); @@ -102,7 +118,7 @@ namespace boost { namespace geometry { namespace projections if (this->m_proj_parm.mode == OBLIQ) cosz = this->m_proj_parm.sinph0 * sinphi + this->m_proj_parm.cosph0 * cosz; if (!this->m_proj_parm.no_cut && cosz < -EPS) - throw proj_exception();; + BOOST_THROW_EXCEPTION( projection_exception(-20) ); if (fabs(s = 1. - cosz) > EPS) { t = 0.5 * (1. + cosz); Krho = -log(t)/s - this->m_proj_parm.Cb / t; @@ -118,8 +134,8 @@ namespace boost { namespace geometry { namespace projections case S_POLE: case N_POLE: lp_lat = fabs(this->m_proj_parm.p_halfpi - lp_lat); - if (!this->m_proj_parm.no_cut && (lp_lat - EPS) > geometry::math::half_pi()) - throw proj_exception();; + if (!this->m_proj_parm.no_cut && (lp_lat - EPS) > HALFPI) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); if ((lp_lat *= 0.5) > EPS) { t = tan(lp_lat); Krho = -2.*(log(cos(lp_lat)) / t + t * this->m_proj_parm.Cb); @@ -140,25 +156,27 @@ namespace boost { namespace geometry { namespace projections }; // Airy - template - void setup_airy(Parameters& par, par_airy& proj_parm) + template + void setup_airy(Parameters& par, par_airy& proj_parm) { - double beta; + static const T HALFPI = detail::HALFPI(); + + T beta; proj_parm.no_cut = pj_param(par.params, "bno_cut").i; - beta = 0.5 * (geometry::math::half_pi() - pj_param(par.params, "rlat_b").f); + beta = 0.5 * (HALFPI - pj_param(par.params, "rlat_b").f); if (fabs(beta) < EPS) proj_parm.Cb = -0.5; else { proj_parm.Cb = 1./tan(beta); proj_parm.Cb *= proj_parm.Cb * log(cos(beta)); } - if (fabs(fabs(par.phi0) - geometry::math::half_pi()) < EPS) + if (fabs(fabs(par.phi0) - HALFPI) < EPS) if (par.phi0 < 0.) { - proj_parm.p_halfpi = -geometry::math::half_pi(); + proj_parm.p_halfpi = -HALFPI; proj_parm.mode = S_POLE; } else { - proj_parm.p_halfpi = geometry::math::half_pi(); + proj_parm.p_halfpi = HALFPI; proj_parm.mode = N_POLE; } else { @@ -173,7 +191,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::airy + }} // namespace detail::airy #endif // doxygen /*! @@ -192,10 +210,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_airy.gif */ - template - struct airy_spheroid : public detail::airy::base_airy_spheroid + template + struct airy_spheroid : public detail::airy::base_airy_spheroid { - inline airy_spheroid(const Parameters& par) : detail::airy::base_airy_spheroid(par) + inline airy_spheroid(const Parameters& par) : detail::airy::base_airy_spheroid(par) { detail::airy::setup_airy(this->m_par, this->m_proj_parm); } @@ -205,27 +223,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::airy, airy_spheroid, airy_spheroid) + // Factory entry(s) - template - class airy_entry : public detail::factory_entry + template + class airy_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - inline void airy_init(detail::base_factory& factory) + template + inline void airy_init(detail::base_factory& factory) { - factory.add_to_factory("airy", new airy_entry); + factory.add_to_factory("airy", new airy_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_AIRY_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/aitoff.hpp b/include/boost/geometry/srs/projections/proj/aitoff.hpp similarity index 67% rename from include/boost/geometry/extensions/gis/projections/proj/aitoff.hpp rename to include/boost/geometry/srs/projections/proj/aitoff.hpp index f784f49db7..163886073f 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/aitoff.hpp +++ b/include/boost/geometry/srs/projections/proj/aitoff.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -45,43 +49,53 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct aitoff {}; + struct wintri {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace aitoff { - + template struct par_aitoff { - double cosphi1; - int mode; + T cosphi1; + int mode; }; // template class, using CRTP to implement forward/inverse - template - struct base_aitoff_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_aitoff_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_aitoff m_proj_parm; + par_aitoff m_proj_parm; inline base_aitoff_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double c, d; + CalculationType c, d; if((d = acos(cos(lp_lat) * cos(c = 0.5 * lp_lon)))) {/* basic Aitoff */ xy_x = 2. * d * cos(lp_lat) * sin(c) * (xy_y = 1. / sin(d)); @@ -118,8 +132,12 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - int iter, MAXITER = 10, round = 0, MAXROUND = 20; - double EPSILON = 1e-12, D, C, f1, f2, f1p, f1l, f2p, f2l, dp, dl, sl, sp, cp, cl, x, y; + static const CalculationType ONEPI = detail::ONEPI(); + static const CalculationType TWOPI = detail::TWOPI(); + static const CalculationType EPSILON = 1e-12; + + int iter, MAXITER = 10, round = 0, MAXROUND = 20; + CalculationType D, C, f1, f2, f1p, f1l, f2p, f2l, dp, dl, sl, sp, cp, cl, x, y; if ((fabs(xy_x) < EPSILON) && (fabs(xy_y) < EPSILON )) { lp_lat = 0.; lp_lon = 0.; return; } @@ -150,13 +168,13 @@ namespace boost { namespace geometry { namespace projections f1 -= xy_x; f2 -= xy_y; dl = (f2 * f1p - f1 * f2p) / (dp = f1p * f2l - f2p * f1l); dp = (f1 * f2l - f2 * f1l) / dp; - while (dl > geometry::math::pi()) dl -= geometry::math::pi(); /* set to interval [-geometry::math::pi(), geometry::math::pi()] */ - while (dl < -geometry::math::pi()) dl += geometry::math::pi(); /* set to interval [-geometry::math::pi(), geometry::math::pi()] */ + while (dl > ONEPI) dl -= ONEPI; /* set to interval [-ONEPI, ONEPI] */ + while (dl < -ONEPI) dl += ONEPI; /* set to interval [-ONEPI, ONEPI] */ lp_lat -= dp; lp_lon -= dl; } while ((fabs(dp) > EPSILON || fabs(dl) > EPSILON) && (iter++ < MAXITER)); - if (lp_lat > geometry::math::two_pi()) lp_lat -= 2.*(lp_lat-geometry::math::two_pi()); /* correct if symmetrical solution for Aitoff */ - if (lp_lat < -geometry::math::two_pi()) lp_lat -= 2.*(lp_lat+geometry::math::two_pi()); /* correct if symmetrical solution for Aitoff */ - if ((fabs(fabs(lp_lat) - geometry::math::two_pi()) < EPSILON) && (!this->m_proj_parm.mode)) lp_lon = 0.; /* if pole in Aitoff, return longitude of 0 */ + if (lp_lat > TWOPI) lp_lat -= 2.*(lp_lat-TWOPI); /* correct if symmetrical solution for Aitoff */ + if (lp_lat < -TWOPI) lp_lat -= 2.*(lp_lat+TWOPI); /* correct if symmetrical solution for Aitoff */ + if ((fabs(fabs(lp_lat) - TWOPI) < EPSILON) && (!this->m_proj_parm.mode)) lp_lon = 0.; /* if pole in Aitoff, return longitude of 0 */ /* calculate x,y coordinates with solution obtained */ if((D = acos(cos(lp_lat) * cos(C = 0.5 * lp_lon)))) {/* Aitoff */ @@ -181,8 +199,8 @@ namespace boost { namespace geometry { namespace projections }; - template - void setup(Parameters& par, par_aitoff& proj_parm) + template + void setup(Parameters& par, par_aitoff& proj_parm) { boost::ignore_unused(proj_parm); par.es = 0.; @@ -190,29 +208,29 @@ namespace boost { namespace geometry { namespace projections // Aitoff - template - void setup_aitoff(Parameters& par, par_aitoff& proj_parm) + template + void setup_aitoff(Parameters& par, par_aitoff& proj_parm) { proj_parm.mode = 0; setup(par, proj_parm); } // Winkel Tripel - template - void setup_wintri(Parameters& par, par_aitoff& proj_parm) + template + void setup_wintri(Parameters& par, par_aitoff& proj_parm) { + static const T TWO_D_PI = detail::TWO_D_PI(); + proj_parm.mode = 1; - if (pj_param(par.params, "tlat_1").i) - { + if (pj_param(par.params, "tlat_1").i) { if ((proj_parm.cosphi1 = cos(pj_param(par.params, "rlat_1").f)) == 0.) - throw proj_exception(-22); - } - else /* 50d28' or acos(2/pi) */ - proj_parm.cosphi1 = 0.636619772367581343; + BOOST_THROW_EXCEPTION( projection_exception(-22) ); + } else /* 50d28' or phi1=acos(2/pi) */ + proj_parm.cosphi1 = TWO_D_PI; setup(par, proj_parm); } - }} // namespace detail::aitoff + }} // namespace detail::aitoff #endif // doxygen /*! @@ -227,10 +245,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_aitoff.gif */ - template - struct aitoff_spheroid : public detail::aitoff::base_aitoff_spheroid + template + struct aitoff_spheroid : public detail::aitoff::base_aitoff_spheroid { - inline aitoff_spheroid(const Parameters& par) : detail::aitoff::base_aitoff_spheroid(par) + inline aitoff_spheroid(const Parameters& par) : detail::aitoff::base_aitoff_spheroid(par) { detail::aitoff::setup_aitoff(this->m_par, this->m_proj_parm); } @@ -250,10 +268,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_wintri.gif */ - template - struct wintri_spheroid : public detail::aitoff::base_aitoff_spheroid + template + struct wintri_spheroid : public detail::aitoff::base_aitoff_spheroid { - inline wintri_spheroid(const Parameters& par) : detail::aitoff::base_aitoff_spheroid(par) + inline wintri_spheroid(const Parameters& par) : detail::aitoff::base_aitoff_spheroid(par) { detail::aitoff::setup_wintri(this->m_par, this->m_proj_parm); } @@ -263,38 +281,44 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::aitoff, aitoff_spheroid, aitoff_spheroid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::wintri, wintri_spheroid, wintri_spheroid) + // Factory entry(s) - template - class aitoff_entry : public detail::factory_entry + template + class aitoff_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - class wintri_entry : public detail::factory_entry + template + class wintri_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void aitoff_init(detail::base_factory& factory) + template + inline void aitoff_init(detail::base_factory& factory) { - factory.add_to_factory("aitoff", new aitoff_entry); - factory.add_to_factory("wintri", new wintri_entry); + factory.add_to_factory("aitoff", new aitoff_entry); + factory.add_to_factory("wintri", new wintri_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_AITOFF_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/august.hpp b/include/boost/geometry/srs/projections/proj/august.hpp similarity index 64% rename from include/boost/geometry/extensions/gis/projections/proj/august.hpp rename to include/boost/geometry/srs/projections/proj/august.hpp index 081729675d..bcc7497f11 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/august.hpp +++ b/include/boost/geometry/srs/projections/proj/august.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,38 +41,49 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct august {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace august { - static const double M = 1.333333333333333; + //static const double M = 1.333333333333333; // template class, using CRTP to implement forward/inverse - template - struct base_august_spheroid : public base_t_f, - Geographic, Cartesian, Parameters> + template + struct base_august_spheroid : public base_t_f, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_august_spheroid(const Parameters& par) - : base_t_f, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_f, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double t, c1, c, x1, x12, y1, y12; + static const CalculationType M = 1.333333333333333333333333333333333333; + + CalculationType t, c1, c, x1, x12, y1, y12; t = tan(.5 * lp_lat); c1 = sqrt(1. - t * t); @@ -93,7 +108,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::august + }} // namespace detail::august #endif // doxygen /*! @@ -109,10 +124,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_august.gif */ - template - struct august_spheroid : public detail::august::base_august_spheroid + template + struct august_spheroid : public detail::august::base_august_spheroid { - inline august_spheroid(const Parameters& par) : detail::august::base_august_spheroid(par) + inline august_spheroid(const Parameters& par) : detail::august::base_august_spheroid(par) { detail::august::setup_august(this->m_par); } @@ -122,27 +137,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::august, august_spheroid, august_spheroid) + // Factory entry(s) - template - class august_entry : public detail::factory_entry + template + class august_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - inline void august_init(detail::base_factory& factory) + template + inline void august_init(detail::base_factory& factory) { - factory.add_to_factory("august", new august_entry); + factory.add_to_factory("august", new august_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_AUGUST_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/bacon.hpp b/include/boost/geometry/srs/projections/proj/bacon.hpp similarity index 61% rename from include/boost/geometry/extensions/gis/projections/proj/bacon.hpp rename to include/boost/geometry/srs/projections/proj/bacon.hpp index b0d75dcab7..9b1f53c5cc 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/bacon.hpp +++ b/include/boost/geometry/srs/projections/proj/bacon.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,18 +43,29 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct apian {}; + struct ortel {}; + struct bacon {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace bacon { - static const double HLFPI2 = 2.46740110027233965467; + //static const double HLFPI2 = 2.46740110027233965467; static const double EPS = 1e-10; struct par_bacon @@ -60,30 +75,33 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_bacon_spheroid : public base_t_f, - Geographic, Cartesian, Parameters> + template + struct base_bacon_spheroid : public base_t_f, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; par_bacon m_proj_parm; inline base_bacon_spheroid(const Parameters& par) - : base_t_f, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_f, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double ax, f; + static const CalculationType HALFPI = detail::HALFPI(); + static const CalculationType HLFPI2 = detail::HALFPI_SQR(); + + CalculationType ax, f; - xy_y = this->m_proj_parm.bacn ? geometry::math::half_pi() * sin(lp_lat) : lp_lat; + xy_y = this->m_proj_parm.bacn ? HALFPI * sin(lp_lat) : lp_lat; if ((ax = fabs(lp_lon)) >= EPS) { - if (this->m_proj_parm.ortl && ax >= geometry::math::half_pi()) - xy_x = sqrt(HLFPI2 - lp_lat * lp_lat + EPS) + ax - geometry::math::half_pi(); + if (this->m_proj_parm.ortl && ax >= HALFPI) + xy_x = sqrt(HLFPI2 - lp_lat * lp_lat + EPS) + ax - HALFPI; else { f = 0.5 * (HLFPI2 / ax + ax); xy_x = ax - f + sqrt(f * f - xy_y * xy_y); @@ -126,7 +144,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::bacon + }} // namespace detail::bacon #endif // doxygen /*! @@ -142,10 +160,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_apian.gif */ - template - struct apian_spheroid : public detail::bacon::base_bacon_spheroid + template + struct apian_spheroid : public detail::bacon::base_bacon_spheroid { - inline apian_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) + inline apian_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) { detail::bacon::setup_apian(this->m_par, this->m_proj_parm); } @@ -164,10 +182,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_ortel.gif */ - template - struct ortel_spheroid : public detail::bacon::base_bacon_spheroid + template + struct ortel_spheroid : public detail::bacon::base_bacon_spheroid { - inline ortel_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) + inline ortel_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) { detail::bacon::setup_ortel(this->m_par, this->m_proj_parm); } @@ -186,10 +204,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_bacon.gif */ - template - struct bacon_spheroid : public detail::bacon::base_bacon_spheroid + template + struct bacon_spheroid : public detail::bacon::base_bacon_spheroid { - inline bacon_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) + inline bacon_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) { detail::bacon::setup_bacon(this->m_par, this->m_proj_parm); } @@ -199,49 +217,56 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::apian, apian_spheroid, apian_spheroid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::bacon, bacon_spheroid, bacon_spheroid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::ortel, ortel_spheroid, ortel_spheroid) + // Factory entry(s) - template - class apian_entry : public detail::factory_entry + template + class apian_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - class ortel_entry : public detail::factory_entry + template + class ortel_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - class bacon_entry : public detail::factory_entry + template + class bacon_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - inline void bacon_init(detail::base_factory& factory) + template + inline void bacon_init(detail::base_factory& factory) { - factory.add_to_factory("apian", new apian_entry); - factory.add_to_factory("ortel", new ortel_entry); - factory.add_to_factory("bacon", new bacon_entry); + factory.add_to_factory("apian", new apian_entry); + factory.add_to_factory("ortel", new ortel_entry); + factory.add_to_factory("bacon", new bacon_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_BACON_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/bipc.hpp b/include/boost/geometry/srs/projections/proj/bipc.hpp similarity index 72% rename from include/boost/geometry/extensions/gis/projections/proj/bipc.hpp rename to include/boost/geometry/srs/projections/proj/bipc.hpp index 97920f1a86..014585ef9b 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/bipc.hpp +++ b/include/boost/geometry/srs/projections/proj/bipc.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -40,12 +44,21 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct bipc {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace bipc @@ -77,33 +90,36 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_bipc_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_bipc_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; par_bipc m_proj_parm; inline base_bipc_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double cphi, sphi, tphi, t, al, Az, z, Av, cdlam, sdlam, r; + static const CalculationType HALFPI = detail::HALFPI(); + static const CalculationType ONEPI = detail::ONEPI(); + + CalculationType cphi, sphi, tphi, t, al, Az, z, Av, cdlam, sdlam, r; int tag; cphi = cos(lp_lat); sphi = sin(lp_lat); cdlam = cos(sdlam = lamB - lp_lon); sdlam = sin(sdlam); - if (fabs(fabs(lp_lat) - geometry::math::half_pi()) < EPS10) { - Az = lp_lat < 0. ? geometry::math::pi() : 0.; + if (fabs(fabs(lp_lat) - HALFPI) < EPS10) { + Az = lp_lat < 0. ? ONEPI : 0.; tphi = HUGE_VAL; } else { tphi = sphi / cphi; @@ -114,8 +130,10 @@ namespace boost { namespace geometry { namespace projections sdlam = sin(sdlam); z = S20 * sphi + C20 * cphi * cdlam; if (fabs(z) > 1.) { - if (fabs(z) > ONEEPS) throw proj_exception(); - else z = z < 0. ? -1. : 1.; + if (fabs(z) > ONEEPS) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + else + z = z < 0. ? -1. : 1.; } else z = acos(z); if (tphi != HUGE_VAL) @@ -125,20 +143,25 @@ namespace boost { namespace geometry { namespace projections } else { z = S45 * (sphi + cphi * cdlam); if (fabs(z) > 1.) { - if (fabs(z) > ONEEPS) throw proj_exception(); - else z = z < 0. ? -1. : 1.; + if (fabs(z) > ONEEPS) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + else + z = z < 0. ? -1. : 1.; } else z = acos(z); Av = Azba; xy_y = -rhoc; } - if (z < 0.) throw proj_exception();; + if (z < 0.) BOOST_THROW_EXCEPTION( projection_exception(-20) ); r = F * (t = pow(tan(.5 * z), n)); - if ((al = .5 * (R104 - z)) < 0.) throw proj_exception();; + if ((al = .5 * (R104 - z)) < 0.) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); al = (t + pow(al, n)) / T; if (fabs(al) > 1.) { - if (fabs(al) > ONEEPS) throw proj_exception(); - else al = al < 0. ? -1. : 1.; + if (fabs(al) > ONEEPS) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + else + al = al < 0. ? -1. : 1.; } else al = acos(al); if (fabs(t = n * (Av - Az)) < al) @@ -156,7 +179,7 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double t, r, rp, rl, al, z, fAz, Az, s, c, Av; + CalculationType t, r, rp, rl, al, z, fAz, Az, s, c, Av; int neg, i; if (this->m_proj_parm.noskew) { @@ -187,7 +210,8 @@ namespace boost { namespace geometry { namespace projections break; rl = r; } - if (! i) throw proj_exception();; + if (! i) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); Az = Av - Az / n; lp_lat = asin(s * cos(z) + c * sin(z) * cos(Az)); lp_lon = atan2(sin(Az), c / tan(z) - s * cos(Az)); @@ -212,7 +236,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::bipc + }} // namespace detail::bipc #endif // doxygen /*! @@ -229,10 +253,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_bipc.gif */ - template - struct bipc_spheroid : public detail::bipc::base_bipc_spheroid + template + struct bipc_spheroid : public detail::bipc::base_bipc_spheroid { - inline bipc_spheroid(const Parameters& par) : detail::bipc::base_bipc_spheroid(par) + inline bipc_spheroid(const Parameters& par) : detail::bipc::base_bipc_spheroid(par) { detail::bipc::setup_bipc(this->m_par, this->m_proj_parm); } @@ -242,27 +266,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::bipc, bipc_spheroid, bipc_spheroid) + // Factory entry(s) - template - class bipc_entry : public detail::factory_entry + template + class bipc_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void bipc_init(detail::base_factory& factory) + template + inline void bipc_init(detail::base_factory& factory) { - factory.add_to_factory("bipc", new bipc_entry); + factory.add_to_factory("bipc", new bipc_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_BIPC_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/boggs.hpp b/include/boost/geometry/srs/projections/proj/boggs.hpp similarity index 66% rename from include/boost/geometry/extensions/gis/projections/proj/boggs.hpp rename to include/boost/geometry/srs/projections/proj/boggs.hpp index 2c0593afca..c02396a533 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/boggs.hpp +++ b/include/boost/geometry/srs/projections/proj/boggs.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,12 +43,21 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct boggs {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace boggs @@ -59,31 +72,34 @@ namespace boost { namespace geometry { namespace projections static const double FYC2 = 1.41421356237309504880; // template class, using CRTP to implement forward/inverse - template - struct base_boggs_spheroid : public base_t_f, - Geographic, Cartesian, Parameters> + template + struct base_boggs_spheroid : public base_t_f, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_boggs_spheroid(const Parameters& par) - : base_t_f, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_f, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double theta, th1, c; + static const CalculationType HALFPI = detail::HALFPI(); + static const CalculationType ONEPI = detail::ONEPI(); + + CalculationType theta, th1, c; int i; theta = lp_lat; - if (fabs(fabs(lp_lat) - geometry::math::half_pi()) < EPS) + if (fabs(fabs(lp_lat) - HALFPI) < EPS) xy_x = 0.; else { - c = sin(theta) * geometry::math::pi(); + c = sin(theta) * ONEPI; for (i = NITER; i; --i) { theta -= th1 = (theta + sin(theta) - c) / (1. + cos(theta)); @@ -109,7 +125,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::boggs + }} // namespace detail::boggs #endif // doxygen /*! @@ -125,10 +141,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_boggs.gif */ - template - struct boggs_spheroid : public detail::boggs::base_boggs_spheroid + template + struct boggs_spheroid : public detail::boggs::base_boggs_spheroid { - inline boggs_spheroid(const Parameters& par) : detail::boggs::base_boggs_spheroid(par) + inline boggs_spheroid(const Parameters& par) : detail::boggs::base_boggs_spheroid(par) { detail::boggs::setup_boggs(this->m_par); } @@ -138,27 +154,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::boggs, boggs_spheroid, boggs_spheroid) + // Factory entry(s) - template - class boggs_entry : public detail::factory_entry + template + class boggs_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - inline void boggs_init(detail::base_factory& factory) + template + inline void boggs_init(detail::base_factory& factory) { - factory.add_to_factory("boggs", new boggs_entry); + factory.add_to_factory("boggs", new boggs_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_BOGGS_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/bonne.hpp b/include/boost/geometry/srs/projections/proj/bonne.hpp similarity index 65% rename from include/boost/geometry/extensions/gis/projections/proj/bonne.hpp rename to include/boost/geometry/srs/projections/proj/bonne.hpp index 387ee73f9c..018de670e5 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/bonne.hpp +++ b/include/boost/geometry/srs/projections/proj/bonne.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -40,13 +44,22 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct bonne {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace bonne @@ -54,35 +67,36 @@ namespace boost { namespace geometry { namespace projections static const double EPS10 = 1e-10; + template struct par_bonne { - double phi1; - double cphi1; - double am1; - double m1; - double en[EN_SIZE]; + T phi1; + T cphi1; + T am1; + T m1; + T en[EN_SIZE]; }; // template class, using CRTP to implement forward/inverse - template - struct base_bonne_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_bonne_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_bonne m_proj_parm; + par_bonne m_proj_parm; inline base_bonne_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_forward) ellipsoid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double rh, E, c; + CalculationType rh, E, c; rh = this->m_proj_parm.am1 + this->m_proj_parm.m1 - pj_mlfn(lp_lat, E = sin(lp_lat), c = cos(lp_lat), this->m_proj_parm.en); E = c * lp_lon / (rh * sqrt(1. - this->m_par.es * E * E)); @@ -94,17 +108,20 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double s, rh; + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType s, rh; rh = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.am1 - xy_y); lp_lat = pj_inv_mlfn(this->m_proj_parm.am1 + this->m_proj_parm.m1 - rh, this->m_par.es, this->m_proj_parm.en); - if ((s = fabs(lp_lat)) < geometry::math::half_pi()) { + if ((s = fabs(lp_lat)) < HALFPI) { s = sin(lp_lat); lp_lon = rh * atan2(xy_x, xy_y) * sqrt(1. - this->m_par.es * s * s) / cos(lp_lat); - } else if (fabs(s - geometry::math::half_pi()) <= EPS10) + } else if (fabs(s - HALFPI) <= EPS10) lp_lon = 0.; - else throw proj_exception();; + else + BOOST_THROW_EXCEPTION( projection_exception(-20) ); } static inline std::string get_name() @@ -115,25 +132,25 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_bonne_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_bonne_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_bonne m_proj_parm; + par_bonne m_proj_parm; inline base_bonne_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double E, rh; + CalculationType E, rh; rh = this->m_proj_parm.cphi1 + this->m_proj_parm.phi1 - lp_lat; if (fabs(rh) > EPS10) { @@ -147,12 +164,15 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double rh; + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType rh; rh = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.cphi1 - xy_y); lp_lat = this->m_proj_parm.cphi1 + this->m_proj_parm.phi1 - rh; - if (fabs(lp_lat) > geometry::math::half_pi()) throw proj_exception();; - if (fabs(fabs(lp_lat) - geometry::math::half_pi()) <= EPS10) + if (fabs(lp_lat) > HALFPI) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + if (fabs(fabs(lp_lat) - HALFPI) <= EPS10) lp_lon = 0.; else lp_lon = rh * atan2(xy_x, xy_y) / cos(lp_lat); @@ -166,27 +186,30 @@ namespace boost { namespace geometry { namespace projections }; // Bonne (Werner lat_1=90) - template - void setup_bonne(Parameters& par, par_bonne& proj_parm) + template + void setup_bonne(Parameters& par, par_bonne& proj_parm) { - double c; + static const T HALFPI = detail::HALFPI(); + + T c; proj_parm.phi1 = pj_param(par.params, "rlat_1").f; - if (fabs(proj_parm.phi1) < EPS10) throw proj_exception(-23); + if (fabs(proj_parm.phi1) < EPS10) + BOOST_THROW_EXCEPTION( projection_exception(-23) ); if (par.es) { pj_enfn(par.es, proj_parm.en); proj_parm.m1 = pj_mlfn(proj_parm.phi1, proj_parm.am1 = sin(proj_parm.phi1), c = cos(proj_parm.phi1), proj_parm.en); proj_parm.am1 = c / (sqrt(1. - par.es * proj_parm.am1 * proj_parm.am1) * proj_parm.am1); } else { - if (fabs(proj_parm.phi1) + EPS10 >= geometry::math::half_pi()) + if (fabs(proj_parm.phi1) + EPS10 >= HALFPI) proj_parm.cphi1 = 0.; else proj_parm.cphi1 = 1. / tan(proj_parm.phi1); } } - }} // namespace detail::bonne + }} // namespace detail::bonne #endif // doxygen /*! @@ -204,10 +227,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_bonne.gif */ - template - struct bonne_ellipsoid : public detail::bonne::base_bonne_ellipsoid + template + struct bonne_ellipsoid : public detail::bonne::base_bonne_ellipsoid { - inline bonne_ellipsoid(const Parameters& par) : detail::bonne::base_bonne_ellipsoid(par) + inline bonne_ellipsoid(const Parameters& par) : detail::bonne::base_bonne_ellipsoid(par) { detail::bonne::setup_bonne(this->m_par, this->m_proj_parm); } @@ -228,10 +251,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_bonne.gif */ - template - struct bonne_spheroid : public detail::bonne::base_bonne_spheroid + template + struct bonne_spheroid : public detail::bonne::base_bonne_spheroid { - inline bonne_spheroid(const Parameters& par) : detail::bonne::base_bonne_spheroid(par) + inline bonne_spheroid(const Parameters& par) : detail::bonne::base_bonne_spheroid(par) { detail::bonne::setup_bonne(this->m_par, this->m_proj_parm); } @@ -241,30 +264,35 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::bonne, bonne_spheroid, bonne_ellipsoid) + // Factory entry(s) - template - class bonne_entry : public detail::factory_entry + template + class bonne_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { if (par.es) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); else - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void bonne_init(detail::base_factory& factory) + template + inline void bonne_init(detail::base_factory& factory) { - factory.add_to_factory("bonne", new bonne_entry); + factory.add_to_factory("bonne", new bonne_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_BONNE_HPP diff --git a/include/boost/geometry/srs/projections/proj/cass.hpp b/include/boost/geometry/srs/projections/proj/cass.hpp new file mode 100644 index 0000000000..d829b2fe1d --- /dev/null +++ b/include/boost/geometry/srs/projections/proj/cass.hpp @@ -0,0 +1,293 @@ +#ifndef BOOST_GEOMETRY_PROJECTIONS_CASS_HPP +#define BOOST_GEOMETRY_PROJECTIONS_CASS_HPP + +// Boost.Geometry - extensions-gis-projections (based on PROJ4) +// This file is automatically generated. DO NOT EDIT. + +// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This file is converted from PROJ4, http://trac.osgeo.org/proj +// PROJ4 is originally written by Gerald Evenden (then of the USGS) +// PROJ4 is maintained by Frank Warmerdam +// PROJ4 is converted to Boost.Geometry by Barend Gehrels + +// Last updated version of proj: 4.9.1 + +// Original copyright notice: + +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +#include +#include +#include +#include +#include + +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct cass {}; + +}} //namespace srs::proj + +namespace projections +{ + #ifndef DOXYGEN_NO_DETAIL + namespace detail { namespace cass + { + + //static const double EPS10 = 1e-10; + //static const double C1 = .16666666666666666666; + //static const double C2 = .00833333333333333333; + //static const double C3 = .04166666666666666666; + //static const double C4 = .33333333333333333333; + //static const double C5 = .06666666666666666666; + + template + inline T C1() { return .16666666666666666666666666666666666666; } + template + inline T C2() { return .00833333333333333333333333333333333333; } + template + inline T C3() { return .04166666666666666666666666666666666666; } + template + inline T C4() { return .33333333333333333333333333333333333333; } + template + inline T C5() { return .06666666666666666666666666666666666666; } + + template + struct par_cass + { + T m0; + T en[EN_SIZE]; + }; + + // template class, using CRTP to implement forward/inverse + template + struct base_cass_ellipsoid : public base_t_fi, + CalculationType, Parameters> + { + + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; + + par_cass m_proj_parm; + + inline base_cass_ellipsoid(const Parameters& par) + : base_t_fi, + CalculationType, Parameters>(*this, par) {} + + // FORWARD(e_forward) ellipsoid + // Project coordinates from geographic (lon, lat) to cartesian (x, y) + inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const + { + static const CalculationType C1 = cass::C1(); + static const CalculationType C2 = cass::C2(); + static const CalculationType C3 = cass::C3(); + + CalculationType n = sin(lp_lat); + CalculationType c = cos(lp_lat); + xy_y = pj_mlfn(lp_lat, n, c, this->m_proj_parm.en); + n = 1./sqrt(1. - this->m_par.es * n * n); + CalculationType tn = tan(lp_lat); CalculationType t = tn * tn; + CalculationType a1 = lp_lon * c; + c *= this->m_par.es * c / (1 - this->m_par.es); + CalculationType a2 = a1 * a1; + xy_x = n * a1 * (1. - a2 * t * + (C1 - (8. - t + 8. * c) * a2 * C2)); + xy_y -= this->m_proj_parm.m0 - n * tn * a2 * + (.5 + (5. - t + 6. * c) * a2 * C3); + } + + // INVERSE(e_inverse) ellipsoid + // Project coordinates from cartesian (x, y) to geographic (lon, lat) + inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const + { + static const CalculationType C3 = cass::C3(); + static const CalculationType C4 = cass::C4(); + static const CalculationType C5 = cass::C5(); + + CalculationType ph1; + + ph1 = pj_inv_mlfn(this->m_proj_parm.m0 + xy_y, this->m_par.es, this->m_proj_parm.en); + CalculationType tn = tan(ph1); CalculationType t = tn * tn; + CalculationType n = sin(ph1); + CalculationType r = 1. / (1. - this->m_par.es * n * n); + n = sqrt(r); + r *= (1. - this->m_par.es) * n; + CalculationType dd = xy_x / n; + CalculationType d2 = dd * dd; + lp_lat = ph1 - (n * tn / r) * d2 * + (.5 - (1. + 3. * t) * d2 * C3); + lp_lon = dd * (1. + t * d2 * + (-C4 + (1. + 3. * t) * d2 * C5)) / cos(ph1); + } + + static inline std::string get_name() + { + return "cass_ellipsoid"; + } + + }; + + // template class, using CRTP to implement forward/inverse + template + struct base_cass_spheroid : public base_t_fi, + CalculationType, Parameters> + { + + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; + + par_cass m_proj_parm; + + inline base_cass_spheroid(const Parameters& par) + : base_t_fi, + CalculationType, Parameters>(*this, par) {} + + // FORWARD(s_forward) spheroid + // Project coordinates from geographic (lon, lat) to cartesian (x, y) + inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const + { + xy_x = asin(cos(lp_lat) * sin(lp_lon)); + xy_y = atan2(tan(lp_lat) , cos(lp_lon)) - this->m_par.phi0; + } + + // INVERSE(s_inverse) spheroid + // Project coordinates from cartesian (x, y) to geographic (lon, lat) + inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const + { + CalculationType dd = xy_y + this->m_par.phi0; + lp_lat = asin(sin(dd) * cos(xy_x)); + lp_lon = atan2(tan(xy_x), cos(dd)); + } + + static inline std::string get_name() + { + return "cass_spheroid"; + } + + }; + + // Cassini + template + void setup_cass(Parameters& par, par_cass& proj_parm) + { + if (par.es) { + if (!pj_enfn(par.es, proj_parm.en)) + BOOST_THROW_EXCEPTION( projection_exception(0) ); + proj_parm.m0 = pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en); + } else { + } + } + + }} // namespace detail::cass + #endif // doxygen + + /*! + \brief Cassini projection + \ingroup projections + \tparam Geographic latlong point type + \tparam Cartesian xy point type + \tparam Parameters parameter type + \par Projection characteristics + - Cylindrical + - Spheroid + - Ellipsoid + \par Example + \image html ex_cass.gif + */ + template + struct cass_ellipsoid : public detail::cass::base_cass_ellipsoid + { + inline cass_ellipsoid(const Parameters& par) : detail::cass::base_cass_ellipsoid(par) + { + detail::cass::setup_cass(this->m_par, this->m_proj_parm); + } + }; + + /*! + \brief Cassini projection + \ingroup projections + \tparam Geographic latlong point type + \tparam Cartesian xy point type + \tparam Parameters parameter type + \par Projection characteristics + - Cylindrical + - Spheroid + - Ellipsoid + \par Example + \image html ex_cass.gif + */ + template + struct cass_spheroid : public detail::cass::base_cass_spheroid + { + inline cass_spheroid(const Parameters& par) : detail::cass::base_cass_spheroid(par) + { + detail::cass::setup_cass(this->m_par, this->m_proj_parm); + } + }; + + #ifndef DOXYGEN_NO_DETAIL + namespace detail + { + + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::cass, cass_spheroid, cass_ellipsoid) + + // Factory entry(s) + template + class cass_entry : public detail::factory_entry + { + public : + virtual base_v* create_new(const Parameters& par) const + { + if (par.es) + return new base_v_fi, CalculationType, Parameters>(par); + else + return new base_v_fi, CalculationType, Parameters>(par); + } + }; + + template + inline void cass_init(detail::base_factory& factory) + { + factory.add_to_factory("cass", new cass_entry); + } + + } // namespace detail + #endif // doxygen + +} // namespace projections + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_PROJECTIONS_CASS_HPP + diff --git a/include/boost/geometry/extensions/gis/projections/proj/cc.hpp b/include/boost/geometry/srs/projections/proj/cc.hpp similarity index 62% rename from include/boost/geometry/extensions/gis/projections/proj/cc.hpp rename to include/boost/geometry/srs/projections/proj/cc.hpp index f17c1b644c..9430bc8968 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/cc.hpp +++ b/include/boost/geometry/srs/projections/proj/cc.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,12 +43,21 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct cc {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace cc @@ -52,31 +65,35 @@ namespace boost { namespace geometry { namespace projections static const double EPS10 = 1.e-10; + template struct par_cc { - double ap; + T ap; }; // template class, using CRTP to implement forward/inverse - template - struct base_cc_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_cc_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_cc m_proj_parm; + par_cc m_proj_parm; inline base_cc_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - if (fabs(fabs(lp_lat) - geometry::math::half_pi()) <= EPS10) throw proj_exception();; + static const CalculationType HALFPI = detail::HALFPI(); + + if (fabs(fabs(lp_lat) - HALFPI) <= EPS10) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); xy_x = lp_lon; xy_y = tan(lp_lat); } @@ -97,13 +114,13 @@ namespace boost { namespace geometry { namespace projections }; // Central Cylindrical - template - void setup_cc(Parameters& par, par_cc& proj_parm) + template + void setup_cc(Parameters& par, par_cc& proj_parm) { par.es = 0.; } - }} // namespace detail::cc + }} // namespace detail::cc #endif // doxygen /*! @@ -118,10 +135,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_cc.gif */ - template - struct cc_spheroid : public detail::cc::base_cc_spheroid + template + struct cc_spheroid : public detail::cc::base_cc_spheroid { - inline cc_spheroid(const Parameters& par) : detail::cc::base_cc_spheroid(par) + inline cc_spheroid(const Parameters& par) : detail::cc::base_cc_spheroid(par) { detail::cc::setup_cc(this->m_par, this->m_proj_parm); } @@ -131,27 +148,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::cc, cc_spheroid, cc_spheroid) + // Factory entry(s) - template - class cc_entry : public detail::factory_entry + template + class cc_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void cc_init(detail::base_factory& factory) + template + inline void cc_init(detail::base_factory& factory) { - factory.add_to_factory("cc", new cc_entry); + factory.add_to_factory("cc", new cc_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_CC_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/cea.hpp b/include/boost/geometry/srs/projections/proj/cea.hpp similarity index 65% rename from include/boost/geometry/extensions/gis/projections/proj/cea.hpp rename to include/boost/geometry/srs/projections/proj/cea.hpp index 02037ba5d9..0bd5c16db7 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/cea.hpp +++ b/include/boost/geometry/srs/projections/proj/cea.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,14 +43,23 @@ #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct cea {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace cea @@ -54,26 +67,27 @@ namespace boost { namespace geometry { namespace projections static const double EPS = 1e-10; + template struct par_cea { - double qp; - double apa[APA_SIZE]; + T qp; + T apa[APA_SIZE]; }; // template class, using CRTP to implement forward/inverse - template - struct base_cea_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_cea_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_cea m_proj_parm; + par_cea m_proj_parm; inline base_cea_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -99,19 +113,19 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_cea_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_cea_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_cea m_proj_parm; + par_cea m_proj_parm; inline base_cea_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -125,15 +139,18 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double t; + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType t; if ((t = fabs(xy_y *= this->m_par.k0)) - EPS <= 1.) { if (t >= 1.) - lp_lat = xy_y < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); + lp_lat = xy_y < 0. ? -HALFPI : HALFPI; else lp_lat = asin(xy_y); lp_lon = xy_x / this->m_par.k0; - } else throw proj_exception();; + } else + BOOST_THROW_EXCEPTION( projection_exception(-20) ); } static inline std::string get_name() @@ -144,25 +161,26 @@ namespace boost { namespace geometry { namespace projections }; // Equal Area Cylindrical - template - void setup_cea(Parameters& par, par_cea& proj_parm) + template + void setup_cea(Parameters& par, par_cea& proj_parm) { - double t = 0; + T t = 0; if (pj_param(par.params, "tlat_ts").i && (par.k0 = cos(t = pj_param(par.params, "rlat_ts").f)) < 0.) - throw proj_exception(-24); + BOOST_THROW_EXCEPTION( projection_exception(-24) ); if (par.es) { t = sin(t); par.k0 /= sqrt(1. - par.es * t * t); par.e = sqrt(par.es); - if (!pj_authset(par.es, proj_parm.apa)) throw proj_exception(0); + if (!pj_authset(par.es, proj_parm.apa)) + BOOST_THROW_EXCEPTION( projection_exception(0) ); proj_parm.qp = pj_qsfn(1., par.e, par.one_es); } else { } } - }} // namespace detail::cea + }} // namespace detail::cea #endif // doxygen /*! @@ -180,10 +198,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_cea.gif */ - template - struct cea_ellipsoid : public detail::cea::base_cea_ellipsoid + template + struct cea_ellipsoid : public detail::cea::base_cea_ellipsoid { - inline cea_ellipsoid(const Parameters& par) : detail::cea::base_cea_ellipsoid(par) + inline cea_ellipsoid(const Parameters& par) : detail::cea::base_cea_ellipsoid(par) { detail::cea::setup_cea(this->m_par, this->m_proj_parm); } @@ -204,10 +222,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_cea.gif */ - template - struct cea_spheroid : public detail::cea::base_cea_spheroid + template + struct cea_spheroid : public detail::cea::base_cea_spheroid { - inline cea_spheroid(const Parameters& par) : detail::cea::base_cea_spheroid(par) + inline cea_spheroid(const Parameters& par) : detail::cea::base_cea_spheroid(par) { detail::cea::setup_cea(this->m_par, this->m_proj_parm); } @@ -217,30 +235,35 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::cea, cea_spheroid, cea_ellipsoid) + // Factory entry(s) - template - class cea_entry : public detail::factory_entry + template + class cea_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { if (par.es) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); else - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void cea_init(detail::base_factory& factory) + template + inline void cea_init(detail::base_factory& factory) { - factory.add_to_factory("cea", new cea_entry); + factory.add_to_factory("cea", new cea_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_CEA_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/chamb.hpp b/include/boost/geometry/srs/projections/proj/chamb.hpp similarity index 70% rename from include/boost/geometry/extensions/gis/projections/proj/chamb.hpp rename to include/boost/geometry/srs/projections/proj/chamb.hpp index 8b11fde28c..a6c4880037 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/chamb.hpp +++ b/include/boost/geometry/srs/projections/proj/chamb.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -40,42 +44,56 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct chamb {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace chamb { - static const double THIRD = 0.333333333333333333; + //static const double THIRD = 0.333333333333333333; static const double TOL = 1e-9; // specific for 'chamb' - struct VECT { double r, Az; }; - struct XY { double x, y; }; + template + struct VECT { T r, Az; }; + template + struct XY { T x, y; }; + template struct par_chamb { struct { /* control point data */ - double phi, lam; - double cosphi, sinphi; - VECT v; - XY p; - double Az; + T phi, lam; + T cosphi, sinphi; + VECT v; + XY p; + T Az; } c[3]; - XY p; - double beta_0, beta_1, beta_2; + XY p; + T beta_0, beta_1, beta_2; }; - 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 v; - double cdl, dp, dl; + template + inline VECT /* distance and azimuth from point 1 to point 2 */ + vect(T const& dphi, T const& c1, T const& s1, T const& c2, T const& s2, T const& dlam) + { + VECT v; + T cdl, dp, dl; cdl = cos(dlam); if (fabs(dphi) > 1. || fabs(dlam) > 1.) @@ -91,32 +109,37 @@ namespace boost { namespace geometry { namespace projections v.r = v.Az = 0.; return v; } - static double /* law of cosines */ - lc(double b,double c,double a) { + + template + inline T /* law of cosines */ + lc(T const& b, T const& c, T const& a) + { return aacos(.5 * (b * b + c * c - a * a) / (b * c)); } // template class, using CRTP to implement forward/inverse - template - struct base_chamb_spheroid : public base_t_f, - Geographic, Cartesian, Parameters> + template + struct base_chamb_spheroid : public base_t_f, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_chamb m_proj_parm; + par_chamb m_proj_parm; inline base_chamb_spheroid(const Parameters& par) - : base_t_f, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_f, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double sinphi, cosphi, a; - VECT v[3]; + static const CalculationType THIRD = detail::THIRD(); + + CalculationType sinphi, cosphi, a; + VECT v[3]; int i, j; sinphi = sin(lp_lat); @@ -163,9 +186,11 @@ namespace boost { namespace geometry { namespace projections }; // Chamberlin Trimetric - template - void setup_chamb(Parameters& par, par_chamb& proj_parm) + template + void setup_chamb(Parameters& par, par_chamb& proj_parm) { + static const T ONEPI = detail::ONEPI(); + int i, j; char line[10]; @@ -182,12 +207,13 @@ namespace boost { namespace geometry { namespace projections j = i == 2 ? 0 : i + 1; proj_parm.c[i].v = vect(proj_parm.c[j].phi - proj_parm.c[i].phi, proj_parm.c[i].cosphi, proj_parm.c[i].sinphi, proj_parm.c[j].cosphi, proj_parm.c[j].sinphi, proj_parm.c[j].lam - proj_parm.c[i].lam); - if (! proj_parm.c[i].v.r) throw proj_exception(-25); + if (! proj_parm.c[i].v.r) + BOOST_THROW_EXCEPTION( projection_exception(-25) ); /* co-linearity problem ignored for now */ } proj_parm.beta_0 = lc(proj_parm.c[0].v.r, proj_parm.c[2].v.r, proj_parm.c[1].v.r); proj_parm.beta_1 = lc(proj_parm.c[0].v.r, proj_parm.c[1].v.r, proj_parm.c[2].v.r); - proj_parm.beta_2 = geometry::math::pi() - proj_parm.beta_0; + proj_parm.beta_2 = ONEPI - proj_parm.beta_0; proj_parm.p.y = 2. * (proj_parm.c[0].p.y = proj_parm.c[1].p.y = proj_parm.c[2].v.r * sin(proj_parm.beta_0)); proj_parm.c[2].p.y = 0.; proj_parm.c[0].p.x = - (proj_parm.c[1].p.x = 0.5 * proj_parm.c[0].v.r); @@ -195,7 +221,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::chamb + }} // namespace detail::chamb #endif // doxygen /*! @@ -218,10 +244,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_chamb.gif */ - template - struct chamb_spheroid : public detail::chamb::base_chamb_spheroid + template + struct chamb_spheroid : public detail::chamb::base_chamb_spheroid { - inline chamb_spheroid(const Parameters& par) : detail::chamb::base_chamb_spheroid(par) + inline chamb_spheroid(const Parameters& par) : detail::chamb::base_chamb_spheroid(par) { detail::chamb::setup_chamb(this->m_par, this->m_proj_parm); } @@ -231,27 +257,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::chamb, chamb_spheroid, chamb_spheroid) + // Factory entry(s) - template - class chamb_entry : public detail::factory_entry + template + class chamb_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - inline void chamb_init(detail::base_factory& factory) + template + inline void chamb_init(detail::base_factory& factory) { - factory.add_to_factory("chamb", new chamb_entry); + factory.add_to_factory("chamb", new chamb_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_CHAMB_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/collg.hpp b/include/boost/geometry/srs/projections/proj/collg.hpp similarity index 67% rename from include/boost/geometry/extensions/gis/projections/proj/collg.hpp rename to include/boost/geometry/srs/projections/proj/collg.hpp index 0fabaa05b2..35b0a0f573 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/collg.hpp +++ b/include/boost/geometry/srs/projections/proj/collg.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,12 +43,21 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct collg {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace collg @@ -55,18 +68,18 @@ namespace boost { namespace geometry { namespace projections static const double ONEEPS = 1.0000001; // template class, using CRTP to implement forward/inverse - template - struct base_collg_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_collg_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_collg_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -87,8 +100,10 @@ namespace boost { namespace geometry { namespace projections lp_lat = xy_y / FYC - 1.; if (fabs(lp_lat = 1. - lp_lat * lp_lat) < 1.) lp_lat = asin(lp_lat); - else if (fabs(lp_lat) > ONEEPS) throw proj_exception(); - else lp_lat = lp_lat < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); + else if (fabs(lp_lat) > ONEEPS) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + else + lp_lat = lp_lat < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); if ((lp_lon = 1. - sin(lp_lat)) <= 0.) lp_lon = 0.; else @@ -109,7 +124,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::collg + }} // namespace collg #endif // doxygen /*! @@ -124,10 +139,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_collg.gif */ - template - struct collg_spheroid : public detail::collg::base_collg_spheroid + template + struct collg_spheroid : public detail::collg::base_collg_spheroid { - inline collg_spheroid(const Parameters& par) : detail::collg::base_collg_spheroid(par) + inline collg_spheroid(const Parameters& par) : detail::collg::base_collg_spheroid(par) { detail::collg::setup_collg(this->m_par); } @@ -137,27 +152,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::collg, collg_spheroid, collg_spheroid) + // Factory entry(s) - template - class collg_entry : public detail::factory_entry + template + class collg_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void collg_init(detail::base_factory& factory) + template + inline void collg_init(detail::base_factory& factory) { - factory.add_to_factory("collg", new collg_entry); + factory.add_to_factory("collg", new collg_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_COLLG_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/crast.hpp b/include/boost/geometry/srs/projections/proj/crast.hpp similarity index 66% rename from include/boost/geometry/extensions/gis/projections/proj/crast.hpp rename to include/boost/geometry/srs/projections/proj/crast.hpp index 6298e8d87c..cb345f531d 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/crast.hpp +++ b/include/boost/geometry/srs/projections/proj/crast.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,12 +41,21 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct crast {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace crast @@ -52,26 +65,28 @@ namespace boost { namespace geometry { namespace projections static const double RXM = 1.02332670794648848847; static const double YM = 3.06998012383946546542; static const double RYM = 0.32573500793527994772; - static const double THIRD = 0.333333333333333333; + //static const double THIRD = 0.333333333333333333; // template class, using CRTP to implement forward/inverse - template - struct base_crast_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_crast_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_crast_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { + static const CalculationType THIRD = detail::THIRD(); + lp_lat *= THIRD; xy_x = XM * lp_lon * (2. * cos(lp_lat + lp_lat) - 1.); xy_y = YM * sin(lp_lat); @@ -81,6 +96,8 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { + static const CalculationType THIRD = detail::THIRD(); + lp_lat = 3. * asin(xy_y * RYM); lp_lon = xy_x * RXM / (2. * cos((lp_lat + lp_lat) * THIRD) - 1); } @@ -99,7 +116,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::crast + }} // namespace detail::crast #endif // doxygen /*! @@ -114,10 +131,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_crast.gif */ - template - struct crast_spheroid : public detail::crast::base_crast_spheroid + template + struct crast_spheroid : public detail::crast::base_crast_spheroid { - inline crast_spheroid(const Parameters& par) : detail::crast::base_crast_spheroid(par) + inline crast_spheroid(const Parameters& par) : detail::crast::base_crast_spheroid(par) { detail::crast::setup_crast(this->m_par); } @@ -127,27 +144,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::crast, crast_spheroid, crast_spheroid) + // Factory entry(s) - template - class crast_entry : public detail::factory_entry + template + class crast_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void crast_init(detail::base_factory& factory) + template + inline void crast_init(detail::base_factory& factory) { - factory.add_to_factory("crast", new crast_entry); + factory.add_to_factory("crast", new crast_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_CRAST_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/denoy.hpp b/include/boost/geometry/srs/projections/proj/denoy.hpp similarity index 61% rename from include/boost/geometry/extensions/gis/projections/proj/denoy.hpp rename to include/boost/geometry/srs/projections/proj/denoy.hpp index e50195151b..b44c1ebef8 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/denoy.hpp +++ b/include/boost/geometry/srs/projections/proj/denoy.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,41 +41,58 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct denoy {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace denoy { static const double C0 = 0.95; - static const double C1 = -.08333333333333333333; - static const double C3 = .00166666666666666666; + //static const double C1 = -.08333333333333333333; + //static const double C3 = .00166666666666666666; static const double D1 = 0.9; static const double D5 = 0.03; + template + inline T C1() { return -.0833333333333333333333333333333; } + template + inline T C3() { return .0016666666666666666666666666666; } + // template class, using CRTP to implement forward/inverse - template - struct base_denoy_spheroid : public base_t_f, - Geographic, Cartesian, Parameters> + template + struct base_denoy_spheroid : public base_t_f, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_denoy_spheroid(const Parameters& par) - : base_t_f, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_f, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { + static const CalculationType C1 = denoy::C1(); + static const CalculationType C3 = denoy::C3(); + xy_y = lp_lat; xy_x = lp_lon; lp_lon = fabs(lp_lon); @@ -93,7 +114,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::denoy + }} // namespace detail::denoy #endif // doxygen /*! @@ -109,10 +130,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_denoy.gif */ - template - struct denoy_spheroid : public detail::denoy::base_denoy_spheroid + template + struct denoy_spheroid : public detail::denoy::base_denoy_spheroid { - inline denoy_spheroid(const Parameters& par) : detail::denoy::base_denoy_spheroid(par) + inline denoy_spheroid(const Parameters& par) : detail::denoy::base_denoy_spheroid(par) { detail::denoy::setup_denoy(this->m_par); } @@ -122,27 +143,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::denoy, denoy_spheroid, denoy_spheroid) + // Factory entry(s) - template - class denoy_entry : public detail::factory_entry + template + class denoy_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - inline void denoy_init(detail::base_factory& factory) + template + inline void denoy_init(detail::base_factory& factory) { - factory.add_to_factory("denoy", new denoy_entry); + factory.add_to_factory("denoy", new denoy_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_DENOY_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck1.hpp b/include/boost/geometry/srs/projections/proj/eck1.hpp similarity index 68% rename from include/boost/geometry/extensions/gis/projections/proj/eck1.hpp rename to include/boost/geometry/srs/projections/proj/eck1.hpp index 8ab1ee891d..82db5226ae 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck1.hpp +++ b/include/boost/geometry/srs/projections/proj/eck1.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,12 +41,21 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct eck1 {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck1 @@ -52,18 +65,18 @@ namespace boost { namespace geometry { namespace projections static const double RP = .31830988618379067154; // template class, using CRTP to implement forward/inverse - template - struct base_eck1_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_eck1_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_eck1_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -95,7 +108,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::eck1 + }} // namespace detail::eck1 #endif // doxygen /*! @@ -110,10 +123,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_eck1.gif */ - template - struct eck1_spheroid : public detail::eck1::base_eck1_spheroid + template + struct eck1_spheroid : public detail::eck1::base_eck1_spheroid { - inline eck1_spheroid(const Parameters& par) : detail::eck1::base_eck1_spheroid(par) + inline eck1_spheroid(const Parameters& par) : detail::eck1::base_eck1_spheroid(par) { detail::eck1::setup_eck1(this->m_par); } @@ -123,27 +136,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::eck1, eck1_spheroid, eck1_spheroid) + // Factory entry(s) - template - class eck1_entry : public detail::factory_entry + template + class eck1_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void eck1_init(detail::base_factory& factory) + template + inline void eck1_init(detail::base_factory& factory) { - factory.add_to_factory("eck1", new eck1_entry); + factory.add_to_factory("eck1", new eck1_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_ECK1_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck2.hpp b/include/boost/geometry/srs/projections/proj/eck2.hpp similarity index 65% rename from include/boost/geometry/extensions/gis/projections/proj/eck2.hpp rename to include/boost/geometry/srs/projections/proj/eck2.hpp index 12146f741b..e6e8e1ffb9 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck2.hpp +++ b/include/boost/geometry/srs/projections/proj/eck2.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,12 +43,21 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct eck2 {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck2 @@ -52,22 +65,22 @@ namespace boost { namespace geometry { namespace projections static const double FXC = 0.46065886596178063902; static const double FYC = 1.44720250911653531871; - static const double C13 = 0.33333333333333333333; + //static const double C13 = 0.33333333333333333333; static const double ONEEPS = 1.0000001; // template class, using CRTP to implement forward/inverse - template - struct base_eck2_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_eck2_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_eck2_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -82,12 +95,16 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { + static const CalculationType HALFPI = detail::HALFPI(); + static const CalculationType C13 = detail::THIRD(); + lp_lon = xy_x / (FXC * ( lp_lat = 2. - fabs(xy_y) / FYC) ); lp_lat = (4. - lp_lat * lp_lat) * C13; if (fabs(lp_lat) >= 1.) { - if (fabs(lp_lat) > ONEEPS) throw proj_exception(); + if (fabs(lp_lat) > ONEEPS) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); else - lp_lat = lp_lat < 0. ? -geometry::math::half_pi() : geometry::math::half_pi(); + lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; } else lp_lat = asin(lp_lat); if (xy_y < 0) @@ -108,7 +125,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::eck2 + }} // namespace detail::eck2 #endif // doxygen /*! @@ -123,10 +140,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_eck2.gif */ - template - struct eck2_spheroid : public detail::eck2::base_eck2_spheroid + template + struct eck2_spheroid : public detail::eck2::base_eck2_spheroid { - inline eck2_spheroid(const Parameters& par) : detail::eck2::base_eck2_spheroid(par) + inline eck2_spheroid(const Parameters& par) : detail::eck2::base_eck2_spheroid(par) { detail::eck2::setup_eck2(this->m_par); } @@ -136,27 +153,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::eck2, eck2_spheroid, eck2_spheroid) + // Factory entry(s) - template - class eck2_entry : public detail::factory_entry + template + class eck2_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void eck2_init(detail::base_factory& factory) + template + inline void eck2_init(detail::base_factory& factory) { - factory.add_to_factory("eck2", new eck2_entry); + factory.add_to_factory("eck2", new eck2_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_ECK2_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck3.hpp b/include/boost/geometry/srs/projections/proj/eck3.hpp similarity index 59% rename from include/boost/geometry/extensions/gis/projections/proj/eck3.hpp rename to include/boost/geometry/srs/projections/proj/eck3.hpp index c336d713bc..d33994d2ea 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck3.hpp +++ b/include/boost/geometry/srs/projections/proj/eck3.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,37 +43,50 @@ #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct eck3 {}; + struct putp1 {}; + struct wag6 {}; + struct kav7 {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck3 { + template struct par_eck3 { - double C_x, C_y, A, B; + T C_x, C_y, A, B; }; // template class, using CRTP to implement forward/inverse - template - struct base_eck3_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_eck3_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_eck3 m_proj_parm; + par_eck3 m_proj_parm; inline base_eck3_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -94,8 +111,8 @@ namespace boost { namespace geometry { namespace projections }; - template - void setup(Parameters& par, par_eck3& proj_parm) + template + void setup(Parameters& par, par_eck3& proj_parm) { boost::ignore_unused(proj_parm); par.es = 0.; @@ -103,8 +120,8 @@ namespace boost { namespace geometry { namespace projections // Eckert III - template - void setup_eck3(Parameters& par, par_eck3& proj_parm) + template + void setup_eck3(Parameters& par, par_eck3& proj_parm) { proj_parm.C_x = .42223820031577120149; proj_parm.C_y = .84447640063154240298; @@ -114,8 +131,8 @@ namespace boost { namespace geometry { namespace projections } // Putnins P1 - template - void setup_putp1(Parameters& par, par_eck3& proj_parm) + template + void setup_putp1(Parameters& par, par_eck3& proj_parm) { proj_parm.C_x = 1.89490; proj_parm.C_y = 0.94745; @@ -125,8 +142,8 @@ namespace boost { namespace geometry { namespace projections } // Wagner VI - template - void setup_wag6(Parameters& par, par_eck3& proj_parm) + template + void setup_wag6(Parameters& par, par_eck3& proj_parm) { proj_parm.C_x = proj_parm.C_y = 0.94745; proj_parm.A = 0.; @@ -135,8 +152,8 @@ namespace boost { namespace geometry { namespace projections } // Kavraisky VII - template - void setup_kav7(Parameters& par, par_eck3& proj_parm) + template + void setup_kav7(Parameters& par, par_eck3& proj_parm) { proj_parm.C_x = 0.2632401569273184856851; proj_parm.C_x = 0.8660254037844; @@ -146,7 +163,7 @@ namespace boost { namespace geometry { namespace projections setup(par, proj_parm); } - }} // namespace detail::eck3 + }} // namespace detail::eck3 #endif // doxygen /*! @@ -161,10 +178,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_eck3.gif */ - template - struct eck3_spheroid : public detail::eck3::base_eck3_spheroid + template + struct eck3_spheroid : public detail::eck3::base_eck3_spheroid { - inline eck3_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) + inline eck3_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) { detail::eck3::setup_eck3(this->m_par, this->m_proj_parm); } @@ -182,10 +199,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_putp1.gif */ - template - struct putp1_spheroid : public detail::eck3::base_eck3_spheroid + template + struct putp1_spheroid : public detail::eck3::base_eck3_spheroid { - inline putp1_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) + inline putp1_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) { detail::eck3::setup_putp1(this->m_par, this->m_proj_parm); } @@ -203,10 +220,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_wag6.gif */ - template - struct wag6_spheroid : public detail::eck3::base_eck3_spheroid + template + struct wag6_spheroid : public detail::eck3::base_eck3_spheroid { - inline wag6_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) + inline wag6_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) { detail::eck3::setup_wag6(this->m_par, this->m_proj_parm); } @@ -224,10 +241,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_kav7.gif */ - template - struct kav7_spheroid : public detail::eck3::base_eck3_spheroid + template + struct kav7_spheroid : public detail::eck3::base_eck3_spheroid { - inline kav7_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) + inline kav7_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) { detail::eck3::setup_kav7(this->m_par, this->m_proj_parm); } @@ -237,60 +254,68 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::eck3, eck3_spheroid, eck3_spheroid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::putp1, putp1_spheroid, putp1_spheroid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::wag6, wag6_spheroid, wag6_spheroid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::kav7, kav7_spheroid, kav7_spheroid) + // Factory entry(s) - template - class eck3_entry : public detail::factory_entry + template + class eck3_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - class putp1_entry : public detail::factory_entry + template + class putp1_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - class wag6_entry : public detail::factory_entry + template + class wag6_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - class kav7_entry : public detail::factory_entry + template + class kav7_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void eck3_init(detail::base_factory& factory) + template + inline void eck3_init(detail::base_factory& factory) { - factory.add_to_factory("eck3", new eck3_entry); - factory.add_to_factory("putp1", new putp1_entry); - factory.add_to_factory("wag6", new wag6_entry); - factory.add_to_factory("kav7", new kav7_entry); + factory.add_to_factory("eck3", new eck3_entry); + factory.add_to_factory("putp1", new putp1_entry); + factory.add_to_factory("wag6", new wag6_entry); + factory.add_to_factory("kav7", new kav7_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_ECK3_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck4.hpp b/include/boost/geometry/srs/projections/proj/eck4.hpp similarity index 71% rename from include/boost/geometry/extensions/gis/projections/proj/eck4.hpp rename to include/boost/geometry/srs/projections/proj/eck4.hpp index b3cd36b0b5..423829d9d4 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck4.hpp +++ b/include/boost/geometry/srs/projections/proj/eck4.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,13 +41,22 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct eck4 {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck4 @@ -58,24 +71,24 @@ namespace boost { namespace geometry { namespace projections static const int NITER = 6; // template class, using CRTP to implement forward/inverse - template - struct base_eck4_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_eck4_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_eck4_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double p, V, s, c; + CalculationType p, V, s, c; int i; p = C_p * sin(lp_lat); @@ -102,7 +115,7 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double c; + CalculationType c; lp_lat = aasin(xy_y / C_y); lp_lon = xy_x / (C_x * (1. + (c = cos(lp_lat)))); @@ -123,7 +136,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::eck4 + }} // namespace detail::eck4 #endif // doxygen /*! @@ -138,10 +151,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_eck4.gif */ - template - struct eck4_spheroid : public detail::eck4::base_eck4_spheroid + template + struct eck4_spheroid : public detail::eck4::base_eck4_spheroid { - inline eck4_spheroid(const Parameters& par) : detail::eck4::base_eck4_spheroid(par) + inline eck4_spheroid(const Parameters& par) : detail::eck4::base_eck4_spheroid(par) { detail::eck4::setup_eck4(this->m_par); } @@ -151,27 +164,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::eck4, eck4_spheroid, eck4_spheroid) + // Factory entry(s) - template - class eck4_entry : public detail::factory_entry + template + class eck4_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void eck4_init(detail::base_factory& factory) + template + inline void eck4_init(detail::base_factory& factory) { - factory.add_to_factory("eck4", new eck4_entry); + factory.add_to_factory("eck4", new eck4_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_ECK4_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck5.hpp b/include/boost/geometry/srs/projections/proj/eck5.hpp similarity index 68% rename from include/boost/geometry/extensions/gis/projections/proj/eck5.hpp rename to include/boost/geometry/srs/projections/proj/eck5.hpp index c52d98cbce..ead1ef628b 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck5.hpp +++ b/include/boost/geometry/srs/projections/proj/eck5.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,12 +41,21 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct eck5 {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck5 @@ -54,18 +67,18 @@ namespace boost { namespace geometry { namespace projections static const double RYF = 1.13375401361911319568; // template class, using CRTP to implement forward/inverse - template - struct base_eck5_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_eck5_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_eck5_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -96,7 +109,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::eck5 + }} // namespace detail::eck5 #endif // doxygen /*! @@ -111,10 +124,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_eck5.gif */ - template - struct eck5_spheroid : public detail::eck5::base_eck5_spheroid + template + struct eck5_spheroid : public detail::eck5::base_eck5_spheroid { - inline eck5_spheroid(const Parameters& par) : detail::eck5::base_eck5_spheroid(par) + inline eck5_spheroid(const Parameters& par) : detail::eck5::base_eck5_spheroid(par) { detail::eck5::setup_eck5(this->m_par); } @@ -124,27 +137,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::eck5, eck5_spheroid, eck5_spheroid) + // Factory entry(s) - template - class eck5_entry : public detail::factory_entry + template + class eck5_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void eck5_init(detail::base_factory& factory) + template + inline void eck5_init(detail::base_factory& factory) { - factory.add_to_factory("eck5", new eck5_entry); + factory.add_to_factory("eck5", new eck5_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_ECK5_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/eqc.hpp b/include/boost/geometry/srs/projections/proj/eqc.hpp similarity index 65% rename from include/boost/geometry/extensions/gis/projections/proj/eqc.hpp rename to include/boost/geometry/srs/projections/proj/eqc.hpp index f758b7f037..8316abc56e 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eqc.hpp +++ b/include/boost/geometry/srs/projections/proj/eqc.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,36 +41,45 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct eqc {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eqc { - + template struct par_eqc { - double rc; + T rc; }; // template class, using CRTP to implement forward/inverse - template - struct base_eqc_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_eqc_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_eqc m_proj_parm; + par_eqc m_proj_parm; inline base_eqc_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -92,14 +105,15 @@ namespace boost { namespace geometry { namespace projections }; // Equidistant Cylindrical (Plate Caree) - template - void setup_eqc(Parameters& par, par_eqc& proj_parm) + template + void setup_eqc(Parameters& par, par_eqc& proj_parm) { - if ((proj_parm.rc = cos(pj_param(par.params, "rlat_ts").f)) <= 0.) throw proj_exception(-24); + if ((proj_parm.rc = cos(pj_param(par.params, "rlat_ts").f)) <= 0.) + BOOST_THROW_EXCEPTION( projection_exception(-24) ); par.es = 0.; } - }} // namespace detail::eqc + }} // namespace detail::eqc #endif // doxygen /*! @@ -117,10 +131,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_eqc.gif */ - template - struct eqc_spheroid : public detail::eqc::base_eqc_spheroid + template + struct eqc_spheroid : public detail::eqc::base_eqc_spheroid { - inline eqc_spheroid(const Parameters& par) : detail::eqc::base_eqc_spheroid(par) + inline eqc_spheroid(const Parameters& par) : detail::eqc::base_eqc_spheroid(par) { detail::eqc::setup_eqc(this->m_par, this->m_proj_parm); } @@ -130,27 +144,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::eqc, eqc_spheroid, eqc_spheroid) + // Factory entry(s) - template - class eqc_entry : public detail::factory_entry + template + class eqc_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void eqc_init(detail::base_factory& factory) + template + inline void eqc_init(detail::base_factory& factory) { - factory.add_to_factory("eqc", new eqc_entry); + factory.add_to_factory("eqc", new eqc_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_EQC_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/eqdc.hpp b/include/boost/geometry/srs/projections/proj/eqdc.hpp similarity index 72% rename from include/boost/geometry/extensions/gis/projections/proj/eqdc.hpp rename to include/boost/geometry/srs/projections/proj/eqdc.hpp index 8da653a676..8984cd736c 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eqdc.hpp +++ b/include/boost/geometry/srs/projections/proj/eqdc.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -40,14 +44,23 @@ #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct eqdc {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eqdc @@ -55,37 +68,38 @@ namespace boost { namespace geometry { namespace projections static const double EPS10 = 1.e-10; + template struct par_eqdc { - double phi1; - double phi2; - double n; - double rho0; - double c; - double en[EN_SIZE]; - int ellips; + T phi1; + T phi2; + T n; + T rho0; + T c; + T en[EN_SIZE]; + int ellips; }; // template class, using CRTP to implement forward/inverse - template - struct base_eqdc_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_eqdc_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_eqdc m_proj_parm; + par_eqdc m_proj_parm; inline base_eqdc_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_forward) sphere & ellipsoid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double rho = 0.0; + CalculationType rho = 0.0; rho = this->m_proj_parm.c - (this->m_proj_parm.ellips ? pj_mlfn(lp_lat, sin(lp_lat), cos(lp_lat), this->m_proj_parm.en) : lp_lat); xy_x = rho * sin( lp_lon *= this->m_proj_parm.n ); @@ -96,7 +110,7 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double rho = 0.0; + CalculationType rho = 0.0; if ((rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0 ) { if (this->m_proj_parm.n < 0.) { rho = -rho; @@ -117,7 +131,7 @@ namespace boost { namespace geometry { namespace projections #ifdef SPECIAL_FACTORS_NOT_CONVERTED inline void fac(Geographic lp, Factors &fac) const { - double sinphi, cosphi; + CalculationType sinphi, cosphi; sinphi = sin(lp_lat); cosphi = cos(lp_lat); @@ -136,17 +150,18 @@ namespace boost { namespace geometry { namespace projections }; // Equidistant Conic - template - void setup_eqdc(Parameters& par, par_eqdc& proj_parm) + template + void setup_eqdc(Parameters& par, par_eqdc& proj_parm) { - double cosphi, sinphi; + T cosphi, sinphi; int secant; proj_parm.phi1 = pj_param(par.params, "rlat_1").f; proj_parm.phi2 = pj_param(par.params, "rlat_2").f; - if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10) throw proj_exception(-21); + if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10) + BOOST_THROW_EXCEPTION( projection_exception(-21) ); if (!pj_enfn(par.es, proj_parm.en)) - throw proj_exception(0); + BOOST_THROW_EXCEPTION( projection_exception(0) ); proj_parm.n = sinphi = sin(proj_parm.phi1); cosphi = cos(proj_parm.phi1); secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10; @@ -172,7 +187,7 @@ namespace boost { namespace geometry { namespace projections } } - }} // namespace detail::eqdc + }} // namespace detail::eqdc #endif // doxygen /*! @@ -191,10 +206,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_eqdc.gif */ - template - struct eqdc_ellipsoid : public detail::eqdc::base_eqdc_ellipsoid + template + struct eqdc_ellipsoid : public detail::eqdc::base_eqdc_ellipsoid { - inline eqdc_ellipsoid(const Parameters& par) : detail::eqdc::base_eqdc_ellipsoid(par) + inline eqdc_ellipsoid(const Parameters& par) : detail::eqdc::base_eqdc_ellipsoid(par) { detail::eqdc::setup_eqdc(this->m_par, this->m_proj_parm); } @@ -204,27 +219,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::eqdc, eqdc_ellipsoid, eqdc_ellipsoid) + // Factory entry(s) - template - class eqdc_entry : public detail::factory_entry + template + class eqdc_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void eqdc_init(detail::base_factory& factory) + template + inline void eqdc_init(detail::base_factory& factory) { - factory.add_to_factory("eqdc", new eqdc_entry); + factory.add_to_factory("eqdc", new eqdc_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_EQDC_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/etmerc.hpp b/include/boost/geometry/srs/projections/proj/etmerc.hpp similarity index 76% rename from include/boost/geometry/extensions/gis/projections/proj/etmerc.hpp rename to include/boost/geometry/srs/projections/proj/etmerc.hpp index 16fbcc854c..55baa759b9 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/etmerc.hpp +++ b/include/boost/geometry/srs/projections/proj/etmerc.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -41,12 +45,21 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct etmerc {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace etmerc @@ -54,14 +67,15 @@ namespace boost { namespace geometry { namespace projections static const int PROJ_ETMERC_ORDER = 6; + template struct par_etmerc { - double Qn; /* Merid. quad., scaled to the projection */ - double Zb; /* Radius vector in polar coord. systems */ - double cgb[6]; /* Constants for Gauss -> Geo lat */ - double cbg[6]; /* Constants for Geo lat -> Gauss */ - double utg[6]; /* Constants for transv. merc. -> geo */ - double gtu[6]; /* Constants for geo -> transv. merc. */ + T Qn; /* Merid. quad., scaled to the projection */ + T Zb; /* Radius vector in polar coord. systems */ + T cgb[6]; /* Constants for Gauss -> Geo lat */ + T cbg[6]; /* Constants for Geo lat -> Gauss */ + T utg[6]; /* Constants for transv. merc. -> geo */ + T gtu[6]; /* Constants for geo -> transv. merc. */ }; /* The code in this file is largly based upon procedures: @@ -80,10 +94,10 @@ namespace boost { namespace geometry { namespace projections - - static double - log1py(double x) { /* Compute log(1+x) accurately */ - volatile double + template + inline T + log1py(T const& x) { /* Compute log(1+x) accurately */ + volatile T y = 1 + x, z = y - 1; /* Here's the explanation for this magic: y = 1 + z, exactly, and z @@ -93,17 +107,19 @@ namespace boost { namespace geometry { namespace projections return z == 0 ? x : x * log(y) / z; } - static double - asinhy(double x) { /* Compute asinh(x) accurately */ - double y = fabs(x); /* Enforce odd parity */ + template + inline T + asinhy(T const& x) { /* Compute asinh(x) accurately */ + T y = fabs(x); /* Enforce odd parity */ y = log1py(y * (1 + y/(boost::math::hypot(1.0, y) + 1))); return x < 0 ? -y : y; } - static double - gatg(const double *p1, int len_p1, double B) { - const double *p; - double h = 0, h1, h2 = 0, cos_2B; + template + inline T + gatg(const T *p1, int len_p1, T const& B) { + const T *p; + T h = 0, h1, h2 = 0, cos_2B; cos_2B = 2*cos(2*B); for (p = p1 + len_p1, h1 = *--p; p - p1; h2 = h1, h1 = h) @@ -111,13 +127,14 @@ namespace boost { namespace geometry { namespace projections return (B + h*sin(2*B)); } - static double - clenS(const double *a, int size, double arg_r, double arg_i, double *R, double *I) { - double r, i, hr, hr1, hr2, hi, hi1, hi2; - double sin_arg_r, cos_arg_r, sinh_arg_i, cosh_arg_i; + template + inline T + clenS(const T *a, int size, T const& arg_r, T const& arg_i, T *R, T *I) { + T r, i, hr, hr1, hr2, hi, hi1, hi2; + T sin_arg_r, cos_arg_r, sinh_arg_i, cosh_arg_i; /* arguments */ - const double* p = a + size; + const T* p = a + size; sin_arg_r = sin(arg_r); cos_arg_r = cos(arg_r); sinh_arg_i = sinh(arg_i); @@ -139,11 +156,13 @@ namespace boost { namespace geometry { namespace projections *I = r*hi + i*hr; return(*R); } - static double - clens(const double *a, int size, double arg_r) { - double r, hr, hr1, hr2, cos_arg_r; - const double* p = a + size; + template + inline T + clens(const T *a, int size, T const& arg_r) { + T r, hr, hr1, hr2, cos_arg_r; + + const T* p = a + size; cos_arg_r = cos(arg_r); r = 2*cos_arg_r; /* summation loop */ @@ -156,26 +175,26 @@ namespace boost { namespace geometry { namespace projections } // template class, using CRTP to implement forward/inverse - template - struct base_etmerc_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_etmerc_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_etmerc m_proj_parm; + par_etmerc m_proj_parm; inline base_etmerc_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_forward) ellipsoid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double sin_Cn, cos_Cn, cos_Ce, sin_Ce, dCn, dCe; - double Cn = lp_lat, Ce = lp_lon; + CalculationType sin_Cn, cos_Cn, cos_Ce, sin_Ce, dCn, dCe; + CalculationType Cn = lp_lat, Ce = lp_lon; /* ell. LAT, LNG -> Gaussian LAT, LNG */ Cn = gatg(this->m_proj_parm.cbg, PROJ_ETMERC_ORDER, Cn); @@ -202,8 +221,8 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double sin_Cn, cos_Cn, cos_Ce, sin_Ce, dCn, dCe; - double Cn = xy_y, Ce = xy_x; + CalculationType sin_Cn, cos_Cn, cos_Ce, sin_Ce, dCn, dCe; + CalculationType Cn = xy_y, Ce = xy_x; /* normalize N, E */ Cn = (Cn - this->m_proj_parm.Zb)/this->m_proj_parm.Qn; @@ -236,12 +255,13 @@ namespace boost { namespace geometry { namespace projections }; // Extended Transverse Mercator - template - void setup_etmerc(Parameters& par, par_etmerc& proj_parm) + template + void setup_etmerc(Parameters& par, par_etmerc& proj_parm) { - double f, n, np, Z; + T f, n, np, Z; - if (par.es <= 0) throw proj_exception(-34); + if (par.es <= 0) + BOOST_THROW_EXCEPTION( projection_exception(-34) ); f = par.es / (1 + sqrt(1 - par.es)); /* Replaces: f = 1 - sqrt(1-par.es); */ /* third flattening */ np = n = f/(2 - f); @@ -313,7 +333,7 @@ namespace boost { namespace geometry { namespace projections proj_parm.Zb = - proj_parm.Qn*(Z + clens(proj_parm.gtu, PROJ_ETMERC_ORDER, 2*Z)); } - }} // namespace detail::etmerc + }} // namespace detail::etmerc #endif // doxygen /*! @@ -331,10 +351,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_etmerc.gif */ - template - struct etmerc_ellipsoid : public detail::etmerc::base_etmerc_ellipsoid + template + struct etmerc_ellipsoid : public detail::etmerc::base_etmerc_ellipsoid { - inline etmerc_ellipsoid(const Parameters& par) : detail::etmerc::base_etmerc_ellipsoid(par) + inline etmerc_ellipsoid(const Parameters& par) : detail::etmerc::base_etmerc_ellipsoid(par) { detail::etmerc::setup_etmerc(this->m_par, this->m_proj_parm); } @@ -344,27 +364,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::etmerc, etmerc_ellipsoid, etmerc_ellipsoid) + // Factory entry(s) - template - class etmerc_entry : public detail::factory_entry + template + class etmerc_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void etmerc_init(detail::base_factory& factory) + template + inline void etmerc_init(detail::base_factory& factory) { - factory.add_to_factory("etmerc", new etmerc_entry); + factory.add_to_factory("etmerc", new etmerc_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_ETMERC_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/fahey.hpp b/include/boost/geometry/srs/projections/proj/fahey.hpp similarity index 67% rename from include/boost/geometry/extensions/gis/projections/proj/fahey.hpp rename to include/boost/geometry/srs/projections/proj/fahey.hpp index fb1c86a3c1..117e8e57d6 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/fahey.hpp +++ b/include/boost/geometry/srs/projections/proj/fahey.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,13 +41,22 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct fahey {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace fahey @@ -52,18 +65,18 @@ namespace boost { namespace geometry { namespace projections static const double TOL = 1e-6; // template class, using CRTP to implement forward/inverse - template - struct base_fahey_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_fahey_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_fahey_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -96,7 +109,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::fahey + }} // namespace detail::fahey #endif // doxygen /*! @@ -111,10 +124,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_fahey.gif */ - template - struct fahey_spheroid : public detail::fahey::base_fahey_spheroid + template + struct fahey_spheroid : public detail::fahey::base_fahey_spheroid { - inline fahey_spheroid(const Parameters& par) : detail::fahey::base_fahey_spheroid(par) + inline fahey_spheroid(const Parameters& par) : detail::fahey::base_fahey_spheroid(par) { detail::fahey::setup_fahey(this->m_par); } @@ -124,27 +137,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::fahey, fahey_spheroid, fahey_spheroid) + // Factory entry(s) - template - class fahey_entry : public detail::factory_entry + template + class fahey_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void fahey_init(detail::base_factory& factory) + template + inline void fahey_init(detail::base_factory& factory) { - factory.add_to_factory("fahey", new fahey_entry); + factory.add_to_factory("fahey", new fahey_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_FAHEY_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/fouc_s.hpp b/include/boost/geometry/srs/projections/proj/fouc_s.hpp similarity index 68% rename from include/boost/geometry/extensions/gis/projections/proj/fouc_s.hpp rename to include/boost/geometry/srs/projections/proj/fouc_s.hpp index e2452b58e7..ecdb0c553e 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/fouc_s.hpp +++ b/include/boost/geometry/srs/projections/proj/fouc_s.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,13 +43,22 @@ #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct fouc_s {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace fouc_s @@ -54,31 +67,32 @@ namespace boost { namespace geometry { namespace projections static const int MAX_ITER = 10; static const double LOOP_TOL = 1e-7; + template struct par_fouc_s { - double n, n1; + T n, n1; }; // template class, using CRTP to implement forward/inverse - template - struct base_fouc_s_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_fouc_s_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_fouc_s m_proj_parm; + par_fouc_s m_proj_parm; inline base_fouc_s_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double t; + CalculationType t; t = cos(lp_lat); xy_x = lp_lon * t / (this->m_proj_parm.n + this->m_proj_parm.n1 * t); @@ -89,7 +103,7 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double V; + CalculationType V; int i; if (this->m_proj_parm.n) { @@ -116,17 +130,17 @@ namespace boost { namespace geometry { namespace projections }; // Foucaut Sinusoidal - template - void setup_fouc_s(Parameters& par, par_fouc_s& proj_parm) + template + void setup_fouc_s(Parameters& par, par_fouc_s& proj_parm) { proj_parm.n = pj_param(par.params, "dn").f; if (proj_parm.n < 0. || proj_parm.n > 1.) - throw proj_exception(-99); + BOOST_THROW_EXCEPTION( projection_exception(-99) ); proj_parm.n1 = 1. - proj_parm.n; par.es = 0; } - }} // namespace detail::fouc_s + }} // namespace detail::fouc_s #endif // doxygen /*! @@ -143,10 +157,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_fouc_s.gif */ - template - struct fouc_s_spheroid : public detail::fouc_s::base_fouc_s_spheroid + template + struct fouc_s_spheroid : public detail::fouc_s::base_fouc_s_spheroid { - inline fouc_s_spheroid(const Parameters& par) : detail::fouc_s::base_fouc_s_spheroid(par) + inline fouc_s_spheroid(const Parameters& par) : detail::fouc_s::base_fouc_s_spheroid(par) { detail::fouc_s::setup_fouc_s(this->m_par, this->m_proj_parm); } @@ -156,27 +170,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::fouc_s, fouc_s_spheroid, fouc_s_spheroid) + // Factory entry(s) - template - class fouc_s_entry : public detail::factory_entry + template + class fouc_s_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void fouc_s_init(detail::base_factory& factory) + template + inline void fouc_s_init(detail::base_factory& factory) { - factory.add_to_factory("fouc_s", new fouc_s_entry); + factory.add_to_factory("fouc_s", new fouc_s_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_FOUC_S_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/gall.hpp b/include/boost/geometry/srs/projections/proj/gall.hpp similarity index 68% rename from include/boost/geometry/extensions/gis/projections/proj/gall.hpp rename to include/boost/geometry/srs/projections/proj/gall.hpp index 425f4a2f29..fc3771fb5f 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gall.hpp +++ b/include/boost/geometry/srs/projections/proj/gall.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,12 +41,21 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct gall {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gall @@ -54,18 +67,18 @@ namespace boost { namespace geometry { namespace projections static const double RXF = 1.41421356237309504880; // template class, using CRTP to implement forward/inverse - template - struct base_gall_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_gall_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_gall_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -97,7 +110,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::gall + }} // namespace detail::gall #endif // doxygen /*! @@ -112,10 +125,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_gall.gif */ - template - struct gall_spheroid : public detail::gall::base_gall_spheroid + template + struct gall_spheroid : public detail::gall::base_gall_spheroid { - inline gall_spheroid(const Parameters& par) : detail::gall::base_gall_spheroid(par) + inline gall_spheroid(const Parameters& par) : detail::gall::base_gall_spheroid(par) { detail::gall::setup_gall(this->m_par); } @@ -125,27 +138,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::gall, gall_spheroid, gall_spheroid) + // Factory entry(s) - template - class gall_entry : public detail::factory_entry + template + class gall_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void gall_init(detail::base_factory& factory) + template + inline void gall_init(detail::base_factory& factory) { - factory.add_to_factory("gall", new gall_entry); + factory.add_to_factory("gall", new gall_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_GALL_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/geocent.hpp b/include/boost/geometry/srs/projections/proj/geocent.hpp similarity index 69% rename from include/boost/geometry/extensions/gis/projections/proj/geocent.hpp rename to include/boost/geometry/srs/projections/proj/geocent.hpp index 8c7469d3af..a2404abede 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/geocent.hpp +++ b/include/boost/geometry/srs/projections/proj/geocent.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -43,30 +47,39 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct geocent {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace geocent { // template class, using CRTP to implement forward/inverse - template - struct base_geocent_other : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_geocent_other : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_geocent_other(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(forward) // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -100,7 +113,7 @@ namespace boost { namespace geometry { namespace projections par.y0 = 0.0; } - }} // namespace detail::geocent + }} // namespace detail::geocent #endif // doxygen /*! @@ -112,10 +125,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_geocent.gif */ - template - struct geocent_other : public detail::geocent::base_geocent_other + template + struct geocent_other : public detail::geocent::base_geocent_other { - inline geocent_other(const Parameters& par) : detail::geocent::base_geocent_other(par) + inline geocent_other(const Parameters& par) : detail::geocent::base_geocent_other(par) { detail::geocent::setup_geocent(this->m_par); } @@ -125,27 +138,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::geocent, geocent_other, geocent_other) + // Factory entry(s) - template - class geocent_entry : public detail::factory_entry + template + class geocent_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void geocent_init(detail::base_factory& factory) + template + inline void geocent_init(detail::base_factory& factory) { - factory.add_to_factory("geocent", new geocent_entry); + factory.add_to_factory("geocent", new geocent_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_GEOCENT_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/geos.hpp b/include/boost/geometry/srs/projections/proj/geos.hpp similarity index 71% rename from include/boost/geometry/extensions/gis/projections/proj/geos.hpp rename to include/boost/geometry/srs/projections/proj/geos.hpp index 375998b63c..5ba975d58d 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/geos.hpp +++ b/include/boost/geometry/srs/projections/proj/geos.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -44,50 +48,59 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct geos {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace geos { - + template struct par_geos { - double h; - double radius_p; - double radius_p2; - double radius_p_inv2; - double radius_g; - double radius_g_1; - double C; - std::string sweep_axis; - int flip_axis; + T h; + T radius_p; + T radius_p2; + T radius_p_inv2; + T radius_g; + T radius_g_1; + T C; + std::string sweep_axis; + int flip_axis; }; // template class, using CRTP to implement forward/inverse - template - struct base_geos_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_geos_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_geos m_proj_parm; + par_geos m_proj_parm; inline base_geos_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_forward) ellipsoid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double r, Vx, Vy, Vz, tmp; + CalculationType r, Vx, Vy, Vz, tmp; /* Calculation of geocentric latitude. */ lp_lat = atan (this->m_proj_parm.radius_p2 * tan (lp_lat)); @@ -99,7 +112,7 @@ namespace boost { namespace geometry { namespace projections Vz = r * sin (lp_lat); /* Check visibility. */ if (((this->m_proj_parm.radius_g - Vx) * Vx - Vy * Vy - Vz * Vz * this->m_proj_parm.radius_p_inv2) < 0.) - throw proj_exception();; + BOOST_THROW_EXCEPTION( projection_exception(-20) ); /* Calculation based on view angles from satellite. */ tmp = this->m_proj_parm.radius_g - Vx; if(this->m_proj_parm.flip_axis) @@ -118,7 +131,7 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double Vx, Vy, Vz, a, b, det, k; + CalculationType Vx, Vy, Vz, a, b, det, k; /* Setting three components of vector from satellite to position.*/ Vx = -1.0; @@ -136,7 +149,8 @@ namespace boost { namespace geometry { namespace projections a = Vz / this->m_proj_parm.radius_p; a = Vy * Vy + a * a + Vx * Vx; b = 2 * this->m_proj_parm.radius_g * Vx; - if ((det = (b * b) - 4 * a * this->m_proj_parm.C) < 0.) throw proj_exception();; + if ((det = (b * b) - 4 * a * this->m_proj_parm.C) < 0.) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); /* Calculation of three components of vector from satellite to position.*/ k = (-b - sqrt(det)) / (2. * a); Vx = this->m_proj_parm.radius_g + k * Vx; @@ -156,25 +170,25 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_geos_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_geos_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_geos m_proj_parm; + par_geos m_proj_parm; inline base_geos_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double Vx, Vy, Vz, tmp; + CalculationType Vx, Vy, Vz, tmp; /* Calculation of the three components of the vector from satellite to ** position on earth surface (lon,lat).*/ @@ -183,7 +197,8 @@ namespace boost { namespace geometry { namespace projections Vy = sin (lp_lon) * tmp; Vz = sin (lp_lat); /* Check visibility.*/ - if (((this->m_proj_parm.radius_g - Vx) * Vx - Vy * Vy - Vz * Vz) < 0.) throw proj_exception();; + if (((this->m_proj_parm.radius_g - Vx) * Vx - Vy * Vy - Vz * Vz) < 0.) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); /* Calculation based on view angles from satellite.*/ tmp = this->m_proj_parm.radius_g - Vx; if(this->m_proj_parm.flip_axis) @@ -202,7 +217,7 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double Vx, Vy, Vz, a, b, det, k; + CalculationType Vx, Vy, Vz, a, b, det, k; /* Setting three components of vector from satellite to position.*/ Vx = -1.0; @@ -219,7 +234,8 @@ namespace boost { namespace geometry { namespace projections /* Calculation of terms in cubic equation and determinant.*/ a = Vy * Vy + Vz * Vz + Vx * Vx; b = 2 * this->m_proj_parm.radius_g * Vx; - if ((det = (b * b) - 4 * a * this->m_proj_parm.C) < 0.) throw proj_exception();; + if ((det = (b * b) - 4 * a * this->m_proj_parm.C) < 0.) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); /* Calculation of three components of vector from satellite to position.*/ k = (-b - sqrt(det)) / (2 * a); Vx = this->m_proj_parm.radius_g + k * Vx; @@ -238,26 +254,27 @@ namespace boost { namespace geometry { namespace projections }; // Geostationary Satellite View - template - void setup_geos(Parameters& par, par_geos& proj_parm) + template + void setup_geos(Parameters& par, par_geos& proj_parm) { - if ((proj_parm.h = pj_param(par.params, "dh").f) <= 0.) throw proj_exception(-30); - if (par.phi0) throw proj_exception(-46); - proj_parm.sweep_axis = pj_param(par.params, "ssweep").s; - if (proj_parm.sweep_axis.empty()) - proj_parm.flip_axis = 0; + if ((proj_parm.h = pj_param(par.params, "dh").f) <= 0.) + BOOST_THROW_EXCEPTION( projection_exception(-30) ); + if (par.phi0) + BOOST_THROW_EXCEPTION( projection_exception(-46) ); + proj_parm.sweep_axis = pj_param(par.params, "ssweep").s; + if (proj_parm.sweep_axis.empty()) + proj_parm.flip_axis = 0; + else { + if (proj_parm.sweep_axis[1] != '\0' || + (proj_parm.sweep_axis[0] != 'x' && + proj_parm.sweep_axis[0] != 'y')) + BOOST_THROW_EXCEPTION( projection_exception(-49) ); + if (proj_parm.sweep_axis[0] == 'x') + proj_parm.flip_axis = 1; else - { - if (proj_parm.sweep_axis[1] != '\0' || - (proj_parm.sweep_axis[0] != 'x' && - proj_parm.sweep_axis[0] != 'y')) - throw proj_exception(-49); - if (proj_parm.sweep_axis[0] == 'x') - proj_parm.flip_axis = 1; - else - proj_parm.flip_axis = 0; - } - proj_parm.radius_g_1 = proj_parm.h / par.a; + proj_parm.flip_axis = 0; + } + proj_parm.radius_g_1 = proj_parm.h / par.a; proj_parm.radius_g = 1. + proj_parm.radius_g_1; proj_parm.C = proj_parm.radius_g * proj_parm.radius_g - 1.0; if (par.es) { @@ -269,7 +286,7 @@ namespace boost { namespace geometry { namespace projections } } - }} // namespace detail::geos + }} // namespace detail::geos #endif // doxygen /*! @@ -288,10 +305,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_geos.gif */ - template - struct geos_ellipsoid : public detail::geos::base_geos_ellipsoid + template + struct geos_ellipsoid : public detail::geos::base_geos_ellipsoid { - inline geos_ellipsoid(const Parameters& par) : detail::geos::base_geos_ellipsoid(par) + inline geos_ellipsoid(const Parameters& par) : detail::geos::base_geos_ellipsoid(par) { detail::geos::setup_geos(this->m_par, this->m_proj_parm); } @@ -313,10 +330,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_geos.gif */ - template - struct geos_spheroid : public detail::geos::base_geos_spheroid + template + struct geos_spheroid : public detail::geos::base_geos_spheroid { - inline geos_spheroid(const Parameters& par) : detail::geos::base_geos_spheroid(par) + inline geos_spheroid(const Parameters& par) : detail::geos::base_geos_spheroid(par) { detail::geos::setup_geos(this->m_par, this->m_proj_parm); } @@ -326,30 +343,35 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::geos, geos_spheroid, geos_ellipsoid) + // Factory entry(s) - template - class geos_entry : public detail::factory_entry + template + class geos_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { if (par.es) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); else - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void geos_init(detail::base_factory& factory) + template + inline void geos_init(detail::base_factory& factory) { - factory.add_to_factory("geos", new geos_entry); + factory.add_to_factory("geos", new geos_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_GEOS_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/gins8.hpp b/include/boost/geometry/srs/projections/proj/gins8.hpp similarity index 63% rename from include/boost/geometry/extensions/gis/projections/proj/gins8.hpp rename to include/boost/geometry/srs/projections/proj/gins8.hpp index 96de4cb90d..9e83c88193 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gins8.hpp +++ b/include/boost/geometry/srs/projections/proj/gins8.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,12 +41,21 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct gins8 {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gins8 @@ -50,27 +63,32 @@ namespace boost { namespace geometry { namespace projections static const double Cl = 0.000952426; static const double Cp = 0.162388; - static const double C12 = 0.08333333333333333; + //static const double C12 = 0.08333333333333333; + + template + inline T C12() { return 0.083333333333333333333333333333333333; } // template class, using CRTP to implement forward/inverse - template - struct base_gins8_spheroid : public base_t_f, - Geographic, Cartesian, Parameters> + template + struct base_gins8_spheroid : public base_t_f, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_gins8_spheroid(const Parameters& par) - : base_t_f, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_f, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double t = lp_lat * lp_lat; + static const CalculationType C12 = gins8::C12(); + + CalculationType t = lp_lat * lp_lat; xy_y = lp_lat * (1. + t * C12); xy_x = lp_lon * (1. - Cp * t); @@ -92,7 +110,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::gins8 + }} // namespace detail::gins8 #endif // doxygen /*! @@ -108,10 +126,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_gins8.gif */ - template - struct gins8_spheroid : public detail::gins8::base_gins8_spheroid + template + struct gins8_spheroid : public detail::gins8::base_gins8_spheroid { - inline gins8_spheroid(const Parameters& par) : detail::gins8::base_gins8_spheroid(par) + inline gins8_spheroid(const Parameters& par) : detail::gins8::base_gins8_spheroid(par) { detail::gins8::setup_gins8(this->m_par); } @@ -121,27 +139,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::gins8, gins8_spheroid, gins8_spheroid) + // Factory entry(s) - template - class gins8_entry : public detail::factory_entry + template + class gins8_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_f, CalculationType, Parameters>(par); } }; - template - inline void gins8_init(detail::base_factory& factory) + template + inline void gins8_init(detail::base_factory& factory) { - factory.add_to_factory("gins8", new gins8_entry); + factory.add_to_factory("gins8", new gins8_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_GINS8_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/gn_sinu.hpp b/include/boost/geometry/srs/projections/proj/gn_sinu.hpp similarity index 62% rename from include/boost/geometry/extensions/gis/projections/proj/gn_sinu.hpp rename to include/boost/geometry/srs/projections/proj/gn_sinu.hpp index dc585bd5b0..4dfe5ddbd1 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gn_sinu.hpp +++ b/include/boost/geometry/srs/projections/proj/gn_sinu.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,14 +43,26 @@ #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct gn_sinu {}; + struct sinu {}; + struct eck6 {}; + struct mbtfps {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gn_sinu @@ -56,34 +72,35 @@ namespace boost { namespace geometry { namespace projections static const int MAX_ITER = 8; static const double LOOP_TOL = 1e-7; + template struct par_gn_sinu { - double en[EN_SIZE]; - double m, n, C_x, C_y; + T en[EN_SIZE]; + T m, n, C_x, C_y; }; /* Ellipsoidal Sinusoidal only */ // template class, using CRTP to implement forward/inverse - template - struct base_gn_sinu_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_gn_sinu_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_gn_sinu m_proj_parm; + par_gn_sinu m_proj_parm; inline base_gn_sinu_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_forward) ellipsoid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double s, c; + CalculationType s, c; xy_y = pj_mlfn(lp_lat, s = sin(lp_lat), c = cos(lp_lat), this->m_proj_parm.en); xy_x = lp_lon * c / sqrt(1. - this->m_par.es * s * s); @@ -93,14 +110,17 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double s; + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType s; - if ((s = fabs(lp_lat = pj_inv_mlfn(xy_y, this->m_par.es, this->m_proj_parm.en))) < geometry::math::half_pi()) { + if ((s = fabs(lp_lat = pj_inv_mlfn(xy_y, this->m_par.es, this->m_proj_parm.en))) < HALFPI) { s = sin(lp_lat); lp_lon = xy_x * sqrt(1. - this->m_par.es * s * s) / cos(lp_lat); - } else if ((s - EPS10) < geometry::math::half_pi()) + } else if ((s - EPS10) < HALFPI) lp_lon = 0.; - else throw proj_exception();; + else + BOOST_THROW_EXCEPTION( projection_exception(-20) ); } /* General spherical sinusoidals */ @@ -112,19 +132,19 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_gn_sinu_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_gn_sinu_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_gn_sinu m_proj_parm; + par_gn_sinu m_proj_parm; inline base_gn_sinu_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) sphere // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -133,7 +153,7 @@ namespace boost { namespace geometry { namespace projections if (!this->m_proj_parm.m) lp_lat = this->m_proj_parm.n != 1. ? aasin(this->m_proj_parm.n * sin(lp_lat)): lp_lat; else { - double k, V; + CalculationType k, V; int i; k = this->m_proj_parm.n * sin(lp_lat); @@ -144,7 +164,7 @@ namespace boost { namespace geometry { namespace projections break; } if (!i) - throw proj_exception(); + BOOST_THROW_EXCEPTION( projection_exception(-20) ); } xy_x = this->m_proj_parm.C_x * lp_lon * (this->m_proj_parm.m + cos(lp_lat)); xy_y = this->m_proj_parm.C_y * lp_lat; @@ -167,8 +187,8 @@ namespace boost { namespace geometry { namespace projections }; - template - void setup(Parameters& par, par_gn_sinu& proj_parm) + template + void setup(Parameters& par, par_gn_sinu& proj_parm) { par.es = 0; proj_parm.C_x = (proj_parm.C_y = sqrt((proj_parm.m + 1.) / proj_parm.n))/(proj_parm.m + 1.); @@ -176,23 +196,23 @@ namespace boost { namespace geometry { namespace projections // General Sinusoidal Series - template - void setup_gn_sinu(Parameters& par, par_gn_sinu& proj_parm) + template + void setup_gn_sinu(Parameters& par, par_gn_sinu& proj_parm) { if (pj_param(par.params, "tn").i && pj_param(par.params, "tm").i) { proj_parm.n = pj_param(par.params, "dn").f; proj_parm.m = pj_param(par.params, "dm").f; } else - throw proj_exception(-99); + BOOST_THROW_EXCEPTION( projection_exception(-99) ); setup(par, proj_parm); } // Sinusoidal (Sanson-Flamsteed) - template - void setup_sinu(Parameters& par, par_gn_sinu& proj_parm) + template + void setup_sinu(Parameters& par, par_gn_sinu& proj_parm) { if (!pj_enfn(par.es, proj_parm.en)) - throw proj_exception(0); + BOOST_THROW_EXCEPTION( projection_exception(0) ); if (par.es) { } else { proj_parm.n = 1.; @@ -202,8 +222,8 @@ namespace boost { namespace geometry { namespace projections } // Eckert VI - template - void setup_eck6(Parameters& par, par_gn_sinu& proj_parm) + template + void setup_eck6(Parameters& par, par_gn_sinu& proj_parm) { proj_parm.m = 1.; proj_parm.n = 2.570796326794896619231321691; @@ -211,15 +231,15 @@ namespace boost { namespace geometry { namespace projections } // McBryde-Thomas Flat-Polar Sinusoidal - template - void setup_mbtfps(Parameters& par, par_gn_sinu& proj_parm) + template + void setup_mbtfps(Parameters& par, par_gn_sinu& proj_parm) { proj_parm.m = 0.5; proj_parm.n = 1.785398163397448309615660845; setup(par, proj_parm); } - }} // namespace detail::gn_sinu + }} // namespace detail::gn_sinu #endif // doxygen /*! @@ -237,10 +257,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_gn_sinu.gif */ - template - struct gn_sinu_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid + template + struct gn_sinu_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid { - inline gn_sinu_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) + inline gn_sinu_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) { detail::gn_sinu::setup_gn_sinu(this->m_par, this->m_proj_parm); } @@ -259,10 +279,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_sinu.gif */ - template - struct sinu_ellipsoid : public detail::gn_sinu::base_gn_sinu_ellipsoid + template + struct sinu_ellipsoid : public detail::gn_sinu::base_gn_sinu_ellipsoid { - inline sinu_ellipsoid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_ellipsoid(par) + inline sinu_ellipsoid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_ellipsoid(par) { detail::gn_sinu::setup_sinu(this->m_par, this->m_proj_parm); } @@ -281,10 +301,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_sinu.gif */ - template - struct sinu_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid + template + struct sinu_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid { - inline sinu_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) + inline sinu_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) { detail::gn_sinu::setup_sinu(this->m_par, this->m_proj_parm); } @@ -302,10 +322,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_eck6.gif */ - template - struct eck6_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid + template + struct eck6_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid { - inline eck6_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) + inline eck6_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) { detail::gn_sinu::setup_eck6(this->m_par, this->m_proj_parm); } @@ -323,10 +343,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_mbtfps.gif */ - template - struct mbtfps_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid + template + struct mbtfps_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid { - inline mbtfps_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) + inline mbtfps_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) { detail::gn_sinu::setup_mbtfps(this->m_par, this->m_proj_parm); } @@ -336,63 +356,71 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::gn_sinu, gn_sinu_spheroid, gn_sinu_spheroid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::sinu, sinu_spheroid, sinu_ellipsoid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::eck6, eck6_spheroid, eck6_spheroid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::mbtfps, mbtfps_spheroid, mbtfps_spheroid) + // Factory entry(s) - template - class gn_sinu_entry : public detail::factory_entry + template + class gn_sinu_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - class sinu_entry : public detail::factory_entry + template + class sinu_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { if (par.es) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); else - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - class eck6_entry : public detail::factory_entry + template + class eck6_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - class mbtfps_entry : public detail::factory_entry + template + class mbtfps_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void gn_sinu_init(detail::base_factory& factory) + template + inline void gn_sinu_init(detail::base_factory& factory) { - factory.add_to_factory("gn_sinu", new gn_sinu_entry); - factory.add_to_factory("sinu", new sinu_entry); - factory.add_to_factory("eck6", new eck6_entry); - factory.add_to_factory("mbtfps", new mbtfps_entry); + factory.add_to_factory("gn_sinu", new gn_sinu_entry); + factory.add_to_factory("sinu", new sinu_entry); + factory.add_to_factory("eck6", new eck6_entry); + factory.add_to_factory("mbtfps", new mbtfps_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_GN_SINU_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/gnom.hpp b/include/boost/geometry/srs/projections/proj/gnom.hpp similarity index 71% rename from include/boost/geometry/extensions/gis/projections/proj/gnom.hpp rename to include/boost/geometry/srs/projections/proj/gnom.hpp index ea771b2721..f2985dd28d 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gnom.hpp +++ b/include/boost/geometry/srs/projections/proj/gnom.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -40,12 +44,21 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct gnom {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gnom @@ -57,33 +70,34 @@ namespace boost { namespace geometry { namespace projections static const int EQUIT = 2; static const int OBLIQ = 3; + template struct par_gnom { - double sinph0; - double cosph0; - int mode; + T sinph0; + T cosph0; + int mode; }; // template class, using CRTP to implement forward/inverse - template - struct base_gnom_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_gnom_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_gnom m_proj_parm; + par_gnom m_proj_parm; inline base_gnom_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double coslam, cosphi, sinphi; + CalculationType coslam, cosphi, sinphi; sinphi = sin(lp_lat); cosphi = cos(lp_lat); @@ -102,7 +116,8 @@ namespace boost { namespace geometry { namespace projections xy_y = sinphi; break; } - if (xy_y <= EPS10) throw proj_exception();; + if (xy_y <= EPS10) + BOOST_THROW_EXCEPTION( projection_exception(-20) ); xy_x = (xy_y = 1. / xy_y) * cosphi * sin(lp_lon); switch (this->m_proj_parm.mode) { case EQUIT: @@ -123,7 +138,9 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double rh, cosz, sinz; + static const CalculationType HALFPI = detail::HALFPI(); + + CalculationType rh, cosz, sinz; rh = boost::math::hypot(xy_x, xy_y); sinz = sin(lp_lat = atan(rh)); @@ -136,7 +153,7 @@ namespace boost { namespace geometry { namespace projections case OBLIQ: lp_lat = cosz * this->m_proj_parm.sinph0 + xy_y * sinz * this->m_proj_parm.cosph0 / rh; if (fabs(lp_lat) >= 1.) - lp_lat = lp_lat > 0. ? geometry::math::half_pi() : - geometry::math::half_pi(); + lp_lat = lp_lat > 0. ? HALFPI : -HALFPI; else lp_lat = asin(lp_lat); xy_y = (cosz - this->m_proj_parm.sinph0 * sin(lp_lat)) * rh; @@ -145,17 +162,17 @@ namespace boost { namespace geometry { namespace projections case EQUIT: lp_lat = xy_y * sinz / rh; if (fabs(lp_lat) >= 1.) - lp_lat = lp_lat > 0. ? geometry::math::half_pi() : - geometry::math::half_pi(); + lp_lat = lp_lat > 0. ? HALFPI : -HALFPI; else lp_lat = asin(lp_lat); xy_y = cosz * rh; xy_x *= sinz; break; case S_POLE: - lp_lat -= geometry::math::half_pi(); + lp_lat -= HALFPI; break; case N_POLE: - lp_lat = geometry::math::half_pi() - lp_lat; + lp_lat = HALFPI - lp_lat; xy_y = -xy_y; break; } @@ -171,10 +188,12 @@ namespace boost { namespace geometry { namespace projections }; // Gnomonic - template - void setup_gnom(Parameters& par, par_gnom& proj_parm) + template + void setup_gnom(Parameters& par, par_gnom& proj_parm) { - if (fabs(fabs(par.phi0) - geometry::math::half_pi()) < EPS10) + static const T HALFPI = detail::HALFPI(); + + if (fabs(fabs(par.phi0) - HALFPI) < EPS10) proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE; else if (fabs(par.phi0) < EPS10) proj_parm.mode = EQUIT; @@ -186,7 +205,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::gnom + }} // namespace detail::gnom #endif // doxygen /*! @@ -201,10 +220,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_gnom.gif */ - template - struct gnom_spheroid : public detail::gnom::base_gnom_spheroid + template + struct gnom_spheroid : public detail::gnom::base_gnom_spheroid { - inline gnom_spheroid(const Parameters& par) : detail::gnom::base_gnom_spheroid(par) + inline gnom_spheroid(const Parameters& par) : detail::gnom::base_gnom_spheroid(par) { detail::gnom::setup_gnom(this->m_par, this->m_proj_parm); } @@ -214,27 +233,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::gnom, gnom_spheroid, gnom_spheroid) + // Factory entry(s) - template - class gnom_entry : public detail::factory_entry + template + class gnom_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void gnom_init(detail::base_factory& factory) + template + inline void gnom_init(detail::base_factory& factory) { - factory.add_to_factory("gnom", new gnom_entry); + factory.add_to_factory("gnom", new gnom_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_GNOM_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/goode.hpp b/include/boost/geometry/srs/projections/proj/goode.hpp similarity index 64% rename from include/boost/geometry/extensions/gis/projections/proj/goode.hpp rename to include/boost/geometry/srs/projections/proj/goode.hpp index 9ce3ee78c5..4d8a502dd6 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/goode.hpp +++ b/include/boost/geometry/srs/projections/proj/goode.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,14 +41,23 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct goode {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace goode @@ -53,29 +66,29 @@ namespace boost { namespace geometry { namespace projections static const double Y_COR = 0.05280; static const double PHI_LIM = .71093078197902358062; - template + template struct par_goode { - sinu_ellipsoid sinu; - moll_spheroid moll; + sinu_ellipsoid sinu; + moll_spheroid moll; par_goode(const Parameters& par) : sinu(par), moll(par) {} }; // template class, using CRTP to implement forward/inverse - template - struct base_goode_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_goode_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_goode m_proj_parm; + par_goode m_proj_parm; inline base_goode_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par), m_proj_parm(par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par), m_proj_parm(par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -109,13 +122,13 @@ namespace boost { namespace geometry { namespace projections }; // Goode Homolosine - template - void setup_goode(Parameters& par, par_goode& proj_parm) + template + void setup_goode(Parameters& par, par_goode& proj_parm) { par.es = 0.; } - }} // namespace detail::goode + }} // namespace detail::goode #endif // doxygen /*! @@ -130,10 +143,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_goode.gif */ - template - struct goode_spheroid : public detail::goode::base_goode_spheroid + template + struct goode_spheroid : public detail::goode::base_goode_spheroid { - inline goode_spheroid(const Parameters& par) : detail::goode::base_goode_spheroid(par) + inline goode_spheroid(const Parameters& par) : detail::goode::base_goode_spheroid(par) { detail::goode::setup_goode(this->m_par, this->m_proj_parm); } @@ -143,27 +156,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::goode, goode_spheroid, goode_spheroid) + // Factory entry(s) - template - class goode_entry : public detail::factory_entry + template + class goode_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void goode_init(detail::base_factory& factory) + template + inline void goode_init(detail::base_factory& factory) { - factory.add_to_factory("goode", new goode_entry); + factory.add_to_factory("goode", new goode_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_GOODE_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/gstmerc.hpp b/include/boost/geometry/srs/projections/proj/gstmerc.hpp similarity index 72% rename from include/boost/geometry/extensions/gis/projections/proj/gstmerc.hpp rename to include/boost/geometry/srs/projections/proj/gstmerc.hpp index b73ef80a22..f2596323a1 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gstmerc.hpp +++ b/include/boost/geometry/srs/projections/proj/gstmerc.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,50 +41,59 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct gstmerc {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gstmerc { - + template struct par_gstmerc { - double lamc; - double phic; - double c; - double n1; - double n2; - double XS; - double YS; + T lamc; + T phic; + T c; + T n1; + T n2; + T XS; + T YS; }; // template class, using CRTP to implement forward/inverse - template - struct base_gstmerc_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_gstmerc_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_gstmerc m_proj_parm; + par_gstmerc m_proj_parm; inline base_gstmerc_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double L, Ls, sinLs1, Ls1; + CalculationType L, Ls, sinLs1, Ls1; L= this->m_proj_parm.n1*lp_lon; Ls= this->m_proj_parm.c+this->m_proj_parm.n1*log(pj_tsfn(-1.0*lp_lat,-1.0*sin(lp_lat),this->m_par.e)); sinLs1= sin(L)/cosh(Ls); @@ -94,7 +107,7 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double L, LC, sinC; + CalculationType L, LC, sinC; L= atan(sinh((xy_x*this->m_par.a - this->m_proj_parm.XS)/this->m_proj_parm.n2)/cos((xy_y*this->m_par.a - this->m_proj_parm.YS)/this->m_proj_parm.n2)); sinC= sin((xy_y*this->m_par.a - this->m_proj_parm.YS)/this->m_proj_parm.n2)/cosh((xy_x*this->m_par.a - this->m_proj_parm.XS)/this->m_proj_parm.n2); LC= log(pj_tsfn(-1.0*asin(sinC),0.0,0.0)); @@ -111,8 +124,8 @@ namespace boost { namespace geometry { namespace projections }; // Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion) - template - void setup_gstmerc(Parameters& par, par_gstmerc& proj_parm) + template + void setup_gstmerc(Parameters& par, par_gstmerc& proj_parm) { proj_parm.lamc= par.lam0; proj_parm.n1= sqrt(1.0+par.es*pow(cos(par.phi0),4.0)/(1.0-par.es)); @@ -125,7 +138,7 @@ namespace boost { namespace geometry { namespace projections /*fprintf(stderr,"a (m) =%16.4f\ne =%16.13f\nl0(rad)=%16.13f\np0(rad)=%16.13f\nk0 =%16.4f\nX0 (m)=%16.4f\nY0 (m)=%16.4f\n\nlC(rad)=%16.13f\npC(rad)=%16.13f\nc =%16.13f\nn1 =%16.13f\nn2 (m) =%16.4f\nXS (m) =%16.4f\nYS (m) =%16.4f\n", par.a, par.e, par.lam0, par.phi0, par.k0, par.x0, par.y0, proj_parm.lamc, proj_parm.phic, proj_parm.c, proj_parm.n1, proj_parm.n2, proj_parm.XS +par.x0, proj_parm.YS + par.y0);*/ } - }} // namespace detail::gstmerc + }} // namespace detail::gstmerc #endif // doxygen /*! @@ -145,10 +158,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_gstmerc.gif */ - template - struct gstmerc_spheroid : public detail::gstmerc::base_gstmerc_spheroid + template + struct gstmerc_spheroid : public detail::gstmerc::base_gstmerc_spheroid { - inline gstmerc_spheroid(const Parameters& par) : detail::gstmerc::base_gstmerc_spheroid(par) + inline gstmerc_spheroid(const Parameters& par) : detail::gstmerc::base_gstmerc_spheroid(par) { detail::gstmerc::setup_gstmerc(this->m_par, this->m_proj_parm); } @@ -158,27 +171,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::gstmerc, gstmerc_spheroid, gstmerc_spheroid) + // Factory entry(s) - template - class gstmerc_entry : public detail::factory_entry + template + class gstmerc_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void gstmerc_init(detail::base_factory& factory) + template + inline void gstmerc_init(detail::base_factory& factory) { - factory.add_to_factory("gstmerc", new gstmerc_entry); + factory.add_to_factory("gstmerc", new gstmerc_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_GSTMERC_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/hammer.hpp b/include/boost/geometry/srs/projections/proj/hammer.hpp similarity index 55% rename from include/boost/geometry/extensions/gis/projections/proj/hammer.hpp rename to include/boost/geometry/srs/projections/proj/hammer.hpp index aa61e771d5..ab621bdfb8 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/hammer.hpp +++ b/include/boost/geometry/srs/projections/proj/hammer.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -37,49 +41,77 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct hammer {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace hammer { + static const double EPS = 1.0e-10; + template struct par_hammer { - double w; - double m, rm; + T w; + T m, rm; }; // template class, using CRTP to implement forward/inverse - template - struct base_hammer_spheroid : public base_t_f, - Geographic, Cartesian, Parameters> + template + struct base_hammer_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_hammer m_proj_parm; + par_hammer m_proj_parm; inline base_hammer_spheroid(const Parameters& par) - : base_t_f, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double cosphi, d; + CalculationType cosphi, d; d = sqrt(2./(1. + (cosphi = cos(lp_lat)) * cos(lp_lon *= this->m_proj_parm.w))); xy_x = this->m_proj_parm.m * d * cosphi * sin(lp_lon); xy_y = this->m_proj_parm.rm * d * sin(lp_lat); } + // INVERSE(s_inverse) spheroid + // Project coordinates from cartesian (x, y) to geographic (lon, lat) + inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const + { + CalculationType z; + + z = sqrt(1. - 0.25*this->m_proj_parm.w*this->m_proj_parm.w*xy_x*xy_x - 0.25*xy_y*xy_y); + if (geometry::math::abs(2.*z*z-1.) < EPS) { + lp_lon = HUGE_VAL; + lp_lat = HUGE_VAL; + BOOST_THROW_EXCEPTION( projection_exception(-14) ); + } else { + lp_lon = aatan2(this->m_proj_parm.w * xy_x * z,2. * z * z - 1)/this->m_proj_parm.w; + lp_lat = aasin(z * xy_y); + } + } + static inline std::string get_name() { return "hammer_spheroid"; @@ -88,15 +120,17 @@ namespace boost { namespace geometry { namespace projections }; // Hammer & Eckert-Greifendorff - template - void setup_hammer(Parameters& par, par_hammer& proj_parm) + template + void setup_hammer(Parameters& par, par_hammer& proj_parm) { if (pj_param(par.params, "tW").i) { - if ((proj_parm.w = fabs(pj_param(par.params, "dW").f)) <= 0.) throw proj_exception(-27); + if ((proj_parm.w = fabs(pj_param(par.params, "dW").f)) <= 0.) + BOOST_THROW_EXCEPTION( projection_exception(-27) ); } else proj_parm.w = .5; if (pj_param(par.params, "tM").i) { - if ((proj_parm.m = fabs(pj_param(par.params, "dM").f)) <= 0.) throw proj_exception(-27); + if ((proj_parm.m = fabs(pj_param(par.params, "dM").f)) <= 0.) + BOOST_THROW_EXCEPTION( projection_exception(-27) ); } else proj_parm.m = 1.; proj_parm.rm = 1. / proj_parm.m; @@ -104,7 +138,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::hammer + }} // namespace detail::hammer #endif // doxygen /*! @@ -123,10 +157,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_hammer.gif */ - template - struct hammer_spheroid : public detail::hammer::base_hammer_spheroid + template + struct hammer_spheroid : public detail::hammer::base_hammer_spheroid { - inline hammer_spheroid(const Parameters& par) : detail::hammer::base_hammer_spheroid(par) + inline hammer_spheroid(const Parameters& par) : detail::hammer::base_hammer_spheroid(par) { detail::hammer::setup_hammer(this->m_par, this->m_proj_parm); } @@ -136,27 +170,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::hammer, hammer_spheroid, hammer_spheroid) + // Factory entry(s) - template - class hammer_entry : public detail::factory_entry + template + class hammer_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_f, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void hammer_init(detail::base_factory& factory) + template + inline void hammer_init(detail::base_factory& factory) { - factory.add_to_factory("hammer", new hammer_entry); + factory.add_to_factory("hammer", new hammer_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_HAMMER_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/hatano.hpp b/include/boost/geometry/srs/projections/proj/hatano.hpp similarity index 65% rename from include/boost/geometry/extensions/gis/projections/proj/hatano.hpp rename to include/boost/geometry/srs/projections/proj/hatano.hpp index 3c66259335..201c05e4a9 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/hatano.hpp +++ b/include/boost/geometry/srs/projections/proj/hatano.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -39,12 +43,21 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct hatano {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace hatano @@ -65,24 +78,24 @@ namespace boost { namespace geometry { namespace projections static const double RXC = 1.17647058823529411764; // template class, using CRTP to implement forward/inverse - template - struct base_hatano_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_hatano_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; inline base_hatano_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_forward) spheroid // Project coordinates from geographic (lon, lat) to cartesian (x, y) inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { - double th1, c; + CalculationType th1, c; int i; c = sin(lp_lat) * (lp_lat < 0. ? CS_ : CN_); @@ -98,22 +111,31 @@ namespace boost { namespace geometry { namespace projections // Project coordinates from cartesian (x, y) to geographic (lon, lat) inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { - double th; + CalculationType th; th = xy_y * ( xy_y < 0. ? RYCS : RYCN); - if (fabs(th) > 1.) - if (fabs(th) > ONETOL) throw proj_exception(); - else th = th > 0. ? geometry::math::half_pi() : - geometry::math::half_pi(); - else + if (fabs(th) > 1.) { + if (fabs(th) > ONETOL) { + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + } else { + th = th > 0. ? geometry::math::half_pi() : - geometry::math::half_pi(); + } + } else { th = asin(th); + } + lp_lon = RXC * xy_x / cos(th); th += th; lp_lat = (th + sin(th)) * (xy_y < 0. ? RCS : RCN); - if (fabs(lp_lat) > 1.) - if (fabs(lp_lat) > ONETOL) throw proj_exception(); - else lp_lat = lp_lat > 0. ? geometry::math::half_pi() : - geometry::math::half_pi(); - else + if (fabs(lp_lat) > 1.) { + if (fabs(lp_lat) > ONETOL) { + BOOST_THROW_EXCEPTION( projection_exception(-20) ); + } else { + lp_lat = lp_lat > 0. ? geometry::math::half_pi() : - geometry::math::half_pi(); + } + } else { lp_lat = asin(lp_lat); + } } static inline std::string get_name() @@ -130,7 +152,7 @@ namespace boost { namespace geometry { namespace projections par.es = 0.; } - }} // namespace detail::hatano + }} // namespace detail::hatano #endif // doxygen /*! @@ -145,10 +167,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_hatano.gif */ - template - struct hatano_spheroid : public detail::hatano::base_hatano_spheroid + template + struct hatano_spheroid : public detail::hatano::base_hatano_spheroid { - inline hatano_spheroid(const Parameters& par) : detail::hatano::base_hatano_spheroid(par) + inline hatano_spheroid(const Parameters& par) : detail::hatano::base_hatano_spheroid(par) { detail::hatano::setup_hatano(this->m_par); } @@ -158,27 +180,32 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::hatano, hatano_spheroid, hatano_spheroid) + // Factory entry(s) - template - class hatano_entry : public detail::factory_entry + template + class hatano_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void hatano_init(detail::base_factory& factory) + template + inline void hatano_init(detail::base_factory& factory) { - factory.add_to_factory("hatano", new hatano_entry); + factory.add_to_factory("hatano", new hatano_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_HATANO_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/healpix.hpp b/include/boost/geometry/srs/projections/proj/healpix.hpp similarity index 61% rename from include/boost/geometry/extensions/gis/projections/proj/healpix.hpp rename to include/boost/geometry/srs/projections/proj/healpix.hpp index aaa1af2d13..d6a61a6592 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/healpix.hpp +++ b/include/boost/geometry/srs/projections/proj/healpix.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -47,14 +51,24 @@ #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ -namespace boost { namespace geometry { namespace projections +namespace srs { namespace proj +{ + struct healpix {}; + struct rhealpix {}; + +}} //namespace srs::proj + +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace healpix @@ -62,12 +76,13 @@ namespace boost { namespace geometry { namespace projections static const double EPS = 1e-15; + template struct par_healpix { int north_square; int south_square; - double qp; - double apa[APA_SIZE]; + T qp; + T apa[APA_SIZE]; }; /* Matrix for counterclockwise rotation by pi/2: */ @@ -76,14 +91,18 @@ namespace boost { namespace geometry { namespace projections /* Identity matrix */ /* IDENT, R1, R2, R3, R1 inverse, R2 inverse, R3 inverse:*/ /* Fuzz to handle rounding errors: */ - typedef struct { + template + struct CapMap + { int cn; /* An integer 0--3 indicating the position of the polar cap. */ - double x, y; /* Coordinates of the pole point (point of most extreme latitude on the polar caps). */ + T x, y; /* Coordinates of the pole point (point of most extreme latitude on the polar caps). */ enum Region {north, south, equatorial} region; - } CapMap; - typedef struct { - double x, y; - } Point; + }; + template + struct Point + { + T x, y; + }; static double rot[7][2][2] = {{{1, 0},{0, 1}}, {{ 0,-1},{ 1, 0}}, {{-1, 0},{ 0,-1}}, {{ 0, 1},{-1, 0}}, {{ 0, 1},{-1, 0}}, {{-1, 0},{ 0,-1}}, {{ 0,-1},{ 1, 0}}}; /** @@ -91,14 +110,17 @@ namespace boost { namespace geometry { namespace projections * @param v the parameter whose sign is returned. * @return 1 for positive number, -1 for negative, and 0 for zero. **/ - inline double pj_sign (double v) { + template + inline T pj_sign (T const& v) + { return v > 0 ? 1 : (v < 0 ? -1 : 0); } /** * Return the index of the matrix in {{{1, 0},{0, 1}}, {{ 0,-1},{ 1, 0}}, {{-1, 0},{ 0,-1}}, {{ 0, 1},{-1, 0}}, {{ 0, 1},{-1, 0}}, {{-1, 0},{ 0,-1}}, {{ 0,-1},{ 1, 0}}}. * @param index ranges from -3 to 3. */ - static int get_rotate_index(int index) { + static int get_rotate_index(int index) + { switch(index) { case 0: return 0; @@ -124,11 +146,13 @@ namespace boost { namespace geometry { namespace projections * @param nvert the number of vertices in the polygon. * @param vert the (x, y)-coordinates of the polygon's vertices **/ - static int pnpoly(int nvert, double vert[][2], double testx, double testy) { + template + inline int pnpoly(int nvert, T vert[][2], T const& testx, T const& testy) + { int i, c = 0; int counter = 0; - double xinters; - Point p1, p2; + T xinters; + Point p1, p2; /* Check for boundrary cases */ for (i = 0; i < nvert; i++) { if (testx == vert[i][0] && testy == vert[i][1]) { @@ -168,44 +192,48 @@ namespace boost { namespace geometry { namespace projections * @param north_square the position of the north polar square (rHEALPix only) * @param south_square the position of the south polar square (rHEALPix only) **/ - inline int in_image(double x, double y, int proj, int north_square, int south_square) { + template + inline int in_image(T const& x, T const& y, int proj, int north_square, int south_square) + { + static const T ONEPI = detail::ONEPI(); + if (proj == 0) { - double healpixVertsJit[][2] = { - {-1.0*geometry::math::pi()- EPS, geometry::math::pi()/4.0}, - {-3.0*geometry::math::pi()/4.0, geometry::math::pi()/2.0 + EPS}, - {-1.0*geometry::math::pi()/2.0, geometry::math::pi()/4.0 + EPS}, - {-1.0*geometry::math::pi()/4.0, geometry::math::pi()/2.0 + EPS}, - {0.0, geometry::math::pi()/4.0 + EPS}, - {geometry::math::pi()/4.0, geometry::math::pi()/2.0 + EPS}, - {geometry::math::pi()/2.0, geometry::math::pi()/4.0 + EPS}, - {3.0*geometry::math::pi()/4.0, geometry::math::pi()/2.0 + EPS}, - {geometry::math::pi()+ EPS, geometry::math::pi()/4.0}, - {geometry::math::pi()+ EPS, -1.0*geometry::math::pi()/4.0}, - {3.0*geometry::math::pi()/4.0, -1.0*geometry::math::pi()/2.0 - EPS}, - {geometry::math::pi()/2.0, -1.0*geometry::math::pi()/4.0 - EPS}, - {geometry::math::pi()/4.0, -1.0*geometry::math::pi()/2.0 - EPS}, - {0.0, -1.0*geometry::math::pi()/4.0 - EPS}, - {-1.0*geometry::math::pi()/4.0, -1.0*geometry::math::pi()/2.0 - EPS}, - {-1.0*geometry::math::pi()/2.0, -1.0*geometry::math::pi()/4.0 - EPS}, - {-3.0*geometry::math::pi()/4.0, -1.0*geometry::math::pi()/2.0 - EPS}, - {-1.0*geometry::math::pi() - EPS, -1.0*geometry::math::pi()/4.0} + T healpixVertsJit[][2] = { + {-1.0*ONEPI- EPS, ONEPI/4.0}, + {-3.0*ONEPI/4.0, ONEPI/2.0 + EPS}, + {-1.0*ONEPI/2.0, ONEPI/4.0 + EPS}, + {-1.0*ONEPI/4.0, ONEPI/2.0 + EPS}, + {0.0, ONEPI/4.0 + EPS}, + {ONEPI/4.0, ONEPI/2.0 + EPS}, + {ONEPI/2.0, ONEPI/4.0 + EPS}, + {3.0*ONEPI/4.0, ONEPI/2.0 + EPS}, + {ONEPI+ EPS, ONEPI/4.0}, + {ONEPI+ EPS, -1.0*ONEPI/4.0}, + {3.0*ONEPI/4.0, -1.0*ONEPI/2.0 - EPS}, + {ONEPI/2.0, -1.0*ONEPI/4.0 - EPS}, + {ONEPI/4.0, -1.0*ONEPI/2.0 - EPS}, + {0.0, -1.0*ONEPI/4.0 - EPS}, + {-1.0*ONEPI/4.0, -1.0*ONEPI/2.0 - EPS}, + {-1.0*ONEPI/2.0, -1.0*ONEPI/4.0 - EPS}, + {-3.0*ONEPI/4.0, -1.0*ONEPI/2.0 - EPS}, + {-1.0*ONEPI - EPS, -1.0*ONEPI/4.0} }; return pnpoly((int)sizeof(healpixVertsJit)/ sizeof(healpixVertsJit[0]), healpixVertsJit, x, y); } else { - double rhealpixVertsJit[][2] = { - {-1.0*geometry::math::pi() - EPS, geometry::math::pi()/4.0 + EPS}, - {-1.0*geometry::math::pi() + north_square*geometry::math::pi()/2.0- EPS, geometry::math::pi()/4.0 + EPS}, - {-1.0*geometry::math::pi() + north_square*geometry::math::pi()/2.0- EPS, 3*geometry::math::pi()/4.0 + EPS}, - {-1.0*geometry::math::pi() + (north_square + 1.0)*geometry::math::pi()/2.0 + EPS, 3*geometry::math::pi()/4.0 + EPS}, - {-1.0*geometry::math::pi() + (north_square + 1.0)*geometry::math::pi()/2.0 + EPS, geometry::math::pi()/4.0 + EPS}, - {geometry::math::pi() + EPS, geometry::math::pi()/4.0 + EPS}, - {geometry::math::pi() + EPS, -1.0*geometry::math::pi()/4.0 - EPS}, - {-1.0*geometry::math::pi() + (south_square + 1.0)*geometry::math::pi()/2.0 + EPS, -1.0*geometry::math::pi()/4.0 - EPS}, - {-1.0*geometry::math::pi() + (south_square + 1.0)*geometry::math::pi()/2.0 + EPS, -3.0*geometry::math::pi()/4.0 - EPS}, - {-1.0*geometry::math::pi() + south_square*geometry::math::pi()/2.0 - EPS, -3.0*geometry::math::pi()/4.0 - EPS}, - {-1.0*geometry::math::pi() + south_square*geometry::math::pi()/2.0 - EPS, -1.0*geometry::math::pi()/4.0 - EPS}, - {-1.0*geometry::math::pi() - EPS, -1.0*geometry::math::pi()/4.0 - EPS}}; + T rhealpixVertsJit[][2] = { + {-1.0*ONEPI - EPS, ONEPI/4.0 + EPS}, + {-1.0*ONEPI + north_square*ONEPI/2.0- EPS, ONEPI/4.0 + EPS}, + {-1.0*ONEPI + north_square*ONEPI/2.0- EPS, 3*ONEPI/4.0 + EPS}, + {-1.0*ONEPI + (north_square + 1.0)*ONEPI/2.0 + EPS, 3*ONEPI/4.0 + EPS}, + {-1.0*ONEPI + (north_square + 1.0)*ONEPI/2.0 + EPS, ONEPI/4.0 + EPS}, + {ONEPI + EPS, ONEPI/4.0 + EPS}, + {ONEPI + EPS, -1.0*ONEPI/4.0 - EPS}, + {-1.0*ONEPI + (south_square + 1.0)*ONEPI/2.0 + EPS, -1.0*ONEPI/4.0 - EPS}, + {-1.0*ONEPI + (south_square + 1.0)*ONEPI/2.0 + EPS, -3.0*ONEPI/4.0 - EPS}, + {-1.0*ONEPI + south_square*ONEPI/2.0 - EPS, -3.0*ONEPI/4.0 - EPS}, + {-1.0*ONEPI + south_square*ONEPI/2.0 - EPS, -1.0*ONEPI/4.0 - EPS}, + {-1.0*ONEPI - EPS, -1.0*ONEPI/4.0 - EPS}}; return pnpoly((int)sizeof(rhealpixVertsJit)/ sizeof(rhealpixVertsJit[0]), rhealpixVertsJit, x, y); } @@ -215,13 +243,14 @@ namespace boost { namespace geometry { namespace projections * return the approximate latitude of authalic latitude alpha (if inverse=1). * P contains the relavent ellipsoid parameters. **/ - template - double auth_lat(const Parameters& par, const par_healpix& proj_parm, double alpha, int inverse) { + template + inline T auth_lat(const Parameters& par, const par_healpix& proj_parm, T const& alpha, int inverse) + { if (inverse == 0) { /* Authalic latitude. */ - double q = pj_qsfn(sin(alpha), par.e, 1.0 - par.es); - double qp = proj_parm.qp; - double ratio = q/qp; + T q = pj_qsfn(sin(alpha), par.e, 1.0 - par.es); + T qp = proj_parm.qp; + T ratio = q/qp; if (fabsl(ratio) > 1) { /* Rounding error. */ ratio = pj_sign(ratio); @@ -236,53 +265,60 @@ namespace boost { namespace geometry { namespace projections * Return the HEALPix projection of the longitude-latitude point lp on * the unit sphere. **/ - inline void healpix_sphere(double const& lp_lam, double const& lp_phi, double& xy_x, double& xy_y) { - double lam = lp_lam; - double phi = lp_phi; - double phi0 = asin(2.0/3.0); + template + inline void healpix_sphere(T const& lp_lam, T const& lp_phi, T& xy_x, T& xy_y) + { + static const T ONEPI = detail::ONEPI(); + + T lam = lp_lam; + T phi = lp_phi; + T phi0 = asin(T(2.0)/T(3.0)); /* equatorial region */ if ( fabsl(phi) <= phi0) { xy_x = lam; - xy_y = 3.0*geometry::math::pi()/8.0*sin(phi); + xy_y = 3.0*ONEPI/8.0*sin(phi); } else { - double lamc; - double sigma = sqrt(3.0*(1 - fabsl(sin(phi)))); - double cn = floor(2*lam / geometry::math::pi() + 2); + T lamc; + T sigma = sqrt(3.0*(1 - fabsl(sin(phi)))); + T cn = floor(2*lam / ONEPI + 2); if (cn >= 4) { cn = 3; } - lamc = -3*geometry::math::pi()/4 + (geometry::math::pi()/2)*cn; + lamc = -3*ONEPI/4 + (ONEPI/2)*cn; xy_x = lamc + (lam - lamc)*sigma; - xy_y = pj_sign(phi)*geometry::math::pi()/4*(2 - sigma); + xy_y = pj_sign(phi)*ONEPI/4*(2 - sigma); } return; } /** * Return the inverse of healpix_sphere(). **/ - inline void healpix_sphere_inverse(double const& xy_x, double const& xy_y, double& lp_lam, double& lp_phi) { - - double x = xy_x; - double y = xy_y; - double y0 = geometry::math::pi()/4.0; + template + inline void healpix_sphere_inverse(T const& xy_x, T const& xy_y, T& lp_lam, T& lp_phi) + { + static const T ONEPI = detail::ONEPI(); + + T x = xy_x; + T y = xy_y; + T y0 = ONEPI/4.0; /* Equatorial region. */ if (fabsl(y) <= y0) { lp_lam = x; - lp_phi = asin(8.0*y/(3.0*geometry::math::pi())); - } else if (fabsl(y) < geometry::math::pi()/2.0) { - double cn = floor(2.0*x/geometry::math::pi() + 2.0); - double xc, tau; + lp_phi = asin(8.0*y/(3.0*ONEPI)); + } else if (fabsl(y) < ONEPI/2.0) { + T cn = floor(2.0*x/ONEPI + 2.0); + T xc, tau; if (cn >= 4) { cn = 3; } - xc = -3.0*geometry::math::pi()/4.0 + (geometry::math::pi()/2.0)*cn; - tau = 2.0 - 4.0*fabsl(y)/geometry::math::pi(); + xc = -3.0*ONEPI/4.0 + (ONEPI/2.0)*cn; + tau = 2.0 - 4.0*fabsl(y)/ONEPI; lp_lam = xc + (x - xc)/tau; lp_phi = pj_sign(y)*asin(1.0 - pow(tau , 2.0)/3.0); } else { - lp_lam = -1.0*geometry::math::pi(); - lp_phi = pj_sign(y)*geometry::math::pi()/2.0; + lp_lam = -1.0*ONEPI; + lp_phi = pj_sign(y)*ONEPI/2.0; } return; } @@ -290,7 +326,9 @@ namespace boost { namespace geometry { namespace projections * Return the vector sum a + b, where a and b are 2-dimensional vectors. * @param ret holds a + b. **/ - static void vector_add(double a[2], double b[2], double *ret) { + template + inline void vector_add(T a[2], T b[2], T *ret) + { int i; for(i = 0; i < 2; i++) { ret[i] = a[i] + b[i]; @@ -300,7 +338,9 @@ namespace boost { namespace geometry { namespace projections * Return the vector difference a - b, where a and b are 2-dimensional vectors. * @param ret holds a - b. **/ - static void vector_sub(double a[2], double b[2], double*ret) { + template + inline void vector_sub(T a[2], T b[2], T*ret) + { int i; for(i = 0; i < 2; i++) { ret[i] = a[i] - b[i]; @@ -311,7 +351,9 @@ namespace boost { namespace geometry { namespace projections * b is a 2 x 1 matrix. * @param ret holds a*b. **/ - static void dot_product(double a[2][2], double b[2], double *ret) { + template + inline void dot_product(T a[2][2], T b[2], T *ret) + { int i, j; int length = 2; for(i = 0; i < length; i++) { @@ -329,79 +371,83 @@ namespace boost { namespace geometry { namespace projections * If inverse=1, then assume (x,y) lies in the image of the * (north_square, south_square)-rHEALPix projection of the unit sphere. **/ - static CapMap get_cap(double x, double y, int north_square, int south_square, - int inverse) { - CapMap capmap; - double c; + template + inline CapMap get_cap(T x, T const& y, int north_square, int south_square, + int inverse) + { + static const T ONEPI = detail::ONEPI(); + + CapMap capmap; + T c; capmap.x = x; capmap.y = y; if (inverse == 0) { - if (y > geometry::math::pi()/4.0) { - capmap.region = CapMap::north; - c = geometry::math::pi()/2.0; - } else if (y < -1*geometry::math::pi()/4.0) { - capmap.region = CapMap::south; - c = -1*geometry::math::pi()/2.0; + if (y > ONEPI/4.0) { + capmap.region = CapMap::north; + c = ONEPI/2.0; + } else if (y < -1*ONEPI/4.0) { + capmap.region = CapMap::south; + c = -1*ONEPI/2.0; } else { - capmap.region = CapMap::equatorial; + capmap.region = CapMap::equatorial; capmap.cn = 0; return capmap; } /* polar region */ - if (x < -1*geometry::math::pi()/2.0) { + if (x < -1*ONEPI/2.0) { capmap.cn = 0; - capmap.x = (-1*3.0*geometry::math::pi()/4.0); + capmap.x = (-1*3.0*ONEPI/4.0); capmap.y = c; - } else if (x >= -1*geometry::math::pi()/2.0 && x < 0) { + } else if (x >= -1*ONEPI/2.0 && x < 0) { capmap.cn = 1; - capmap.x = -1*geometry::math::pi()/4.0; + capmap.x = -1*ONEPI/4.0; capmap.y = c; - } else if (x >= 0 && x < geometry::math::pi()/2.0) { + } else if (x >= 0 && x < ONEPI/2.0) { capmap.cn = 2; - capmap.x = geometry::math::pi()/4.0; + capmap.x = ONEPI/4.0; capmap.y = c; } else { capmap.cn = 3; - capmap.x = 3.0*geometry::math::pi()/4.0; + capmap.x = 3.0*ONEPI/4.0; capmap.y = c; } return capmap; } else { - double eps; - if (y > geometry::math::pi()/4.0) { - capmap.region = CapMap::north; - capmap.x = (-3.0*geometry::math::pi()/4.0 + north_square*geometry::math::pi()/2.0); - capmap.y = geometry::math::pi()/2.0; - x = x - north_square*geometry::math::pi()/2.0; - } else if (y < -1*geometry::math::pi()/4.0) { - capmap.region = CapMap::south; - capmap.x = (-3.0*geometry::math::pi()/4.0 + south_square*geometry::math::pi()/2); - capmap.y = -1*geometry::math::pi()/2.0; - x = x - south_square*geometry::math::pi()/2.0; + T eps; + if (y > ONEPI/4.0) { + capmap.region = CapMap::north; + capmap.x = (-3.0*ONEPI/4.0 + north_square*ONEPI/2.0); + capmap.y = ONEPI/2.0; + x = x - north_square*ONEPI/2.0; + } else if (y < -1*ONEPI/4.0) { + capmap.region = CapMap::south; + capmap.x = (-3.0*ONEPI/4.0 + south_square*ONEPI/2); + capmap.y = -1*ONEPI/2.0; + x = x - south_square*ONEPI/2.0; } else { - capmap.region = CapMap::equatorial; + capmap.region = CapMap::equatorial; capmap.cn = 0; return capmap; } /* Polar Region, find the HEALPix polar cap number that x, y moves to when rHEALPix polar square is disassembled. */ eps = 1e-15; /* Kludge. Fuzz to avoid some rounding errors. */ - if (capmap.region == CapMap::north) { - if (y >= -1*x - geometry::math::pi()/4.0 - eps && y < x + 5.0*geometry::math::pi()/4.0 - eps) { + if (capmap.region == CapMap::north) { + if (y >= -1*x - ONEPI/4.0 - eps && y < x + 5.0*ONEPI/4.0 - eps) { capmap.cn = (north_square + 1) % 4; - } else if (y > -1*x -1*geometry::math::pi()/4.0 + eps && y >= x + 5.0*geometry::math::pi()/4.0 - eps) { + } else if (y > -1*x -1*ONEPI/4.0 + eps && y >= x + 5.0*ONEPI/4.0 - eps) { capmap.cn = (north_square + 2) % 4; - } else if (y <= -1*x -1*geometry::math::pi()/4.0 + eps && y > x + 5.0*geometry::math::pi()/4.0 + eps) { + } else if (y <= -1*x -1*ONEPI/4.0 + eps && y > x + 5.0*ONEPI/4.0 + eps) { capmap.cn = (north_square + 3) % 4; } else { capmap.cn = north_square; } - } else if (capmap.region == CapMap::south) { - if (y <= x + geometry::math::pi()/4.0 + eps && y > -1*x - 5.0*geometry::math::pi()/4 + eps) { + } else if (capmap.region == CapMap::south) { + if (y <= x + ONEPI/4.0 + eps && y > -1*x - 5.0*ONEPI/4 + eps) { capmap.cn = (south_square + 1) % 4; - } else if (y < x + geometry::math::pi()/4.0 - eps && y <= -1*x - 5.0*geometry::math::pi()/4.0 + eps) { + } else if (y < x + ONEPI/4.0 - eps && y <= -1*x - 5.0*ONEPI/4.0 + eps) { capmap.cn = (south_square + 2) % 4; - } else if (y >= x + geometry::math::pi()/4.0 - eps && y < -1*x - 5.0*geometry::math::pi()/4.0 - eps) { + } else if (y >= x + ONEPI/4.0 - eps && y < -1*x - 5.0*ONEPI/4.0 - eps) { capmap.cn = (south_square + 3) % 4; } else { capmap.cn = south_square; @@ -419,16 +465,19 @@ namespace boost { namespace geometry { namespace projections * @param north_square integer between 0 and 3. * @param south_square integer between 0 and 3. **/ - static void combine_caps(double& xy_x, double& xy_y, int north_square, int south_square, - int inverse) { - - double v[2]; - double a[2]; - double vector[2]; - double v_min_c[2]; - double ret_dot[2]; - CapMap capmap = get_cap(xy_x, xy_y, north_square, south_square, inverse); - if (capmap.region == CapMap::equatorial) { + template + inline void combine_caps(T& xy_x, T& xy_y, int north_square, int south_square, + int inverse) + { + static const T ONEPI = detail::ONEPI(); + + T v[2]; + T a[2]; + T vector[2]; + T v_min_c[2]; + T ret_dot[2]; + CapMap capmap = get_cap(xy_x, xy_y, north_square, south_square, inverse); + if (capmap.region == CapMap::equatorial) { xy_x = capmap.x; xy_y = capmap.y; return; @@ -439,20 +488,20 @@ namespace boost { namespace geometry { namespace projections /* Rotate (xy_x, xy_y) about its polar cap tip and then translate it to north_square or south_square. */ int pole = 0; - double (*tmpRot)[2]; - double c[2] = {capmap.x, capmap.y}; - if (capmap.region == CapMap::north) { + T (*tmpRot)[2]; + T c[2] = {capmap.x, capmap.y}; + if (capmap.region == CapMap::north) { pole = north_square; - a[0] = (-3.0*geometry::math::pi()/4.0 + pole*geometry::math::pi()/2); - a[1] = (geometry::math::pi()/2.0 + pole*0); + a[0] = (-3.0*ONEPI/4.0 + pole*ONEPI/2); + a[1] = (ONEPI/2.0 + pole*0); tmpRot = rot[get_rotate_index(capmap.cn - pole)]; vector_sub(v, c, v_min_c); dot_product(tmpRot, v_min_c, ret_dot); vector_add(ret_dot, a, vector); } else { pole = south_square; - a[0] = (-3.0*geometry::math::pi()/4.0 + pole*geometry::math::pi()/2); - a[1] = (geometry::math::pi()/-2.0 + pole*0); + a[0] = (-3.0*ONEPI/4.0 + pole*ONEPI/2); + a[1] = (ONEPI/-2.0 + pole*0); tmpRot = rot[get_rotate_index(-1*(capmap.cn - pole))]; vector_sub(v, c, v_min_c); dot_product(tmpRot, v_min_c, ret_dot); @@ -465,21 +514,21 @@ namespace boost { namespace geometry { namespace projections /* Inverse function. Unrotate (xy_x, xy_y) and then translate it back. */ int pole = 0; - double (*tmpRot)[2]; - double c[2] = {capmap.x, capmap.y}; + T (*tmpRot)[2]; + T c[2] = {capmap.x, capmap.y}; /* disassemble */ - if (capmap.region == CapMap::north) { + if (capmap.region == CapMap::north) { pole = north_square; - a[0] = (-3.0*geometry::math::pi()/4.0 + capmap.cn*geometry::math::pi()/2); - a[1] = (geometry::math::pi()/2.0 + capmap.cn*0); + a[0] = (-3.0*ONEPI/4.0 + capmap.cn*ONEPI/2); + a[1] = (ONEPI/2.0 + capmap.cn*0); tmpRot = rot[get_rotate_index(-1*(capmap.cn - pole))]; vector_sub(v, c, v_min_c); dot_product(tmpRot, v_min_c, ret_dot); vector_add(ret_dot, a, vector); } else { pole = south_square; - a[0] = (-3.0*geometry::math::pi()/4.0 + capmap.cn*geometry::math::pi()/2); - a[1] = (geometry::math::pi()/-2.0 + capmap.cn*0); + a[0] = (-3.0*ONEPI/4.0 + capmap.cn*ONEPI/2); + a[1] = (ONEPI/-2.0 + capmap.cn*0); tmpRot = rot[get_rotate_index(capmap.cn - pole)]; vector_sub(v, c, v_min_c); dot_product(tmpRot, v_min_c, ret_dot); @@ -492,19 +541,19 @@ namespace boost { namespace geometry { namespace projections } // template class, using CRTP to implement forward/inverse - template - struct base_healpix_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_healpix_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_healpix m_proj_parm; + par_healpix m_proj_parm; inline base_healpix_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_healpix_forward) ellipsoid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -522,8 +571,7 @@ namespace boost { namespace geometry { namespace projections if (in_image(xy_x, xy_y, 0, 0, 0) == 0) { lp_lon = HUGE_VAL; lp_lat = HUGE_VAL; - throw proj_exception(-15); - return; + BOOST_THROW_EXCEPTION( projection_exception(-15) ); } healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat); lp_lat = auth_lat(this->params(), m_proj_parm, lp_lat, 1); @@ -537,19 +585,19 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_healpix_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_healpix_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_healpix m_proj_parm; + par_healpix m_proj_parm; inline base_healpix_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_healpix_forward) sphere // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -566,8 +614,7 @@ namespace boost { namespace geometry { namespace projections if (in_image(xy_x, xy_y, 0, 0, 0) == 0) { lp_lon = HUGE_VAL; lp_lat = HUGE_VAL; - throw proj_exception(-15); - return; + BOOST_THROW_EXCEPTION( projection_exception(-15) ); } return healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat); } @@ -580,19 +627,19 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_rhealpix_ellipsoid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_rhealpix_ellipsoid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_healpix m_proj_parm; + par_healpix m_proj_parm; inline base_rhealpix_ellipsoid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(e_rhealpix_forward) ellipsoid // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -611,8 +658,7 @@ namespace boost { namespace geometry { namespace projections if (in_image(xy_x, xy_y, 1, this->m_proj_parm.north_square, this->m_proj_parm.south_square) == 0) { lp_lon = HUGE_VAL; lp_lat = HUGE_VAL; - throw proj_exception(-15); - return; + BOOST_THROW_EXCEPTION( projection_exception(-15) ); } combine_caps(xy_x, xy_y, this->m_proj_parm.north_square, this->m_proj_parm.south_square, 1); healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat); @@ -627,19 +673,19 @@ namespace boost { namespace geometry { namespace projections }; // template class, using CRTP to implement forward/inverse - template - struct base_rhealpix_spheroid : public base_t_fi, - Geographic, Cartesian, Parameters> + template + struct base_rhealpix_spheroid : public base_t_fi, + CalculationType, Parameters> { - typedef double geographic_type; - typedef double cartesian_type; + typedef CalculationType geographic_type; + typedef CalculationType cartesian_type; - par_healpix m_proj_parm; + par_healpix m_proj_parm; inline base_rhealpix_spheroid(const Parameters& par) - : base_t_fi, - Geographic, Cartesian, Parameters>(*this, par) {} + : base_t_fi, + CalculationType, Parameters>(*this, par) {} // FORWARD(s_rhealpix_forward) sphere // Project coordinates from geographic (lon, lat) to cartesian (x, y) @@ -657,8 +703,7 @@ namespace boost { namespace geometry { namespace projections if (in_image(xy_x, xy_y, 1, this->m_proj_parm.north_square, this->m_proj_parm.south_square) == 0) { lp_lon = HUGE_VAL; lp_lat = HUGE_VAL; - throw proj_exception(-15); - return; + BOOST_THROW_EXCEPTION( projection_exception(-15) ); } combine_caps(xy_x, xy_y, this->m_proj_parm.north_square, this->m_proj_parm.south_square, 1); return healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat); @@ -672,8 +717,8 @@ namespace boost { namespace geometry { namespace projections }; // HEALPix - template - void setup_healpix(Parameters& par, par_healpix& proj_parm) + template + void setup_healpix(Parameters& par, par_healpix& proj_parm) { if (par.es) { pj_authset(par.es, proj_parm.apa); /* For auth_lat(). */ @@ -685,17 +730,17 @@ namespace boost { namespace geometry { namespace projections } // rHEALPix - template - void setup_rhealpix(Parameters& par, par_healpix& proj_parm) + template + void setup_rhealpix(Parameters& par, par_healpix& proj_parm) { proj_parm.north_square = pj_param(par.params,"inorth_square").i; proj_parm.south_square = pj_param(par.params,"isouth_square").i; /* Check for valid north_square and south_square inputs. */ if (proj_parm.north_square < 0 || proj_parm.north_square > 3) { - throw proj_exception(-47); + BOOST_THROW_EXCEPTION( projection_exception(-47) ); } if (proj_parm.south_square < 0 || proj_parm.south_square > 3) { - throw proj_exception(-47); + BOOST_THROW_EXCEPTION( projection_exception(-47) ); } if (par.es) { pj_authset(par.es, proj_parm.apa); /* For auth_lat(). */ @@ -706,7 +751,7 @@ namespace boost { namespace geometry { namespace projections } } - }} // namespace detail::healpix + }} // namespace detail::healpix #endif // doxygen /*! @@ -721,10 +766,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_healpix.gif */ - template - struct healpix_ellipsoid : public detail::healpix::base_healpix_ellipsoid + template + struct healpix_ellipsoid : public detail::healpix::base_healpix_ellipsoid { - inline healpix_ellipsoid(const Parameters& par) : detail::healpix::base_healpix_ellipsoid(par) + inline healpix_ellipsoid(const Parameters& par) : detail::healpix::base_healpix_ellipsoid(par) { detail::healpix::setup_healpix(this->m_par, this->m_proj_parm); } @@ -742,10 +787,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_healpix.gif */ - template - struct healpix_spheroid : public detail::healpix::base_healpix_spheroid + template + struct healpix_spheroid : public detail::healpix::base_healpix_spheroid { - inline healpix_spheroid(const Parameters& par) : detail::healpix::base_healpix_spheroid(par) + inline healpix_spheroid(const Parameters& par) : detail::healpix::base_healpix_spheroid(par) { detail::healpix::setup_healpix(this->m_par, this->m_proj_parm); } @@ -766,10 +811,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_rhealpix.gif */ - template - struct rhealpix_ellipsoid : public detail::healpix::base_rhealpix_ellipsoid + template + struct rhealpix_ellipsoid : public detail::healpix::base_rhealpix_ellipsoid { - inline rhealpix_ellipsoid(const Parameters& par) : detail::healpix::base_rhealpix_ellipsoid(par) + inline rhealpix_ellipsoid(const Parameters& par) : detail::healpix::base_rhealpix_ellipsoid(par) { detail::healpix::setup_rhealpix(this->m_par, this->m_proj_parm); } @@ -790,10 +835,10 @@ namespace boost { namespace geometry { namespace projections \par Example \image html ex_rhealpix.gif */ - template - struct rhealpix_spheroid : public detail::healpix::base_rhealpix_spheroid + template + struct rhealpix_spheroid : public detail::healpix::base_rhealpix_spheroid { - inline rhealpix_spheroid(const Parameters& par) : detail::healpix::base_rhealpix_spheroid(par) + inline rhealpix_spheroid(const Parameters& par) : detail::healpix::base_rhealpix_spheroid(par) { detail::healpix::setup_rhealpix(this->m_par, this->m_proj_parm); } @@ -803,44 +848,50 @@ namespace boost { namespace geometry { namespace projections namespace detail { + // Static projection + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::healpix, healpix_spheroid, healpix_ellipsoid) + BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::proj::rhealpix, rhealpix_spheroid, rhealpix_ellipsoid) + // Factory entry(s) - template - class healpix_entry : public detail::factory_entry + template + class healpix_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { if (par.es) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); else - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - class rhealpix_entry : public detail::factory_entry + template + class rhealpix_entry : public detail::factory_entry { public : - virtual projection* create_new(const Parameters& par) const + virtual base_v* create_new(const Parameters& par) const { if (par.es) - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); else - return new base_v_fi, Geographic, Cartesian, Parameters>(par); + return new base_v_fi, CalculationType, Parameters>(par); } }; - template - inline void healpix_init(detail::base_factory& factory) + template + inline void healpix_init(detail::base_factory& factory) { - factory.add_to_factory("healpix", new healpix_entry); - factory.add_to_factory("rhealpix", new rhealpix_entry); + factory.add_to_factory("healpix", new healpix_entry); + factory.add_to_factory("rhealpix", new rhealpix_entry); } } // namespace detail #endif // doxygen -}}} // namespace boost::geometry::projections +} // namespace projections + +}} // namespace boost::geometry #endif // BOOST_GEOMETRY_PROJECTIONS_HEALPIX_HPP diff --git a/include/boost/geometry/extensions/gis/projections/proj/igh.hpp b/include/boost/geometry/srs/projections/proj/igh.hpp similarity index 63% rename from include/boost/geometry/extensions/gis/projections/proj/igh.hpp rename to include/boost/geometry/srs/projections/proj/igh.hpp index d4eb9a09a5..d10c75b1ac 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/igh.hpp +++ b/include/boost/geometry/srs/projections/proj/igh.hpp @@ -6,6 +6,10 @@ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2017. +// Modifications copyright (c) 2017, Oracle and/or its affiliates. +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -40,48 +44,72 @@ #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +namespace srs { namespace proj +{ + struct igh {}; + +}} //namespace srs::proj -namespace boost { namespace geometry { namespace projections +namespace projections { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace igh { - template + template struct par_igh { - boost::shared_ptr > pj[12]; - double dy0; + boost::shared_ptr > pj[12]; + CalculationType dy0; }; - static const double d4044118 = (40 + 44/60. + 11.8/3600.) * geometry::math::d2r(); // 40d 44' 11.8" [degrees] - - static const double d10 = 10 * geometry::math::d2r(); - static const double d20 = 20 * geometry::math::d2r(); - static const double d30 = 30 * geometry::math::d2r(); - static const double d40 = 40 * geometry::math::d2r(); - static const double d50 = 50 * geometry::math::d2r(); - static const double d60 = 60 * geometry::math::d2r(); - static const double d80 = 80 * geometry::math::d2r(); - static const double d90 = 90 * geometry::math::d2r(); - static const double d100 = 100 * geometry::math::d2r(); - static const double d140 = 140 * geometry::math::d2r(); - static const double d160 = 160 * geometry::math::d2r(); - static const double d180 = 180 * geometry::math::d2r(); + template + inline T d4044118() { return (T(40) + T(44)/T(60.) + T(11.8)/T(3600.)) * geometry::math::d2r(); } // 40d 44' 11.8" [degrees] + + template + inline T d10() { return T(10) * geometry::math::d2r(); } + template + inline T d20() { return T(20) * geometry::math::d2r(); } + template + inline T d30() { return T(30) * geometry::math::d2r(); } + template + inline T d40() { return T(40) * geometry::math::d2r(); } + template + inline T d50() { return T(50) * geometry::math::d2r(); } + template + inline T d60() { return T(60) * geometry::math::d2r(); } + template + inline T d80() { return T(80) * geometry::math::d2r(); } + template + inline T d90() { return T(90) * geometry::math::d2r(); } + template + inline T d100() { return T(100) * geometry::math::d2r(); } + template + inline T d140() { return T(140) * geometry::math::d2r(); } + template + inline T d160() { return T(160) * geometry::math::d2r(); } + template + inline T d180() { return T(180) * geometry::math::d2r(); } static const double EPSLN = 1.e-10; // allow a little 'slack' on zone edge positions // Converted from #define SETUP(n, proj, x_0, y_0, lon_0) - template