🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > [参考](https://www.sqlite.org/rtree.html) ## 概述 SQLite 的 R-Tree 是一个用于处理多维空间数据的扩展。R-Tree 是一种自平衡树结构,特别适合用于存储和查询空间数据,比如地理位置、矩形区域等。R-Tree 支持快速查找、插入和删除操作,特别是在范围查询和邻近查询上表现优异 ## 示例 1.创建表 ``` CREATE VIRTUAL TABLE demo_rtree USING rtree( id, -- 主键 minX, maxX, -- X 维度的最小值和最大值 minY, maxY -- Y 维度的最小值和最大值 ); ``` 2. 插入数据 ``` INSERT INTO demo_rtree VALUES (1, 0.0, 1.0, 0.0, 1.0); INSERT INTO demo_rtree VALUES (2, 2.0, 3.0, 2.0, 3.0); INSERT INTO demo_rtree VALUES (3, 1.0, 2.0, 1.0, 2.0); ``` 3. 查询数据 ``` SELECT * FROM demo_rtree WHERE minX <= 2.5 AND maxX >= 2.0 AND minY <= 2.5 AND maxY >= 2.0; ``` 4. 删除数据 ``` DELETE FROM demo_rtree WHERE id = 2; ``` 5. 使用 SQLite R-Tree 进行地理空间查询 ``` CREATE VIRTUAL TABLE locations USING rtree( id, -- 主键 minLat, maxLat, -- 纬度范围 minLon, maxLon -- 经度范围 ); ``` 6. 使用 SQLite R-Tree 进行地理空间查询 ``` CREATE VIRTUAL TABLE locations USING rtree( id, -- 主键 minLat, maxLat, -- 纬度范围 minLon, maxLon -- 经度范围 ); INSERT INTO locations VALUES (1, 34.0522, 34.0522, -118.2437, -118.2437); INSERT INTO locations VALUES (2, 40.7128, 40.7128, -74.0060, -74.0060); SELECT * FROM locations WHERE minLat <= 35.0 AND maxLat >= 33.0 AND minLon <= -117.0 AND maxLon >= -119.0; ```