Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <boost/geometry.hpp>
- #include <boost/geometry/geometries/point.hpp>
- #include <boost/geometry/index/rtree.hpp>
- namespace bg = boost::geometry;
- namespace bgi = boost::geometry::index;
- typedef bg::model::point<float, 2, bg::cs::cartesian> point;
- typedef std::pair<point, unsigned> value;
- int main(int argc, char *argv[])
- {
- bgi::rtree< value, bgi::quadratic<16> > rtree;
- // create some values
- for ( unsigned i = 0 ; i < 10 ; ++i )
- {
- point p = point(i, i);
- rtree.insert(std::make_pair(p, i));
- }
- // search for nearest neighbours
- std::vector<value> returned_values;
- point sought = point(5, 5);
- rtree.query(bgi::satisfies([&](value const& v) {return bg::distance(v.first, sought) < 2;}),
- std::back_inserter(returned_values));
- // print returned values
- value to_print_out;
- for (size_t i = 0; i < returned_values.size(); i++) {
- to_print_out = returned_values[i];
- float x = to_print_out.first.get<0>();
- float y = to_print_out.first.get<1>();
- std::cout << "Select point: " << to_print_out.second << std::endl;
- std::cout << "x: " << x << ", y: " << y << std::endl;
- }
- return 0;
- }
- $ c++ -std=c++11 -I/opt/local/include -L/opt/local/lib main.cpp -o geom && ./geom
- Select point: 4
- x: 4, y: 4
- Select point: 5
- x: 5, y: 5
- Select point: 6
- x: 6, y: 6
- for ( Rtree::const_query_iterator it = tree.qbegin(bgi::nearest(pt, 10000)) ;
- it != tree.qend() ; ++it )
- {
- // do something with value
- if ( has_enough_nearest_values() )
- break;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement