Python QuadTree索引返回节点

时间:2014-07-31 12:12:48

标签: python geospatial

我有一个包含点的城市的边界框。我想根据点的重要性将这个边界框划分为子框。例如,具有更多点的区域应对应于更多数量的子框。点数较少的区域应响应较小宽度的框。

我知道一个好的数据结构是四叉树或KD树。事实证明,这些图书馆中的大多数只是给我最近的邻居(这是他们的主要用途)。我想不是最近的邻居,而是一个点的子框。 (比方说叶片ID)这可能吗?或事件Quadtree-Data结构正确使用? 换句话说,我需要四叉树只是将区域划分为子框而不是用作索引。

天真的解决方案是将边界框划分为相等的子框。

1 个答案:

答案 0 :(得分:1)

这基本上是R-Tree的作用。它基于边界矩形(框)生成或多或少平衡的树,但是基于框内的几何对象的数量,而不是框的区域。另一方面,KD树在x中然后在y方向上递归地划分空间,这可以进行非常有效的搜索,但是不能针对具有更低或更高密度点的区域进行调整。这里有一个R-Trees的Python实现,https://pypi.python.org/pypi/Rtree/。我从来没有使用过它(它内置于Postgres / Postgis中我一直使用它),但我觉得它对你所描述的内容有用。