Advertisement
dooly386

boost rtree test code

May 12th, 2019
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. #include <algorithm>
  2. #include <boost/geometry.hpp>
  3. #include <boost/geometry/geometries/point.hpp>
  4. #include <boost/geometry/geometries/box.hpp>
  5. #include <boost/geometry/index/rtree.hpp>
  6.  
  7.  
  8.  
  9.     typedef boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian> point;
  10.     typedef boost::geometry::model::box<point> box;
  11.     typedef std::pair<box, uint64_t> value;
  12.  
  13.     bgi::rtree< value, bgi::linear<16> > m_rt_linear;
  14.     bgi::rtree< value, bgi::quadratic<16> > m_rt_quad;
  15.     bgi::rtree< value, bgi::rstar<16> > m_rt_rstar;
  16.  
  17.     c_random<double> rand(-10000,10000);
  18.     c_stopwatch sw;
  19.  
  20.  
  21.     uint64_t count = 100000;
  22.     uint64_t querycount = 100000;
  23.  
  24.  
  25.     double sz = 2;
  26.     uint64_t obj = 0;
  27.  
  28.     c_console::out("----------------------------------");
  29.     c_console::out("--------------------");
  30.     sw.start("start box linear<16>");
  31.     for(uint64_t i=0;i<count;i++)
  32.     {
  33.         double x = rand.rand();
  34.         double y = rand.rand();
  35.  
  36.         box b(point(x-sz, y-sz), point(x+sz,y+sz));
  37.         m_rt_linear.insert(std::make_pair(b, i));
  38.     }
  39.     sw.ms("insert %d msec");
  40.  
  41.     for(uint64_t i=0;i<querycount;i++)
  42.     {
  43.         double x = rand.rand();
  44.         double y = rand.rand();
  45.         std::vector<value> result_n;
  46.         box query_box(point(x-sz, y-sz), point(x+sz,y+sz));
  47.         m_rt_linear.query(boost::geometry::index::intersects(query_box), std::back_inserter(result_n));
  48.     }
  49.     sw.ms("query %d msec");
  50.  
  51.  
  52.     c_console::out("--------------------");
  53.     sw.start("start box quad<16>");
  54.     for(uint64_t i=0;i<count;i++)
  55.     {
  56.         double x = rand.rand();
  57.         double y = rand.rand();
  58.  
  59.         box b(point(x-sz, y-sz), point(x+sz,y+sz));
  60.         m_rt_quad.insert(std::make_pair(b, i));
  61.     }
  62.     sw.ms("insert %d msec");
  63.     for(uint64_t i=0;i<querycount;i++)
  64.     {
  65.         double x = rand.rand();
  66.         double y = rand.rand();
  67.         std::vector<value> result_n;
  68.         box query_box(point(x-sz, y-sz), point(x+sz,y+sz));
  69.         m_rt_quad.query(boost::geometry::index::intersects(query_box), std::back_inserter(result_n));
  70.     }
  71.     sw.ms("query %d msec");
  72.  
  73.  
  74.  
  75.     c_console::out("--------------------");
  76.     sw.start("start box rstar<16>");
  77.     for(uint64_t i=0;i<count;i++)
  78.     {
  79.         double x = rand.rand();
  80.         double y = rand.rand();
  81.  
  82.         box b(point(x-sz, y-sz), point(x+sz,y+sz));
  83.         m_rt_rstar.insert(std::make_pair(b, i));
  84.     }
  85.     sw.ms("insert %d msec");
  86.     for(uint64_t i=0;i<querycount;i++)
  87.     {
  88.         double x = rand.rand();
  89.         double y = rand.rand();
  90.         std::vector<value> result_n;
  91.         box query_box(point(x-sz, y-sz), point(x+sz,y+sz));
  92.         m_rt_rstar.query(boost::geometry::index::intersects(query_box), std::back_inserter(result_n));
  93.     }
  94.     sw.ms("query %d msec");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement