...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
#include <boost/geometry.hpp> #include <boost/geometry/geometries/point.hpp> #include <boost/geometry/geometries/box.hpp> #include <boost/geometry/index/rtree.hpp> // just for output #include <iostream> namespace bg = boost::geometry; namespace bgi = boost::geometry::index; int main() { typedef bg::model::point<double, 2, bg::cs::cartesian> point; typedef point value; typedef bgi::rtree< value, bgi::linear<16> > rtree_t; // create the rtree using default constructor rtree_t rtree; // create some values for ( double f = 0 ; f < 10 ; f += 1 ) { // insert new value rtree.insert(point(f, f)); } // query point point pt(5.1, 5.1); // iterate over nearest Values for ( rtree_t::const_query_iterator it = rtree.qbegin(bgi::nearest(pt, 100)) ; it != rtree.qend() ; ++it ) { double d = bg::distance(pt, *it); std::cout << bg::wkt(*it) << ", distance= " << d << std::endl; // break if the distance is too big if ( d > 2 ) { std::cout << "break!" << std::endl; break; } } return 0; }
POINT(5 5), distance= 0.141421 POINT(6 6), distance= 1.27279 POINT(4 4), distance= 1.55563 POINT(7 7), distance= 2.68701 break!