Subject: [ggl] boost geometry rtree
From: Adam Wulkiewicz (adam.wulkiewicz)
Date: 2011-07-09 02:42:40
> I've been trying to use the rtree in extensions but am failing at getting a
> basic test running http://codepad.org/oBLTP4dy
> I'm sure I'm missing something obvious.
> This was compiled with 0.9.0 but I've also tried with trunk and had no
Yes, this is because geometry::area don't work for all types it should.
Try using model::point instead of model::d2::point_xy.
You can also try different rtree's implementation which you can find
Interface is slightly different, e.g. elements numbers, and used
algorithms are passed as template arguments. Just check the examples in
It looks like this:
namespace g = boost::geometry;
<float, 2, g::cs::cartesian> P;
typedef g::model::box<P> B;
<B, g::index::rstar<4, 2> > t;
g::index::insert(t, B(P(0, 0), P(1, 1)));
g::index::insert(t, B(P(2, 2), P(3, 3)));
g::index::insert(t, B(P(4, 4), P(5, 5)));
g::index::insert(t, B(P(6, 6), P(7, 7)));
g::index::insert(t, B(P(8, 8), P(9, 9)));
namespace f = g::index::filters;
t | f::spatially_filtered(B(P(2.5f, 2.5f), P(4.5f, 4.5f))))
// do something
Btw, I've implemented this new interface and moved repository as
described above. Since elements numbers are known in compile time
boost::arrays may be used instead of std::vectors but one can't pass
parameters to the rtree in run-time. There is new type of nodes
implemented which the tree creation is faster for and it takes less
memory space. Thoughts?
Geometry list run by mateusz at loskot.net