diff options
Diffstat (limited to 'boost/geometry/srs/projections/proj/urm5.hpp')
-rw-r--r-- | boost/geometry/srs/projections/proj/urm5.hpp | 72 |
1 files changed, 34 insertions, 38 deletions
diff --git a/boost/geometry/srs/projections/proj/urm5.hpp b/boost/geometry/srs/projections/proj/urm5.hpp index 96b541f4ea..bdda5fc400 100644 --- a/boost/geometry/srs/projections/proj/urm5.hpp +++ b/boost/geometry/srs/projections/proj/urm5.hpp @@ -1,13 +1,9 @@ -#ifndef BOOST_GEOMETRY_PROJECTIONS_URM5_HPP -#define BOOST_GEOMETRY_PROJECTIONS_URM5_HPP - -// Boost.Geometry - extensions-gis-projections (based on PROJ4) -// This file is automatically generated. DO NOT EDIT. +// Boost.Geometry - gis-projections (based on PROJ4) // 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. +// This file was modified by Oracle on 2017, 2018. +// Modifications copyright (c) 2017-2018, 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, @@ -19,7 +15,7 @@ // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Boost.Geometry by Barend Gehrels -// Last updated version of proj: 4.9.1 +// Last updated version of proj: 5.0.0 // Original copyright notice: @@ -41,6 +37,9 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. +#ifndef BOOST_GEOMETRY_PROJECTIONS_URM5_HPP +#define BOOST_GEOMETRY_PROJECTIONS_URM5_HPP + #include <boost/geometry/srs/projections/impl/base_static.hpp> #include <boost/geometry/srs/projections/impl/base_dynamic.hpp> #include <boost/geometry/srs/projections/impl/projects.hpp> @@ -52,7 +51,7 @@ namespace boost { namespace geometry namespace srs { namespace par4 { - struct urm5 {}; + struct urm5 {}; // Urmaev V }} //namespace srs::par4 @@ -68,25 +67,21 @@ namespace projections }; // template class, using CRTP to implement forward/inverse - template <typename CalculationType, typename Parameters> - struct base_urm5_spheroid : public base_t_f<base_urm5_spheroid<CalculationType, Parameters>, - CalculationType, Parameters> + template <typename T, typename Parameters> + struct base_urm5_spheroid + : public base_t_f<base_urm5_spheroid<T, Parameters>, T, Parameters> { - - typedef CalculationType geographic_type; - typedef CalculationType cartesian_type; - - par_urm5<CalculationType> m_proj_parm; + par_urm5<T> m_proj_parm; inline base_urm5_spheroid(const Parameters& par) - : base_t_f<base_urm5_spheroid<CalculationType, Parameters>, - CalculationType, Parameters>(*this, par) {} + : base_t_f<base_urm5_spheroid<T, Parameters>, T, 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 + inline void fwd(T& lp_lon, T& lp_lat, T& xy_x, T& xy_y) const { - CalculationType t; + T t; t = lp_lat = aasin(this->m_proj_parm.n * sin(lp_lat)); xy_x = this->m_proj_parm.m * lp_lon * cos(lp_lat); @@ -107,17 +102,18 @@ namespace projections { T alpha, t; - if (pj_param(par.params, "tn").i) { - proj_parm.n = pj_param(par.params, "dn").f; + if (pj_param_f(par.params, "n", proj_parm.n)) { if (proj_parm.n <= 0. || proj_parm.n > 1.) - BOOST_THROW_EXCEPTION( projection_exception(-40) ); - } else - BOOST_THROW_EXCEPTION( projection_exception(-40) ); - proj_parm.q3 = pj_param(par.params, "dq").f / 3.; - alpha = pj_param(par.params, "ralpha").f; + BOOST_THROW_EXCEPTION( projection_exception(error_n_out_of_range) ); + } else { + BOOST_THROW_EXCEPTION( projection_exception(error_n_out_of_range) ); + } + proj_parm.q3 = pj_get_param_f(par.params, "q") / 3.; + alpha = pj_get_param_r(par.params, "alpha"); t = proj_parm.n * sin(alpha); proj_parm.m = cos(alpha) / sqrt(1. - t * t); proj_parm.rmn = 1. / (proj_parm.m * proj_parm.n); + par.es = 0.; } @@ -141,10 +137,10 @@ namespace projections \par Example \image html ex_urm5.gif */ - template <typename CalculationType, typename Parameters> - struct urm5_spheroid : public detail::urm5::base_urm5_spheroid<CalculationType, Parameters> + template <typename T, typename Parameters> + struct urm5_spheroid : public detail::urm5::base_urm5_spheroid<T, Parameters> { - inline urm5_spheroid(const Parameters& par) : detail::urm5::base_urm5_spheroid<CalculationType, Parameters>(par) + inline urm5_spheroid(const Parameters& par) : detail::urm5::base_urm5_spheroid<T, Parameters>(par) { detail::urm5::setup_urm5(this->m_par, this->m_proj_parm); } @@ -158,20 +154,20 @@ namespace projections BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION(srs::par4::urm5, urm5_spheroid, urm5_spheroid) // Factory entry(s) - template <typename CalculationType, typename Parameters> - class urm5_entry : public detail::factory_entry<CalculationType, Parameters> + template <typename T, typename Parameters> + class urm5_entry : public detail::factory_entry<T, Parameters> { public : - virtual base_v<CalculationType, Parameters>* create_new(const Parameters& par) const + virtual base_v<T, Parameters>* create_new(const Parameters& par) const { - return new base_v_f<urm5_spheroid<CalculationType, Parameters>, CalculationType, Parameters>(par); + return new base_v_f<urm5_spheroid<T, Parameters>, T, Parameters>(par); } }; - template <typename CalculationType, typename Parameters> - inline void urm5_init(detail::base_factory<CalculationType, Parameters>& factory) + template <typename T, typename Parameters> + inline void urm5_init(detail::base_factory<T, Parameters>& factory) { - factory.add_to_factory("urm5", new urm5_entry<CalculationType, Parameters>); + factory.add_to_factory("urm5", new urm5_entry<T, Parameters>); } } // namespace detail |