2016-12-22 81 views
0

我想創建dynamic_quadratic的rtree,並在承包商處給它一個使用包裝算法的範圍。 在這裏我的代碼用正則二次方法來完成它。使用dynamic_quadratic進行boost中的包裝算法

namespace bg = boost::geometry; 
namespace bgi = boost::geometry::index; 

typedef bg::model::point<double , 3, bg::cs::cartesian> BoostPoint; 
typedef std::pair<BoostPoint, unsigned> PointValue; 

std::vector<PointValue> points; 
for(...) 
{ 
//fill in the points vector 
} 

bgi::rtree< PointValue, bgi::quadratic<16> > rtree_points(points); 

如何我可以做到這一點:
bgi::rtree< PointValue, bgi::dynamic_quadratic > rtree_points(points);

Alredy看看下面這個例子:
packing algorithm in rtree in boost

回答

1

當我張貼的答案,我查了一下位在互聯網上, 並沒有找到一個很好的答案。然後我意識到我需要給出關於我想創建樹的動態大小的第二個參數。所以我是如何做到的。

bgi::rtree<PointValue, bgi::dynamic_quadratic> rtree_points(points, points.size()); 
+1

你要通過'BGI :: dynamic_quadratic'對象作爲第二個構造參數但'BGI構造:: dynamic_quadratic'取RTREE的節點的元素的最大數量(這對應於'BGI: :二次模板參數)。在你的例子中,std :: vector'點的大小被隱式轉換爲'bgi :: dynamic_quadratic'(這可能根本不應該被允許),所以你創建的rtree只有一個包含所有元素的巨大節點。這rtree不會加快速度。您應該傳遞bgi :: dynamic_quadratic(16)作爲第二個參數。 –