#include #include #include #include #include typedef boost::geometry::model::point BGCartesianPoint; typedef boost::geometry::model::box BGCartesianBox; typedef boost::geometry::model::segment BGCartesianSegment; namespace bgi = boost::geometry::index; struct myTranslator { typedef BGCartesianBox result_type; result_type operator()(BGCartesianPoint const& seg) const { result_type envelope; boost::geometry::envelope(seg, envelope); return envelope; } bool equals(BGCartesianPoint const& go1, BGCartesianPoint const& go2) const { return (go1.get<0>() == go2.get<0>()) && (go1.get<1>() == go2.get<1>()); } }; typedef bgi::rtree , myTranslator> BGRTree; int main() { BGRTree rTree; for (int i = 0; i < 50; ++i) { BGCartesianPoint p(i, i); rTree.insert(p); BGCartesianBox envelope(BGCartesianPoint(i-0.5, i-0.5), BGCartesianPoint(i+0.5, i+0.5)); std::deque dq; if (rTree.query(envelope, std::back_inserter(dq))) std::cout << "Retrieved inserted object nr. " << i << "\n"; else std::cout << "Could not retrieve inserted object nr. " << i << "\n"; } std::cout << "Total objects: " << rTree.size(); std::cin.get(); return 0; }