Opened 6 years ago
Closed 6 years ago
#12410 closed Feature Requests (fixed)
boost::geometry::correct on a polygon in a geographic cs doesn't work
Reported by: | Owned by: | Barend Gehrels | |
---|---|---|---|
Milestone: | Boost 1.64.0 | Component: | geometry |
Version: | Boost 1.61.0 | Severity: | Showstopper |
Keywords: | area, correct, geographic | Cc: |
Description
It doesn't compile. See this simple example (and yes, I know the polygon is empty. That doesn't matter)
#include <boost/geometry.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/geometries.hpp> int main() { typedef boost::geometry::model::polygon < boost::geometry::model::point<double, 2, boost::geometry::cs::geographic<boost::geometry::degree>> > polygon_t; polygon_t poly; boost::geometry::correct( poly ); return 0; }
Compiler output :
1>------ Build started: Project: boostscratch10, Configuration: Debug Win32 ------ 1> main.cpp 1>d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\area.hpp(41): error C2664: 'int boost::mpl::assertion_failed<false>(boost::mpl::assert<false>::type)': cannot convert argument 1 from 'boost::mpl::failed (thiscall boost::geometry::strategy::area::services::default_strategy<boost::geometry::geographic_tag,boost::geometry::model::point<double,2,boost::geometry::cs::geographic<boost::geometry::degree>>>::NOT_IMPLEMENTED_FOR_THIS_POINT_TYPE::* *)(boost::mpl::assert_::types<PointOfSegment,boost::mpl::na,boost::mpl::na,boost::mpl::na>)' to 'boost::mpl::assert<false>::type' 1> with 1> [ 1> PointOfSegment=boost::geometry::model::point<double,2,boost::geometry::cs::geographic<boost::geometry::degree>> 1> ] 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\area.hpp(41): note: No constructor could take the source type, or constructor overload resolution was ambiguous 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\default_area_result.hpp(42): note: see reference to class template instantiation 'boost::geometry::strategy::area::services::default_strategy<boost::geometry::geographic_tag,boost::geometry::model::point<double,2,boost::geometry::cs::geographic<boost::geometry::degree>>>' being compiled 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\correct.hpp(177): note: see reference to class template instantiation 'boost::geometry::default_area_result<Polygon>' being compiled 1> with 1> [ 1> Polygon=polygon_t 1> ] 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\correct.hpp(247): note: see reference to class template instantiation 'boost::geometry::detail::correct::correct_polygon<Polygon>' being compiled 1> with 1> [ 1> Polygon=polygon_t 1> ] 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\correct.hpp(287): note: see reference to class template instantiation 'boost::geometry::dispatch::correct<Geometry,boost::geometry::polygon_tag>' being compiled 1> with 1> [ 1> Geometry=polygon_t 1> ] 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\correct.hpp(285): note: while compiling class template member function 'void boost::geometry::resolve_variant::correct<Geometry>::apply(Geometry &)' 1> with 1> [ 1> Geometry=polygon_t 1> ] 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\correct.hpp(328): note: see reference to function template instantiation 'void boost::geometry::resolve_variant::correct<Geometry>::apply(Geometry &)' being compiled 1> with 1> [ 1> Geometry=polygon_t 1> ] 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\correct.hpp(328): note: see reference to class template instantiation 'boost::geometry::resolve_variant::correct<Geometry>' being compiled 1> with 1> [ 1> Geometry=polygon_t 1> ] 1> c:\users\sesa408586\documents\visual studio 2015\projects\boostscratch10\main.cpp(14): note: see reference to function template instantiation 'void boost::geometry::correct<polygon_t>(Geometry &)' being compiled 1> with 1> [ 1> Geometry=polygon_t 1> ] 1>d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\default_area_result.hpp(42): error C2039: 'type': is not a member of 'boost::geometry::strategy::area::services::default_strategy<boost::geometry::geographic_tag,boost::geometry::model::point<double,2,boost::geometry::cs::geographic<boost::geometry::degree>>>' 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\default_area_result.hpp(38): note: see declaration of 'boost::geometry::strategy::area::services::default_strategy<boost::geometry::geographic_tag,boost::geometry::model::point<double,2,boost::geometry::cs::geographic<boost::geometry::degree>>>' 1>d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\default_area_result.hpp(44): error C2955: 'boost::type': use of class template requires template argument list 1> d:\boost_1_61_0\boost_1_61_0\boost\type.hpp(14): note: see declaration of 'boost::type' 1>d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\default_area_result.hpp(44): error C2039: 'return_type': is not a member of 'boost::type' 1> d:\boost_1_61_0\boost_1_61_0\boost\type.hpp(14): note: see declaration of 'boost::type' 1>d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\default_area_result.hpp(44): error C3646: 'type': unknown override specifier 1>d:\boost_1_61_0\boost_1_61_0\boost\geometry\strategies\default_area_result.hpp(44): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>d:\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\correct.hpp(177): error C2039: 'type': is not a member of 'boost::geometry::default_area_result<Polygon>' 1> with 1> [ 1> Polygon=polygon_t 1> ] 1> d:\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\correct.hpp(177): note: see declaration of 'boost::geometry::default_area_result<Polygon>' 1> with 1> [ 1> Polygon=polygon_t 1> ] ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Change History (1)
comment:1 by , 6 years ago
Keywords: | area correct geographic added |
---|---|
Milestone: | To Be Determined → Boost 1.64.0 |
Resolution: | → fixed |
Status: | new → closed |
Type: | Bugs → Feature Requests |
Added support for geographic CS in area() fixes compilation error in correct():
https://github.com/boostorg/geometry/pull/359