Boost logo

Geometry :

Subject: Re: [geometry] Querying index using intersection with custom geometry
From: Michael Nett (netto.mihyaeru_at_[hidden])
Date: 2014-03-31 08:33:16


Hi again,

sorry for the confusion. I tried your example at work (with Boost 1.48) and
now at home (using 1.54) and both produce the same errors.

- Michael.

On Mon, Mar 31, 2014 at 7:56 PM, Adam Wulkiewicz
<adam.wulkiewicz_at_[hidden]>wrote:

> Hi Michael,
>
> Michael Nett wrote:
>
> Hi Adam,
>
> I've tried compiling your example code on Boost (version 1.48) and get
> the following compiler errors (sorry for the wall of text). Regarding your
> initial question, the objects we index in the R-Tree are pointers (of an
> abstract base class).
>
>
> AFAIR the R-tree was officially released in Boost 1.54 so my question is
> exactly what version of Boost.Geometry are you using?
>
>
> Regards,
> Michael
>
> In file included from
> /usr/local/include/boost/geometry/geometries/concepts/check.hpp:33:0,
> from
> /usr/local/include/boost/geometry/algorithms/append.hpp:24,
> from
> /usr/local/include/boost/geometry/algorithms/detail/assign_values.hpp:29,
> from
> /usr/local/include/boost/geometry/strategies/cartesian/cart_intersect.hpp:21,
> from
> /usr/local/include/boost/geometry/strategies/intersection.hpp:22,
> from
> /usr/local/include/boost/geometry/strategies/strategies.hpp:25,
> from /usr/local/include/boost/geometry/geometry.hpp:35,
> from /usr/local/include/boost/geometry/index/rtree.hpp:20,
> from foo.cc:1:
> /usr/local/include/boost/geometry/algorithms/not_implemented.hpp: In
> instantiation of ‘boost::geometry::nyi::not_implemented_error<void, void,
> void>’:
> /usr/local/include/boost/geometry/algorithms/not_implemented.hpp:103:8:
> instantiated from ‘boost::geometry::not_implemented<void, void, void>’
> /usr/local/include/boost/geometry/geometries/concepts/check.hpp:66:8:
> instantiated from ‘boost::geometry::dispatch::check<const MyFrustum, void,
> true>’
> /usr/local/include/boost/geometry/geometries/concepts/check.hpp:157:8:
> instantiated from ‘boost::geometry::concept::detail::checker<const
> MyFrustum>’
> /usr/local/include/boost/geometry/geometries/concepts/check.hpp:180:31:
> instantiated from ‘void boost::geometry::concept::check() [with Geometry =
> const MyFrustum]’
> /usr/local/include/boost/geometry/algorithms/intersects.hpp:97:5:
> instantiated from ‘bool boost::geometry::intersects(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:185:43:
> instantiated from ‘static bool
> boost::geometry::index::detail::spatial_predicate_call<boost::geometry::index::detail::intersects_tag>::apply(const
> G1&, const G2&) [with G1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, G2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:306:75:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::apply(const
> Pred&, const Value&, const Indexable&) [with Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry = MyFrustum, Tag =
> boost::geometry::index::detail::intersects_tag,
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::Pred =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:617:62:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicates_check_impl<Predicate, Tag,
> First, Last>::apply(const Predicate&, const Value&, const Indexable&) [with
> Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Predicate =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:685:24:
> instantiated from ‘bool
> boost::geometry::index::detail::predicates_check(const Predicates&, const
> Value&, const Indexable&) [with Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Value = int,
> Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >]’
> /usr/local/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp:45:13:
> instantiated from ‘void
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates,
> OutIter>::operator()(const internal_node&) [with Value =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Options =
> boost::geometry::index::detail::rtree::options<boost::geometry::index::rstar<8ul>,
> boost::geometry::index::detail::rtree::insert_reinsert_tag,
> boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag,
> boost::geometry::index::detail::rtree::split_default_tag,
> boost::geometry::index::detail::rtree::rstar_tag,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Translator =
> boost::geometry::index::detail::translator<boost::geometry::index::indexable<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::index::equal_to<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >, Box =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Allocators =
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, OutIter =
> std::back_insert_iterator<std::vector<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >,
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates, OutIter>::internal_node =
> boost::geometry::index::detail::rtree::dynamic_internal_node<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>]’
> foo.cc:46:1: instantiated from here
> /usr/local/include/boost/geometry/algorithms/not_implemented.hpp:64:5:
> error: no matching function for call to
> ‘assertion_failed(mpl_::failed************
> (boost::geometry::nyi::not_implemented_error<void, void,
> void>::THIS_OPERATION_IS_NOT_OR_NOT_YET_IMPLEMENTED::************)(mpl_::assert_::types<void,
> void, void, mpl_::na>))’
> /usr/local/include/boost/geometry/algorithms/not_implemented.hpp:64:5:
> note: candidate is:
> /usr/local/include/boost/mpl/assert.hpp:82:5: note: template<bool C> int
> mpl_::assertion_failed(typename mpl_::assert<C>::type)
> In file included from
> /usr/local/include/boost/geometry/core/reverse_dispatch.hpp:25:0,
> from
> /usr/local/include/boost/geometry/algorithms/distance.hpp:25,
> from
> /usr/local/include/boost/geometry/strategies/cartesian/centroid_weighted_length.hpp:16,
> from
> /usr/local/include/boost/geometry/strategies/strategies.hpp:33,
> from /usr/local/include/boost/geometry/geometry.hpp:35,
> from /usr/local/include/boost/geometry/index/rtree.hpp:20,
> from foo.cc:1:
> /usr/local/include/boost/geometry/core/geometry_id.hpp: In instantiation
> of ‘boost::geometry::core_dispatch::geometry_id<void>’:
> /usr/local/include/boost/geometry/core/geometry_id.hpp:87:8:
> instantiated from ‘boost::geometry::geometry_id<MyFrustum>’
> /usr/local/include/boost/geometry/core/reverse_dispatch.hpp:57:8:
> instantiated from
> ‘boost::geometry::reverse_dispatch<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, MyFrustum>’
> /usr/local/include/boost/geometry/algorithms/disjoint.hpp:344:80:
> instantiated from ‘bool boost::geometry::disjoint(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/algorithms/intersects.hpp:99:53:
> instantiated from ‘bool boost::geometry::intersects(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:185:43:
> instantiated from ‘static bool
> boost::geometry::index::detail::spatial_predicate_call<boost::geometry::index::detail::intersects_tag>::apply(const
> G1&, const G2&) [with G1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, G2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:306:75:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::apply(const
> Pred&, const Value&, const Indexable&) [with Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry = MyFrustum, Tag =
> boost::geometry::index::detail::intersects_tag,
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::Pred =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:617:62:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicates_check_impl<Predicate, Tag,
> First, Last>::apply(const Predicate&, const Value&, const Indexable&) [with
> Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Predicate =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:685:24:
> instantiated from ‘bool
> boost::geometry::index::detail::predicates_check(const Predicates&, const
> Value&, const Indexable&) [with Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Value = int,
> Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >]’
> /usr/local/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp:45:13:
> instantiated from ‘void
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates,
> OutIter>::operator()(const internal_node&) [with Value =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Options =
> boost::geometry::index::detail::rtree::options<boost::geometry::index::rstar<8ul>,
> boost::geometry::index::detail::rtree::insert_reinsert_tag,
> boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag,
> boost::geometry::index::detail::rtree::split_default_tag,
> boost::geometry::index::detail::rtree::rstar_tag,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Translator =
> boost::geometry::index::detail::translator<boost::geometry::index::indexable<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::index::equal_to<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >, Box =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Allocators =
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, OutIter =
> std::back_insert_iterator<std::vector<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >,
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates, OutIter>::internal_node =
> boost::geometry::index::detail::rtree::dynamic_internal_node<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>]’
> foo.cc:46:1: instantiated from here
> /usr/local/include/boost/geometry/core/geometry_id.hpp:39:5: error: no
> matching function for call to ‘assertion_failed(mpl_::failed************
> (boost::geometry::core_dispatch::geometry_id<void>::NOT_IMPLEMENTED_FOR_THIS_GEOMETRY_TYPE::************)(mpl_::assert_::types<void,
> mpl_::na, mpl_::na, mpl_::na>))’
> /usr/local/include/boost/geometry/core/geometry_id.hpp:39:5: note:
> candidate is:
> /usr/local/include/boost/mpl/assert.hpp:82:5: note: template<bool C> int
> mpl_::assertion_failed(typename mpl_::assert<C>::type)
> In file included from
> /usr/local/include/boost/geometry/algorithms/distance.hpp:25:0,
> from
> /usr/local/include/boost/geometry/strategies/cartesian/centroid_weighted_length.hpp:16,
> from
> /usr/local/include/boost/geometry/strategies/strategies.hpp:33,
> from /usr/local/include/boost/geometry/geometry.hpp:35,
> from /usr/local/include/boost/geometry/index/rtree.hpp:20,
> from foo.cc:1:
> /usr/local/include/boost/geometry/core/reverse_dispatch.hpp: In
> instantiation of
> ‘boost::geometry::reverse_dispatch<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, MyFrustum>’:
> /usr/local/include/boost/geometry/algorithms/disjoint.hpp:344:80:
> instantiated from ‘bool boost::geometry::disjoint(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/algorithms/intersects.hpp:99:53:
> instantiated from ‘bool boost::geometry::intersects(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:185:43:
> instantiated from ‘static bool
> boost::geometry::index::detail::spatial_predicate_call<boost::geometry::index::detail::intersects_tag>::apply(const
> G1&, const G2&) [with G1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, G2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:306:75:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::apply(const
> Pred&, const Value&, const Indexable&) [with Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry = MyFrustum, Tag =
> boost::geometry::index::detail::intersects_tag,
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::Pred =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:617:62:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicates_check_impl<Predicate, Tag,
> First, Last>::apply(const Predicate&, const Value&, const Indexable&) [with
> Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Predicate =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:685:24:
> instantiated from ‘bool
> boost::geometry::index::detail::predicates_check(const Predicates&, const
> Value&, const Indexable&) [with Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Value = int,
> Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >]’
> /usr/local/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp:45:13:
> instantiated from ‘void
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates,
> OutIter>::operator()(const internal_node&) [with Value =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Options =
> boost::geometry::index::detail::rtree::options<boost::geometry::index::rstar<8ul>,
> boost::geometry::index::detail::rtree::insert_reinsert_tag,
> boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag,
> boost::geometry::index::detail::rtree::split_default_tag,
> boost::geometry::index::detail::rtree::rstar_tag,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Translator =
> boost::geometry::index::detail::translator<boost::geometry::index::indexable<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::index::equal_to<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >, Box =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Allocators =
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, OutIter =
> std::back_insert_iterator<std::vector<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >,
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates, OutIter>::internal_node =
> boost::geometry::index::detail::rtree::dynamic_internal_node<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>]’
> foo.cc:46:1: instantiated from here
> /usr/local/include/boost/geometry/core/reverse_dispatch.hpp:57:8: error:
> no type named ‘type’ in ‘struct boost::geometry::geometry_id<MyFrustum>’
> In file included from
> /usr/local/include/boost/geometry/algorithms/num_points.hpp:26:0,
> from
> /usr/local/include/boost/geometry/algorithms/detail/throw_on_empty_input.hpp:15,
> from
> /usr/local/include/boost/geometry/algorithms/distance.hpp:29,
> from
> /usr/local/include/boost/geometry/strategies/cartesian/centroid_weighted_length.hpp:16,
> from
> /usr/local/include/boost/geometry/strategies/strategies.hpp:33,
> from /usr/local/include/boost/geometry/geometry.hpp:35,
> from /usr/local/include/boost/geometry/index/rtree.hpp:20,
> from foo.cc:1:
> /usr/local/include/boost/geometry/algorithms/disjoint.hpp: In function
> ‘bool boost::geometry::disjoint(const Geometry1&, const Geometry2&) [with
> Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’:
> /usr/local/include/boost/geometry/algorithms/intersects.hpp:99:53:
> instantiated from ‘bool boost::geometry::intersects(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:185:43:
> instantiated from ‘static bool
> boost::geometry::index::detail::spatial_predicate_call<boost::geometry::index::detail::intersects_tag>::apply(const
> G1&, const G2&) [with G1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, G2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:306:75:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::apply(const
> Pred&, const Value&, const Indexable&) [with Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry = MyFrustum, Tag =
> boost::geometry::index::detail::intersects_tag,
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::Pred =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:617:62:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicates_check_impl<Predicate, Tag,
> First, Last>::apply(const Predicate&, const Value&, const Indexable&) [with
> Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Predicate =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:685:24:
> instantiated from ‘bool
> boost::geometry::index::detail::predicates_check(const Predicates&, const
> Value&, const Indexable&) [with Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Value = int,
> Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >]’
> /usr/local/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp:45:13:
> instantiated from ‘void
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates,
> OutIter>::operator()(const internal_node&) [with Value =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Options =
> boost::geometry::index::detail::rtree::options<boost::geometry::index::rstar<8ul>,
> boost::geometry::index::detail::rtree::insert_reinsert_tag,
> boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag,
> boost::geometry::index::detail::rtree::split_default_tag,
> boost::geometry::index::detail::rtree::rstar_tag,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Translator =
> boost::geometry::index::detail::translator<boost::geometry::index::indexable<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::index::equal_to<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >, Box =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Allocators =
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, OutIter =
> std::back_insert_iterator<std::vector<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >,
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates, OutIter>::internal_node =
> boost::geometry::index::detail::rtree::dynamic_internal_node<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>]’
> foo.cc:46:1: instantiated from here
> /usr/local/include/boost/geometry/algorithms/disjoint.hpp:344:80: error:
> no type named ‘type’ in ‘struct
> boost::geometry::reverse_dispatch<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, MyFrustum>’
> In file included from
> /usr/local/include/boost/geometry/core/coordinate_system.hpp:20:0,
> from /usr/local/include/boost/geometry/core/cs.hpp:21,
> from /usr/local/include/boost/geometry/geometry.hpp:19,
> from /usr/local/include/boost/geometry/index/rtree.hpp:20,
> from foo.cc:1:
> /usr/local/include/boost/geometry/core/point_type.hpp: At global scope:
> /usr/local/include/boost/geometry/core/point_type.hpp: In instantiation of
> ‘boost::geometry::traits::point_type<MyFrustum>’:
> /usr/local/include/boost/geometry/core/point_type.hpp:66:17:
> instantiated from ‘boost::geometry::core_dispatch::point_type<void,
> MyFrustum>’
> /usr/local/include/boost/geometry/core/coordinate_dimension.hpp:58:8:
> instantiated from ‘boost::geometry::core_dispatch::dimension<void,
> MyFrustum>’
> /usr/local/include/boost/geometry/core/coordinate_dimension.hpp:74:8:
> instantiated from ‘boost::geometry::dimension<const MyFrustum>’
> /usr/local/include/boost/geometry/core/coordinate_dimension.hpp:121:1:
> instantiated from ‘void boost::geometry::assert_dimension_equal() [with G1
> = const boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, G2 = const MyFrustum]’
> /usr/local/include/boost/geometry/geometries/concepts/check.hpp:195:5:
> instantiated from ‘void
> boost::geometry::concept::check_concepts_and_equal_dimensions() [with
> Geometry1 = const
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = const MyFrustum]’
> /usr/local/include/boost/geometry/algorithms/disjoint.hpp:338:5: [
> skipping 2 instantiation contexts ]
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:185:43:
> instantiated from ‘static bool
> boost::geometry::index::detail::spatial_predicate_call<boost::geometry::index::detail::intersects_tag>::apply(const
> G1&, const G2&) [with G1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, G2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:306:75:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::apply(const
> Pred&, const Value&, const Indexable&) [with Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry = MyFrustum, Tag =
> boost::geometry::index::detail::intersects_tag,
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::Pred =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:617:62:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicates_check_impl<Predicate, Tag,
> First, Last>::apply(const Predicate&, const Value&, const Indexable&) [with
> Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Predicate =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:685:24:
> instantiated from ‘bool
> boost::geometry::index::detail::predicates_check(const Predicates&, const
> Value&, const Indexable&) [with Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Value = int,
> Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >]’
> /usr/local/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp:45:13:
> instantiated from ‘void
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates,
> OutIter>::operator()(const internal_node&) [with Value =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Options =
> boost::geometry::index::detail::rtree::options<boost::geometry::index::rstar<8ul>,
> boost::geometry::index::detail::rtree::insert_reinsert_tag,
> boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag,
> boost::geometry::index::detail::rtree::split_default_tag,
> boost::geometry::index::detail::rtree::rstar_tag,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Translator =
> boost::geometry::index::detail::translator<boost::geometry::index::indexable<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::index::equal_to<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >, Box =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Allocators =
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, OutIter =
> std::back_insert_iterator<std::vector<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >,
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates, OutIter>::internal_node =
> boost::geometry::index::detail::rtree::dynamic_internal_node<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>]’
> foo.cc:46:1: instantiated from here
> /usr/local/include/boost/geometry/core/point_type.hpp:45:5: error: no
> matching function for call to ‘assertion_failed(mpl_::failed************
> (boost::geometry::traits::point_type<MyFrustum>::NOT_IMPLEMENTED_FOR_THIS_POINT_TYPE::************)(mpl_::assert_::types<MyFrustum,
> mpl_::na, mpl_::na, mpl_::na>))’
> /usr/local/include/boost/geometry/core/point_type.hpp:45:5: note:
> candidate is:
> /usr/local/include/boost/mpl/assert.hpp:82:5: note: template<bool C> int
> mpl_::assertion_failed(typename mpl_::assert<C>::type)
> /usr/local/include/boost/geometry/core/point_type.hpp: In instantiation of
> ‘boost::geometry::core_dispatch::point_type<void, MyFrustum>’:
> /usr/local/include/boost/geometry/core/coordinate_dimension.hpp:58:8:
> instantiated from ‘boost::geometry::core_dispatch::dimension<void,
> MyFrustum>’
> /usr/local/include/boost/geometry/core/coordinate_dimension.hpp:74:8:
> instantiated from ‘boost::geometry::dimension<const MyFrustum>’
> /usr/local/include/boost/geometry/core/coordinate_dimension.hpp:121:1:
> instantiated from ‘void boost::geometry::assert_dimension_equal() [with G1
> = const boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, G2 = const MyFrustum]’
> /usr/local/include/boost/geometry/geometries/concepts/check.hpp:195:5:
> instantiated from ‘void
> boost::geometry::concept::check_concepts_and_equal_dimensions() [with
> Geometry1 = const
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = const MyFrustum]’
> /usr/local/include/boost/geometry/algorithms/disjoint.hpp:338:5:
> instantiated from ‘bool boost::geometry::disjoint(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/algorithms/intersects.hpp:99:53:
> instantiated from ‘bool boost::geometry::intersects(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:185:43:
> instantiated from ‘static bool
> boost::geometry::index::detail::spatial_predicate_call<boost::geometry::index::detail::intersects_tag>::apply(const
> G1&, const G2&) [with G1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, G2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:306:75:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::apply(const
> Pred&, const Value&, const Indexable&) [with Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry = MyFrustum, Tag =
> boost::geometry::index::detail::intersects_tag,
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::Pred =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:617:62:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicates_check_impl<Predicate, Tag,
> First, Last>::apply(const Predicate&, const Value&, const Indexable&) [with
> Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Predicate =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:685:24:
> instantiated from ‘bool
> boost::geometry::index::detail::predicates_check(const Predicates&, const
> Value&, const Indexable&) [with Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Value = int,
> Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >]’
> /usr/local/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp:45:13:
> instantiated from ‘void
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates,
> OutIter>::operator()(const internal_node&) [with Value =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Options =
> boost::geometry::index::detail::rtree::options<boost::geometry::index::rstar<8ul>,
> boost::geometry::index::detail::rtree::insert_reinsert_tag,
> boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag,
> boost::geometry::index::detail::rtree::split_default_tag,
> boost::geometry::index::detail::rtree::rstar_tag,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Translator =
> boost::geometry::index::detail::translator<boost::geometry::index::indexable<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::index::equal_to<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >, Box =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Allocators =
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, OutIter =
> std::back_insert_iterator<std::vector<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >,
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates, OutIter>::internal_node =
> boost::geometry::index::detail::rtree::dynamic_internal_node<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>]’
> foo.cc:46:1: instantiated from here
> /usr/local/include/boost/geometry/core/point_type.hpp:66:17: error: no
> type named ‘type’ in ‘struct boost::geometry::traits::point_type<MyFrustum>’
> In file included from
> /usr/local/include/boost/geometry/geometries/concepts/point_concept.hpp:22:0,
> from
> /usr/local/include/boost/geometry/arithmetic/arithmetic.hpp:23,
> from /usr/local/include/boost/geometry/geometry.hpp:32,
> from /usr/local/include/boost/geometry/index/rtree.hpp:20,
> from foo.cc:1:
> /usr/local/include/boost/geometry/core/coordinate_dimension.hpp: In
> function ‘void boost::geometry::assert_dimension_equal() [with G1 = const
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, G2 = const MyFrustum]’:
> /usr/local/include/boost/geometry/geometries/concepts/check.hpp:195:5:
> instantiated from ‘void
> boost::geometry::concept::check_concepts_and_equal_dimensions() [with
> Geometry1 = const
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = const MyFrustum]’
> /usr/local/include/boost/geometry/algorithms/disjoint.hpp:338:5:
> instantiated from ‘bool boost::geometry::disjoint(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/algorithms/intersects.hpp:99:53:
> instantiated from ‘bool boost::geometry::intersects(const Geometry1&, const
> Geometry2&) [with Geometry1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:185:43:
> instantiated from ‘static bool
> boost::geometry::index::detail::spatial_predicate_call<boost::geometry::index::detail::intersects_tag>::apply(const
> G1&, const G2&) [with G1 =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, G2 = MyFrustum]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:306:75:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::apply(const
> Pred&, const Value&, const Indexable&) [with Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Geometry = MyFrustum, Tag =
> boost::geometry::index::detail::intersects_tag,
> boost::geometry::index::detail::predicate_check<boost::geometry::index::detail::spatial_predicate<Geometry,
> Tag, false>, boost::geometry::index::detail::bounds_tag>::Pred =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:617:62:
> instantiated from ‘static bool
> boost::geometry::index::detail::predicates_check_impl<Predicate, Tag,
> First, Last>::apply(const Predicate&, const Value&, const Indexable&) [with
> Value = int, Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Predicate =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u]’
> /usr/local/include/boost/geometry/index/detail/predicates.hpp:685:24:
> instantiated from ‘bool
> boost::geometry::index::detail::predicates_check(const Predicates&, const
> Value&, const Indexable&) [with Tag =
> boost::geometry::index::detail::bounds_tag, unsigned int First = 0u,
> unsigned int Last = 1u, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, Value = int,
> Indexable =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >]’
> /usr/local/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp:45:13:
> instantiated from ‘void
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates,
> OutIter>::operator()(const internal_node&) [with Value =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Options =
> boost::geometry::index::detail::rtree::options<boost::geometry::index::rstar<8ul>,
> boost::geometry::index::detail::rtree::insert_reinsert_tag,
> boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag,
> boost::geometry::index::detail::rtree::split_default_tag,
> boost::geometry::index::detail::rtree::rstar_tag,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Translator =
> boost::geometry::index::detail::translator<boost::geometry::index::indexable<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::index::equal_to<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >, Box =
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, Allocators =
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>, Predicates =
> boost::geometry::index::detail::spatial_predicate<MyFrustum,
> boost::geometry::index::detail::intersects_tag, false>, OutIter =
> std::back_insert_iterator<std::vector<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > > >,
> boost::geometry::index::detail::rtree::visitors::spatial_query<Value,
> Options, Translator, Box, Allocators, Predicates, OutIter>::internal_node =
> boost::geometry::index::detail::rtree::dynamic_internal_node<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::allocators<std::allocator<boost::geometry::model::box<boost::geometry::model::point<float,
> 2ul, boost::geometry::cs::cartesian> > >,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >, boost::geometry::index::rstar<8ul>,
> boost::geometry::model::box<boost::geometry::model::point<float, 2ul,
> boost::geometry::cs::cartesian> >,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>,
> boost::geometry::index::detail::rtree::node_d_mem_static_tag>]’
> foo.cc:46:1: instantiated from here
> /usr/local/include/boost/geometry/core/coordinate_dimension.hpp:121:1:
> error: no type named ‘type’ in ‘struct boost::geometry::dimension<const
> MyFrustum>’
>
>
>
>
> On Fri, Mar 28, 2014 at 10:00 PM, Adam Wulkiewicz <
> adam.wulkiewicz_at_[hidden]> wrote:
>
>> Hi Michael,
>>
>> Michael Nett wrote:
>>
>> Hello,
>>
>> We're considering using Boost.Geometry in one of our projects, but we
>> require the ability to query an index using a super set of the geometric
>> shapes provided by the library (frustum, conical frustums and complex
>> geometry).
>>
>> We have tried implementing template specializations as discussed in
>> this thread (
>> http://stackoverflow.com/questions/19490435/boost-geometry-spatial-query-shapes
>> ).
>>
>> namespace boost { namespace geometry {
>> template <typename Box> inline
>> bool intersects(Box const& b, MyFrustum const& f)
>> {
>> // your implementation
>> }
>> }}
>>
>> However, compiling this provides the following error.
>>
>> /usr/include/boost/geometry/core/point_type.hpp:45:5: error: no
>> matching function for call to 'assertion_failed(mpl_::failed************
>> (boost::geometry::traits::point_type<MyGeometry>::NOT_IMPLEMENTED_FOR_THIS_POIN‌
>> ​ T_TYPE::************)(mpl_::assert_::types<MyGeometry, mpl_::na,
>> mpl_::na, mpl_::na>))'
>>
>> I tried digging into the source files, but my understanding of the
>> geometry library is too limited to figure out what's going on.
>>
>> Can anyone advise on how to approach the problem?
>>
>>
>> This assertion fails if you try to get a point_type for the type which
>> is not adapted to any of the Boost.Geometry concepts. So you must call
>> something like geometry::point_type<MyGeometry>::type or pass an object of
>> MyGeometry to one of the existing functions of Boost.Geometry which tries
>> to use is as a properly adapted Geometry.
>>
>> Did you check if your implementation of intersects() work without the
>> rtree?
>>
>> Btw, what's the Value type stored in the rtree?
>>
>> Below is the fully working (for me) example, maybe it will help you to
>> find the cause:
>>
>> #include <boost/geometry/index/rtree.hpp>
>>
>> struct MyFrustum
>> {
>> MyFrustum(int d) : dummy(d) {}
>> int dummy;
>> };
>>
>> namespace boost { namespace geometry {
>>
>> // This will be called for Nodes Bounds and Indexables!
>>
>> template <typename Box> inline
>> bool intersects(Box const& b, MyFrustum const& f)
>> {
>> std::cout << "checking the intersection with " << f.dummy <<
>> std::endl;
>> return true; // always intersects
>> }
>>
>> }}
>>
>> int main()
>> {
>> namespace bg = boost::geometry;
>> namespace bgi = bg::index;
>> namespace bgm = bg::model;
>> typedef bgm::point<float, 2, bg::cs::cartesian> pt;
>> typedef bgm::box<pt> box;
>>
>> // check your implementation
>> bool ok = bg::intersects(box(pt(0, 0), pt(1, 1)), MyFrustum(5));
>>
>> std::cout << "-------------------" << std::endl;
>>
>> // now use the rtree
>> bgi::rtree<box, bgi::rstar<8> > rt;
>> // insert some values
>> rt.insert(box(pt(0, 0), pt(1, 1)));
>> rt.insert(box(pt(2, 2), pt(3, 3)));
>>
>> // performa a query
>> std::vector<box> vec;
>> rt.query(bgi::intersects(MyFrustum(10)), std::back_inserter(vec));
>>
>> std::cout << vec.size() << std::endl;
>> }
>>
>> The above should print:
>>
>> checking the intersection with 5
>> -------------------
>> checking the intersection with 10
>> checking the intersection with 10
>> 2
>>
>> Let me know if it helps.
>>
>> Regards,
>> Adam
>>
>> _______________________________________________
>> Geometry mailing list
>> Geometry_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/geometry
>>
>>
>
>
> _______________________________________________
> Geometry mailing listGeometry_at_[hidden]http://lists.boost.org/mailman/listinfo.cgi/geometry
>
>
>
>
>
> _______________________________________________
> Geometry mailing list
> Geometry_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/geometry
>
>



Geometry list run by mateusz at loskot.net