From eab7a828804f21f712b1a4d24c837116dc0894bb Mon Sep 17 00:00:00 2001 From: Adam Wulkiewicz Date: Mon, 17 Apr 2017 16:08:50 +0200 Subject: [PATCH 001/104] [extensions][projections] Implement new projection interface. - Use projections::projection<> as a general projection representation both compile-time and run-time. - Add proj4, epsg, static_proj4, static_epsg parameters passable into projection<> either as ctor parameter or template parameter and defining type of projection and parameters. - Don't require creation of factory or proj4 parameters explicitly in the code. - In the implementation of tmerc projection add specializations of newly added traits for getting compile-time projection implementation from projection tag and SRS model. - Derive dynamic projections from base_v<> type instead of projection<>. --- .../extensions/gis/projections/factory.hpp | 13 +- .../gis/projections/impl/base_dynamic.hpp | 67 +++++- .../gis/projections/impl/base_static.hpp | 15 ++ .../gis/projections/impl/factory_entry.hpp | 8 +- .../gis/projections/new_projection.hpp | 8 +- .../extensions/gis/projections/proj/aea.hpp | 4 +- .../extensions/gis/projections/proj/aeqd.hpp | 2 +- .../extensions/gis/projections/proj/airy.hpp | 2 +- .../gis/projections/proj/aitoff.hpp | 4 +- .../gis/projections/proj/august.hpp | 2 +- .../extensions/gis/projections/proj/bacon.hpp | 6 +- .../extensions/gis/projections/proj/bipc.hpp | 2 +- .../extensions/gis/projections/proj/boggs.hpp | 2 +- .../extensions/gis/projections/proj/bonne.hpp | 2 +- .../extensions/gis/projections/proj/cass.hpp | 2 +- .../extensions/gis/projections/proj/cc.hpp | 2 +- .../extensions/gis/projections/proj/cea.hpp | 2 +- .../extensions/gis/projections/proj/chamb.hpp | 2 +- .../extensions/gis/projections/proj/collg.hpp | 2 +- .../extensions/gis/projections/proj/crast.hpp | 2 +- .../extensions/gis/projections/proj/denoy.hpp | 2 +- .../extensions/gis/projections/proj/eck1.hpp | 2 +- .../extensions/gis/projections/proj/eck2.hpp | 2 +- .../extensions/gis/projections/proj/eck3.hpp | 8 +- .../extensions/gis/projections/proj/eck4.hpp | 2 +- .../extensions/gis/projections/proj/eck5.hpp | 2 +- .../extensions/gis/projections/proj/eqc.hpp | 2 +- .../extensions/gis/projections/proj/eqdc.hpp | 2 +- .../gis/projections/proj/etmerc.hpp | 2 +- .../extensions/gis/projections/proj/fahey.hpp | 2 +- .../gis/projections/proj/fouc_s.hpp | 2 +- .../extensions/gis/projections/proj/gall.hpp | 2 +- .../gis/projections/proj/geocent.hpp | 2 +- .../extensions/gis/projections/proj/geos.hpp | 2 +- .../extensions/gis/projections/proj/gins8.hpp | 2 +- .../gis/projections/proj/gn_sinu.hpp | 8 +- .../extensions/gis/projections/proj/gnom.hpp | 2 +- .../extensions/gis/projections/proj/goode.hpp | 2 +- .../gis/projections/proj/gstmerc.hpp | 2 +- .../gis/projections/proj/hammer.hpp | 2 +- .../gis/projections/proj/hatano.hpp | 2 +- .../gis/projections/proj/healpix.hpp | 4 +- .../extensions/gis/projections/proj/igh.hpp | 12 +- .../extensions/gis/projections/proj/imw_p.hpp | 2 +- .../extensions/gis/projections/proj/isea.hpp | 2 +- .../gis/projections/proj/krovak.hpp | 2 +- .../extensions/gis/projections/proj/labrd.hpp | 2 +- .../extensions/gis/projections/proj/laea.hpp | 2 +- .../gis/projections/proj/lagrng.hpp | 2 +- .../extensions/gis/projections/proj/larr.hpp | 2 +- .../extensions/gis/projections/proj/lask.hpp | 2 +- .../gis/projections/proj/latlong.hpp | 8 +- .../extensions/gis/projections/proj/lcc.hpp | 2 +- .../extensions/gis/projections/proj/lcca.hpp | 2 +- .../extensions/gis/projections/proj/loxim.hpp | 2 +- .../extensions/gis/projections/proj/lsat.hpp | 2 +- .../gis/projections/proj/mbt_fps.hpp | 2 +- .../gis/projections/proj/mbtfpp.hpp | 2 +- .../gis/projections/proj/mbtfpq.hpp | 2 +- .../extensions/gis/projections/proj/merc.hpp | 2 +- .../extensions/gis/projections/proj/mill.hpp | 2 +- .../gis/projections/proj/mod_ster.hpp | 10 +- .../extensions/gis/projections/proj/moll.hpp | 6 +- .../gis/projections/proj/natearth.hpp | 2 +- .../extensions/gis/projections/proj/nell.hpp | 2 +- .../gis/projections/proj/nell_h.hpp | 2 +- .../extensions/gis/projections/proj/nocol.hpp | 2 +- .../extensions/gis/projections/proj/nsper.hpp | 4 +- .../extensions/gis/projections/proj/nzmg.hpp | 2 +- .../gis/projections/proj/ob_tran.hpp | 14 +- .../extensions/gis/projections/proj/ocea.hpp | 2 +- .../extensions/gis/projections/proj/oea.hpp | 2 +- .../extensions/gis/projections/proj/omerc.hpp | 2 +- .../extensions/gis/projections/proj/ortho.hpp | 2 +- .../extensions/gis/projections/proj/poly.hpp | 2 +- .../extensions/gis/projections/proj/putp2.hpp | 2 +- .../extensions/gis/projections/proj/putp3.hpp | 4 +- .../gis/projections/proj/putp4p.hpp | 4 +- .../extensions/gis/projections/proj/putp5.hpp | 4 +- .../extensions/gis/projections/proj/putp6.hpp | 4 +- .../extensions/gis/projections/proj/qsc.hpp | 2 +- .../extensions/gis/projections/proj/robin.hpp | 2 +- .../extensions/gis/projections/proj/rouss.hpp | 2 +- .../extensions/gis/projections/proj/rpoly.hpp | 2 +- .../gis/projections/proj/sconics.hpp | 14 +- .../gis/projections/proj/somerc.hpp | 2 +- .../extensions/gis/projections/proj/stere.hpp | 4 +- .../gis/projections/proj/sterea.hpp | 2 +- .../extensions/gis/projections/proj/sts.hpp | 8 +- .../extensions/gis/projections/proj/tcc.hpp | 2 +- .../extensions/gis/projections/proj/tcea.hpp | 2 +- .../extensions/gis/projections/proj/tmerc.hpp | 226 ++++++++++-------- .../extensions/gis/projections/proj/tpeqd.hpp | 2 +- .../extensions/gis/projections/proj/urm5.hpp | 2 +- .../gis/projections/proj/urmfps.hpp | 4 +- .../extensions/gis/projections/proj/vandg.hpp | 2 +- .../gis/projections/proj/vandg2.hpp | 4 +- .../gis/projections/proj/vandg4.hpp | 2 +- .../extensions/gis/projections/proj/wag2.hpp | 2 +- .../extensions/gis/projections/proj/wag3.hpp | 2 +- .../extensions/gis/projections/proj/wag7.hpp | 2 +- .../extensions/gis/projections/proj/wink1.hpp | 2 +- .../extensions/gis/projections/proj/wink2.hpp | 2 +- .../extensions/gis/projections/projection.hpp | 222 ++++++++++++++--- 104 files changed, 563 insertions(+), 286 deletions(-) diff --git a/include/boost/geometry/extensions/gis/projections/factory.hpp b/include/boost/geometry/extensions/gis/projections/factory.hpp index 6f5ff26bd..6fbedf72f 100644 --- a/include/boost/geometry/extensions/gis/projections/factory.hpp +++ b/include/boost/geometry/extensions/gis/projections/factory.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) @@ -118,6 +122,9 @@ namespace boost { namespace geometry { namespace projections { +namespace detail +{ + template class factory : public detail::base_factory { @@ -250,9 +257,9 @@ public: m_registry[name].reset(sub); } - inline projection* create_new(Parameters const& parameters) + inline detail::base_v* create_new(Parameters const& parameters) const { - typename prj_registry::iterator it = m_registry.find(parameters.name); + typename prj_registry::const_iterator it = m_registry.find(parameters.name); if (it != m_registry.end()) { return it->second->create_new(parameters); @@ -262,6 +269,8 @@ public: } }; +} // namespace detail + }}} // 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 index 8ee12119a..f2ae7b781 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/base_dynamic.hpp +++ b/include/boost/geometry/extensions/gis/projections/impl/base_dynamic.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,8 +15,7 @@ #include - -#include +#include namespace boost { namespace geometry { namespace projections { @@ -21,14 +24,66 @@ namespace boost { namespace geometry { namespace projections namespace detail { +/*! + \brief projection virtual base class + \details class containing virtual methods + \ingroup projection + \tparam LL latlong point type + \tparam XY xy point type +*/ +template +< + typename LL, + typename XY, + typename P = parameters // temporary default +> +class base_v +{ + 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 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 projection +class base_v_f : public base_v { protected: - typedef typename projection::LL_T LL_T; - typedef typename projection::XY_T XY_T; + typedef typename base_v::LL_T LL_T; + typedef typename base_v::XY_T XY_T; public: @@ -86,7 +141,7 @@ public : 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 + virtual 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); } diff --git a/include/boost/geometry/extensions/gis/projections/impl/base_static.hpp b/include/boost/geometry/extensions/gis/projections/impl/base_static.hpp index 15e86aab3..9ac0a123c 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/base_static.hpp +++ b/include/boost/geometry/extensions/gis/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) @@ -20,6 +24,9 @@ #include #include +#include + + namespace boost { namespace geometry { namespace projections { @@ -28,6 +35,14 @@ 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)); +}; + // Base-template-forward template struct base_t_f diff --git a/include/boost/geometry/extensions/gis/projections/impl/factory_entry.hpp b/include/boost/geometry/extensions/gis/projections/impl/factory_entry.hpp index 0b8dba67e..ab8e1e63d 100644 --- a/include/boost/geometry/extensions/gis/projections/impl/factory_entry.hpp +++ b/include/boost/geometry/extensions/gis/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 { @@ -25,7 +29,7 @@ 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 diff --git a/include/boost/geometry/extensions/gis/projections/new_projection.hpp b/include/boost/geometry/extensions/gis/projections/new_projection.hpp index f06529710..3b594723a 100644 --- a/include/boost/geometry/extensions/gis/projections/new_projection.hpp +++ b/include/boost/geometry/extensions/gis/projections/new_projection.hpp @@ -3,6 +3,10 @@ // Copyright (c) 2012 Krzysztof Czainski // Copyright (c) 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,7 +19,6 @@ #include #include -#include namespace boost { namespace geometry { namespace projections { @@ -33,10 +36,11 @@ namespace boost { namespace geometry { namespace projections //@{ template -inline projection +inline base_v < typename detail::projection_point_type::type , typename detail::projection_point_type::type + , Parameters >* new_projection(Parameters const& par) { return new detail::base_v_fi diff --git a/include/boost/geometry/extensions/gis/projections/proj/aea.hpp b/include/boost/geometry/extensions/gis/projections/proj/aea.hpp index 309dc6696..dff9c57bc 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/aea.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/aea.hpp @@ -290,7 +290,7 @@ namespace boost { namespace geometry { namespace projections class aea_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); } @@ -300,7 +300,7 @@ namespace boost { namespace geometry { namespace projections class leac_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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/aeqd.hpp b/include/boost/geometry/extensions/gis/projections/proj/aeqd.hpp index 55bcae3aa..971919209 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/aeqd.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/aeqd.hpp @@ -459,7 +459,7 @@ namespace boost { namespace geometry { namespace projections 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; diff --git a/include/boost/geometry/extensions/gis/projections/proj/airy.hpp b/include/boost/geometry/extensions/gis/projections/proj/airy.hpp index d7396cab4..876cb1d34 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/airy.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/airy.hpp @@ -210,7 +210,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/aitoff.hpp b/include/boost/geometry/extensions/gis/projections/proj/aitoff.hpp index f784f49db..6bdaa77f4 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/aitoff.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/aitoff.hpp @@ -268,7 +268,7 @@ namespace boost { namespace geometry { namespace projections 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); } @@ -278,7 +278,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/august.hpp b/include/boost/geometry/extensions/gis/projections/proj/august.hpp index 081729675..45e003135 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/august.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/august.hpp @@ -127,7 +127,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/bacon.hpp b/include/boost/geometry/extensions/gis/projections/proj/bacon.hpp index b0d75dcab..9b993a49a 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/bacon.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/bacon.hpp @@ -204,7 +204,7 @@ namespace boost { namespace geometry { namespace projections 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); } @@ -214,7 +214,7 @@ namespace boost { namespace geometry { namespace projections 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); } @@ -224,7 +224,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/bipc.hpp b/include/boost/geometry/extensions/gis/projections/proj/bipc.hpp index 97920f1a8..091616822 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/bipc.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/bipc.hpp @@ -247,7 +247,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/boggs.hpp b/include/boost/geometry/extensions/gis/projections/proj/boggs.hpp index 2c0593afc..b71365354 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/boggs.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/boggs.hpp @@ -143,7 +143,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/bonne.hpp b/include/boost/geometry/extensions/gis/projections/proj/bonne.hpp index 387ee73f9..08554f413 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/bonne.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/bonne.hpp @@ -246,7 +246,7 @@ namespace boost { namespace geometry { namespace projections 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); diff --git a/include/boost/geometry/extensions/gis/projections/proj/cass.hpp b/include/boost/geometry/extensions/gis/projections/proj/cass.hpp index f0a1c5a35..c0729854e 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/cass.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/cass.hpp @@ -230,7 +230,7 @@ namespace boost { namespace geometry { namespace projections class cass_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); diff --git a/include/boost/geometry/extensions/gis/projections/proj/cc.hpp b/include/boost/geometry/extensions/gis/projections/proj/cc.hpp index f17c1b644..81e22db35 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/cc.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/cc.hpp @@ -136,7 +136,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/cea.hpp b/include/boost/geometry/extensions/gis/projections/proj/cea.hpp index 02037ba5d..f3183120f 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/cea.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/cea.hpp @@ -222,7 +222,7 @@ namespace boost { namespace geometry { namespace projections 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); diff --git a/include/boost/geometry/extensions/gis/projections/proj/chamb.hpp b/include/boost/geometry/extensions/gis/projections/proj/chamb.hpp index 8b11fde28..c9fc29288 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/chamb.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/chamb.hpp @@ -236,7 +236,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/collg.hpp b/include/boost/geometry/extensions/gis/projections/proj/collg.hpp index 0fabaa05b..0d6b0cd18 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/collg.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/collg.hpp @@ -142,7 +142,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/crast.hpp b/include/boost/geometry/extensions/gis/projections/proj/crast.hpp index 6298e8d87..1e8c1d563 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/crast.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/crast.hpp @@ -132,7 +132,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/denoy.hpp b/include/boost/geometry/extensions/gis/projections/proj/denoy.hpp index e50195151..792f12d91 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/denoy.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/denoy.hpp @@ -127,7 +127,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck1.hpp b/include/boost/geometry/extensions/gis/projections/proj/eck1.hpp index 8ab1ee891..a6c18dbc0 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck1.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/eck1.hpp @@ -128,7 +128,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck2.hpp b/include/boost/geometry/extensions/gis/projections/proj/eck2.hpp index 12146f741..67b95340f 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck2.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/eck2.hpp @@ -141,7 +141,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck3.hpp b/include/boost/geometry/extensions/gis/projections/proj/eck3.hpp index c336d713b..420f39c23 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck3.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/eck3.hpp @@ -242,7 +242,7 @@ namespace boost { namespace geometry { namespace projections 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); } @@ -252,7 +252,7 @@ namespace boost { namespace geometry { namespace projections 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); } @@ -262,7 +262,7 @@ namespace boost { namespace geometry { namespace projections 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); } @@ -272,7 +272,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck4.hpp b/include/boost/geometry/extensions/gis/projections/proj/eck4.hpp index b3cd36b0b..d139e8626 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck4.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/eck4.hpp @@ -156,7 +156,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/eck5.hpp b/include/boost/geometry/extensions/gis/projections/proj/eck5.hpp index c52d98cbc..625b917ec 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eck5.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/eck5.hpp @@ -129,7 +129,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/eqc.hpp b/include/boost/geometry/extensions/gis/projections/proj/eqc.hpp index f758b7f03..8c0b98d7e 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eqc.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/eqc.hpp @@ -135,7 +135,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/eqdc.hpp b/include/boost/geometry/extensions/gis/projections/proj/eqdc.hpp index 8da653a67..6fc0aa393 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/eqdc.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/eqdc.hpp @@ -209,7 +209,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/etmerc.hpp b/include/boost/geometry/extensions/gis/projections/proj/etmerc.hpp index 16fbcc854..c067d7071 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/etmerc.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/etmerc.hpp @@ -349,7 +349,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/fahey.hpp b/include/boost/geometry/extensions/gis/projections/proj/fahey.hpp index fb1c86a3c..7371a5225 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/fahey.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/fahey.hpp @@ -129,7 +129,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/fouc_s.hpp b/include/boost/geometry/extensions/gis/projections/proj/fouc_s.hpp index e2452b58e..9c8f9d766 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/fouc_s.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/fouc_s.hpp @@ -161,7 +161,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/gall.hpp b/include/boost/geometry/extensions/gis/projections/proj/gall.hpp index 425f4a2f2..fc264d930 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gall.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/gall.hpp @@ -130,7 +130,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/geocent.hpp b/include/boost/geometry/extensions/gis/projections/proj/geocent.hpp index 8c7469d3a..2c4b41041 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/geocent.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/geocent.hpp @@ -130,7 +130,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/geos.hpp b/include/boost/geometry/extensions/gis/projections/proj/geos.hpp index 375998b63..93b0eccb8 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/geos.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/geos.hpp @@ -331,7 +331,7 @@ namespace boost { namespace geometry { namespace projections 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); diff --git a/include/boost/geometry/extensions/gis/projections/proj/gins8.hpp b/include/boost/geometry/extensions/gis/projections/proj/gins8.hpp index 96de4cb90..f9c6a430f 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gins8.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/gins8.hpp @@ -126,7 +126,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/gn_sinu.hpp b/include/boost/geometry/extensions/gis/projections/proj/gn_sinu.hpp index dc585bd5b..b293d7ada 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gn_sinu.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/gn_sinu.hpp @@ -341,7 +341,7 @@ namespace boost { namespace geometry { namespace projections 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); } @@ -351,7 +351,7 @@ namespace boost { namespace geometry { namespace projections 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); @@ -364,7 +364,7 @@ namespace boost { namespace geometry { namespace projections 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); } @@ -374,7 +374,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/gnom.hpp b/include/boost/geometry/extensions/gis/projections/proj/gnom.hpp index ea771b272..5c014dbe6 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gnom.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/gnom.hpp @@ -219,7 +219,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/goode.hpp b/include/boost/geometry/extensions/gis/projections/proj/goode.hpp index 9ce3ee78c..d97d11c4d 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/goode.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/goode.hpp @@ -148,7 +148,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/gstmerc.hpp b/include/boost/geometry/extensions/gis/projections/proj/gstmerc.hpp index b73ef80a2..16c4214c1 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/gstmerc.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/gstmerc.hpp @@ -163,7 +163,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/hammer.hpp b/include/boost/geometry/extensions/gis/projections/proj/hammer.hpp index aa61e771d..417aa9a3c 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/hammer.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/hammer.hpp @@ -141,7 +141,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/hatano.hpp b/include/boost/geometry/extensions/gis/projections/proj/hatano.hpp index 3c6625933..4d3342225 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/hatano.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/hatano.hpp @@ -163,7 +163,7 @@ namespace boost { namespace geometry { namespace projections 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); } diff --git a/include/boost/geometry/extensions/gis/projections/proj/healpix.hpp b/include/boost/geometry/extensions/gis/projections/proj/healpix.hpp index aaa1af2d1..8916ba714 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/healpix.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/healpix.hpp @@ -808,7 +808,7 @@ namespace boost { namespace geometry { namespace projections 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); @@ -821,7 +821,7 @@ namespace boost { namespace geometry { namespace projections 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); diff --git a/include/boost/geometry/extensions/gis/projections/proj/igh.hpp b/include/boost/geometry/extensions/gis/projections/proj/igh.hpp index d4eb9a09a..15fcfda8b 100644 --- a/include/boost/geometry/extensions/gis/projections/proj/igh.hpp +++ b/include/boost/geometry/extensions/gis/projections/proj/igh.hpp @@ -53,10 +53,10 @@ namespace boost { namespace geometry { namespace projections namespace detail { namespace igh { - template + template struct par_igh { - boost::shared_ptr > pj[12]; + boost::shared_ptr > pj[12]; double dy0; }; @@ -79,7 +79,7 @@ namespace boost { namespace geometry { namespace projections // Converted from #define SETUP(n, proj, x_0, y_0, lon_0) template