2011-05-19 48 views
5

所有,纯Python实现四叉树

有关于实施使用Python四叉树的几个例子,但我的问题是,没有人知道在一个单一的.py文件用纯Python作为一类的,我可以很容易地包括在我的项目中?这里列出了三种最受欢迎​​的软件包Are any of these quad-tree libraries any good?,但由于运行它们需要的所有依赖关系,所以我没有使用它们。我真的很喜欢轻巧和使用相对简单的东西。我想通过传递整个地球的界限来调用脚本,并从那里开始工作。 myMethod((-180,-90,180,90))

感谢, 亚当

+2

那么你链接到的问题中的第二个库呢?(http://stackoverflow.com/questions/2298517/are-any-of-these-quad-tree-libraries-any-good)?依赖关系是微不足道的。 – NPE 2011-05-19 14:36:56

回答

1

看看Rect。你需要2个文件。你可以将它们合并成一个。

+0

code.google.com上的[Rect](http://pypi.python.org/pypi/Rect)软件包的维基页面(实际上整个项目)似乎没有了。任何人都知道缺失信息的更新链接? – Inactivist 2013-06-02 16:01:51

+1

这很不幸。尽管如此,tar.gz仍然可以在PyPi上使用。 – moraes 2013-07-10 11:39:48

3

PyQuadTree是一个非常轻量级的模块(我是基于别人的代码构建的)。它是用纯Python编写的,没有依赖关系,并且不需要任何安装或编译。这是一个单独的.py文件,可以很容易地包含在更大的项目中,这听起来像是在这里问的。

它也有文档并支持Python 2x和3x。

+0

我对Quadtrees没有经验,但我必须在轨迹分析项目中实现它。请让我知道,如果你的模块可以帮助分析轨迹(由x,y坐标序列组成的轨迹数据) – Liza 2017-05-09 03:41:03

+0

如果通过轨迹,你只是指代表运动的线几何图形,那么运行良好。但是lib不关心几何类型,它只需要一个边界框(xmin,ymin,xmax,ymax)。因此,您可以将多个不同的轨迹bbox插入树中,然后您可以查询树以快速查看哪些轨迹位于某个区域中。转到链接到博客帖子中的github repo,专门阅读如何使用它。 – 2017-05-09 07:42:16

+0

非常感谢您的回复。请看看这里https://stackoverflow.com/questions/44147628/implementing-quadtree-on-a-data-frame我试图在数据框上实现这一点,我也不知道如何查询树来知道哪些轨迹属于哪个象限。即使一点帮助也是非常有用的。谢谢。 – Liza 2017-05-24 01:49:20