2016-12-22 7 views
0

Я хочу создать rtree с dynamic_quadratic и дать ему диапазон у подрядчика, чтобы он использовал алгоритм упаковки. Здесь мой код для этого с правильной квадратичной.алгоритм упаковки в rtree в boost с dynamic_quadratic

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);?

посмотреть на настроек уже этот пример:
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) в качестве второго параметра. –