序列化和反序列化以及Python RTree

时间:2015-10-01 14:27:47

标签: python serialization r-tree

我一直在尝试调试使用Pythons RTree version 0.8.2的软件包中的一些奇怪行为。

为了追踪问题,我需要每隔几分钟序列化一次RTree实例,当问题发生时,我可以得到一个非常准确的RTree快照。

我正在使用以下代码进行转储:

def _dump_tree(self, filename, tree):
    try:
        dump_file = Rtree(filename)
        for item in tree.intersection(tree.bounds, objects=True):
            dump_file.insert(item.id, item.bbox, item.object)
    except RTreeError:
        pass

此函数获取RTree并将其复制到具有给定文件名的新RTree。

每次调用都会创建以下对:

2015-10-01---14-21-16_items.dat
2015-10-01---14-21-16_items.idx
...

如何将dat / idx对反序列化回Python对象?

1 个答案:

答案 0 :(得分:1)

只需从相同的文件名中打开RTree:

>>> from rtree import index
>>> idx = index.Index('2015-10-01---14-21-16_items')
>>> idx.count(idx.bounds)
42 # The number of items you had in the original tree