rtree的使用

本文介绍了Python中的RTree库,它是一种用于二维和多维空间的B树数据结构。文章详细讲解了RTree的初始化、插入、删除、查询和最近邻搜索等操作,并提供了实例演示。通过RTree,可以高效地处理空间索引问题。
摘要由CSDN通过智能技术生成

安装https://www.cnblogs.com/mangmangbiluo/p/10954836.html

 

rtree可以看做是二维或者多维空间中的b树

如果不知道b树的建议先去看看b树

rtree的原理https://blog.csdn.net/xiaofengcanyuexj/article/details/41912169

https://blog.csdn.net/houzuoxin/article/details/16113895

两篇文章相同的

 

Python rtree官方文档

http://toblerity.org/rtree/index.html#

 

rtree中的基本单位是一个个小的矩形

在这个库中是一个类: rtree.index.Item

我这里主要写一下Pythonrtree的使用

初始化对象

from rtree import index

idx = index.Index()

 

插入数据: insert(self, id, coordinates, obj=None), 没有返回值

其中id是一个长整数,coordinates 是形如(xmin, ymin, xmax. ymax)的元组或者列表也可以,都是double类型的浮点数,和python的float相对应(python只有float,相当于c++中的double)

obj是可选的选项,可以是任意的一个Python对象,实际原理就是先将Python对象序列化以后再存储起来

idx.insert(0,(0,0,1,1), obj={1:4})

add方法和insert方法完全一样

In [226]: ctypes.c_double(10.0/3)
Out[226]: c_double(3.3333333333333335)

In [227]: 10.0/3
Out[227]: 3.3333333333333335

大家看,c_double和python的float是相一致的,尽管放心

 

删除数据: delete(self, id, coordinates); 没有返回值

idx.delete(0,(0,0,1,1))

这个函数既需要id,又需要坐标值

如果没有目标点满足,不会报错,,也不会删除

如果有多个目标点满足的话,仅会删除一个(目测和插入顺序相关,但是请避免这种事情的发生)

 

查找区域内的元素intersection(self, coordinates, objects=False): 返回是一个生成器

In [243]: list(c.intersection((0,0,2,2), objects=False))
Out[243]: [0, 0, 1]

In [244]: list(c.intersection((0,0,2,2), objects=True))
Out[244]: 
[<rtree.index.Item at 0x7f6ffc60b8e8>,
 <rtree.index.Item at 0x7f6ffc60b3c0>,
 <rtree.index.Item at 0x7f6ffc60b628>]

In [245]: list(c.intersection((0,0,2,2), objects=<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值