SpatiaLite 使用指南
SpatiaLite 是一套具有空间数据功能的 SQLite 数据库系统。
本文简单介绍SpatiaLite ,说明空间索引使用方式,多线程并发下的使用以及常见问题
Contents
- SpatiaLite 使用指南
- SpatiaLite简介
- 空间索引使用
- 多线程并发
- 常见问题
SpatiaLite简介
- 一个实现完整的SQL引擎的轻量级库
- 标准的SQL执行:几乎完全的SQL-92标准
- 没有复杂的客户端/服务器结构
- 整个数据库简单地对应于单个文件,且文件大小没有限制
- 跨平台
- 无需安装,无需配置
空间索引使用
- SpatiaLite的R*Tree都是一张独特的表(虚表)
- SpatiaLite自己完全不知道R*Tree和相应的表中几何列的对应关系
- SpatiaLite实现了几个触发器,以确保R*Tree与几何列保持同步
- SpatiaLite表中的每一条记录都通过ROWID来标识
- R*Tree与几何列通过ROWID来关联
- 如果表包含主键,则ROWID与主键有唯一关联
- 如果表不包含主键,则ROWID仅仅是相对行号
使用空间索引前必须要先创建空间索引,空间索引可通过下面的SQL语句来创建:
Spatialite默认不使用空间索引,除非你明确地在查询语句中包含空间索引(这是不同于PostGIS的,其会自动使用空间索引,如果可用)
使用空间索引查询数据可通过如下语句来完成:
SELECT * FROM table_name A WHERE
ST_Within(GeomFromText(ST_AsText(A.geo_column)), GeomFromText('POLYGON((116.37754 39.95149,116.37754 39.95137,116.37891 39.95137,116.37754 39.95149))')) = 1
AND A.ROWID IN
(SELECT ROWID FROMSpatialIndex s WHERE s.f_table_name='table_name '
AND s.search_frame = GeomFromText('POLYGON((116.37754 39.95149,116.37754 39.95137,116.37891 39.95137,116.37754 39.95149))'))
常见问题
- 空间索引失效
SpatiaLite是SQLite的扩展,提供空间数据功能。它具有轻量级、标准SQL支持、无需安装等特点。空间索引通过R*Tree实现,必须先创建才能使用。查询时需显式调用,例如结合ST_Within函数和SpatialIndex。常见问题包括空间索引的失效处理。
2049

被折叠的 条评论
为什么被折叠?



