Log4Classicning

好读书 不求甚解 每有会意 便欣然忘食

SQLite的空间扩展SpatiaLite
2008年5月3日

SQLite号称全世界最小的数据库,在几乎绝大多数数据库都具有空间数据的存储和查询功能后,SQLite目前也有了空间数据支持的扩展,利用这个扩展,可以按照OGC的Simple Feature Access标准存取空间数据。

这个项目名叫SpatiaLite,与其一同分发的还有一个VirtualShape。前者为SQLite增加空间数据支持,后者可以把一个Shapefile作为SQLite的数据库的虚表,通过SQL直接访问。

登录SpatiaLite的网站有各个平台的编译版本下载,在Windows上建议下载SQLiteGeo,将其解压到SQLite的目录即可,最好将SQLite的目录添加到Path中方便使用。

在命令行中执行

SQLiteGeo test.db

可以用SQLite的扩展版本打开test.db(若不存在则新建),此扩展自动加载VirtualShape和SpatiaLite扩展,我试过手动加载的SpatiaLite似乎存在一些问题以至于不能导入导出Shapefile。

之后就可以用标准的SQL语句对数据库进行操作了,而涉及几何数据的函数和MySQL及PostGIS中的使用方法相同,如ASTEXT,GEOMFROMTEXT等等。

目前SpatiaLite支持的空间关系判断还仅仅是在最小外接矩形的层面上,即MBRContians等,这一点与MySQL5.0相同。

不过比MySQL5.0强大的是SpatiaLite支持CRS,可以通过SRID函数查询空间数据的坐标系信息,如

SELECT DISTINCT Srid(GaiaGeometry) FROM Towns;

EPSG数据库在SpatiaLite的网站上有下载,可以从中获得坐标系的具体信息。

可以通过TRANSFORM函数进行坐标系的转换,如:

 BEGIN;
 ALTER TABLE Towns ADD COLUMN wgs84 BLOB;
 UPDATE Towns SET wgs84 = Transform(GaiaGeometry, 4326);
 COMMIT;


对于没有定义坐标系信息的数据,可以通过SETSRID函数定义:

 BEGIN;
 UPDATE NewTowns SET geom = SetSrid(geom, 32632);
 COMMIT;


与PostGIS等数据库相比,SQLite数据库更加便携,管理更加方便,跨平台,可以作为个人空间数据管理的解决方案。

参考: SpatiaLite Tutorial

« 来看看JAQL呼吁德国政府保持克制,尊重人权 »
  • quote 1.musicman
  • 我觉得关键是要支持空间分析的函数,比如GEOS。当然存储空间数据已经很了得了。
  • 2008-5-4 11:34:29 回复该留言
  • quote 3.Flyingpig
  • Sqlite 不支持 R-tree 索引, 没法建空间索引,空间查询效率还是不行~
  • 2008-6-23 21:51:57 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Search

站点统计

  • 文章总数:733
  • 评论总数:2570
  • 引用总数:4
  • 浏览总数:5693
  • 留言总数:42
  • 当前主题:ClassicningDailyLog Style
  • 当前样式:footoo

网站收藏

图标汇集

  • Creative Commons License
  • Widgetize!
  • visitor stats

Powered By Z-Blog 1.8 Spirit Build 80722

2004 - 2007 Classicning.com. 苏ICP备06039259号.