【问题标题】:packing algorithm in rtree in boost with dynamic_quadraticrtree中的打包算法与dynamic_quadratic一起提升
【发布时间】:2017-05-08 03:16:14
【问题描述】:

我想用 dynamic_quadratic 创建 rtree,并在承包商处给它一个使用打包算法的范围。 这是我使用常规二次函数的代码。

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&lt; PointValue, bgi::dynamic_quadratic &gt; rtree_points(points);

已经看过这个例子了:
packing algorithm in rtree in boost

【问题讨论】:

    标签: c++ algorithm boost boost-geometry


    【解决方案1】:

    当我发布答案时,我在互联网上搜索了一下, 并没有找到一个好的答案。然后我意识到我需要提供第二个关于我想要创建树的动态大小的参数。所以我是怎么做到的。

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

    【讨论】:

    • 您必须将bgi::dynamic_quadratic 对象作为第二个构造函数参数传递,但bgi::dynamic_quadratic 的构造函数采用rtree 节点的最大元素数(这对应于bgi::quadratic 模板参数)。在您的示例中,点 std::vector 的大小被隐式转换为 bgi::dynamic_quadratic (这可能根本不应该被允许),因此您创建的 rtree 只有一个包含所有元素的巨大节点。这个 rtree 不会加速任何事情。您应该将 bgi::dynamic_quadratic(16) 作为第二个参数传递。
    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多