// Boost.Geometry Index // // Quickbook Examples // // Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. // // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) //[rtree_quickstart //[rtree_quickstart_include #include #include #include #include // to store queries results #include // just for output #include #include namespace bg = boost::geometry; namespace bgi = boost::geometry::index; //] int main() { //[rtree_quickstart_valuetype typedef bg::model::point point; typedef bg::model::box box; typedef std::pair value; //] //[rtree_quickstart_create // create the rtree using default constructor bgi::rtree< value, bgi::quadratic<16> > rtree; //] //[rtree_quickstart_insert // create some values for ( unsigned i = 0 ; i < 10 ; ++i ) { // create a box box b(point(i + 0.0f, i + 0.0f), point(i + 0.5f, i + 0.5f)); // insert new value rtree.insert(std::make_pair(b, i)); } //] //[rtree_quickstart_spatial_query // find values intersecting some area defined by a box box query_box(point(0, 0), point(5, 5)); std::vector result_s; rtree.query(bgi::intersects(query_box), std::back_inserter(result_s)); //] //[rtree_quickstart_nearest_query // find 5 nearest values to a point std::vector result_n; rtree.query(bgi::nearest(point(0, 0), 5), std::back_inserter(result_n)); //] // note: in Boost.Geometry WKT representation of a box is polygon //[rtree_quickstart_output // display results std::cout << "spatial query box:" << std::endl; std::cout << bg::wkt(query_box) << std::endl; std::cout << "spatial query result:" << std::endl; BOOST_FOREACH(value const& v, result_s) std::cout << bg::wkt(v.first) << " - " << v.second << std::endl; std::cout << "knn query point:" << std::endl; std::cout << bg::wkt(point(0, 0)) << std::endl; std::cout << "knn query result:" << std::endl; BOOST_FOREACH(value const& v, result_n) std::cout << bg::wkt(v.first) << " - " << v.second << std::endl; //] return 0; } //]