spatialite是在sqlite的外部再包了一层空间数据的外衣。
当然,你要先了解sqlite,号称开源的最轻量级别的数据库,适合小项目和移动端。这也是sqlite不衰奥秘。sqlite底层是c语言驱动,效率高。入门无需赘述,请移步至SQLite 教程。
spatialite的语法和postgresql相似,算是它的一个简化入门版。
spatialite本身依赖于SQLite 3、PROJ.4、GEOS、FreeXL等开源项目。功能强大,甚至可以做数据的投影转换等。
Spalite的官网在此,它的安装十分简单,Windows版本直接在官网下方有ftp的编译安装包,无需安装绿色使用。主要可以用CLI和GUI版本,其它还没探索。而在Linux上的安装可以参考試用 SpatiaLite(一):安裝及測試中的步骤。
操作可以参考試用 SpatiaLite(一):安裝及測試,在这里罗列其中一部分。
spatilite sqlitename.db
.help
.database
.table`
select AsText(ST_Transform(MakePoint(114.1689,22.4518,4326),3857));
select ST_Length(MakeLine(MakePoint(114.17052, 22.475837,4326), MakePoint(114.1689,22.4518,4326)), 1);
select Degrees(ST_Azimuth(MakePoint(114.1689,22.4518,4326), MakePointZ(114.17052, 22.475837, 437.639187, 4326)));
暂不展开,详情参考笔记二
至于如何从sqlite转换成为spatialite,这是一个非常严肃的问题。很多数据都是从sqlite来的。当然如果你的数据库创建直接在spatialite上,一切都很好说。从sqlite中导入数据到spalite需要一个过程,首先输入数据库命令。
select InitSpatialMetaData();
初始化空间数据库,如果你的数据库容量大,这个过程有点漫长。然后输入命令。
select AddGeometryColumn('你的表名', '你的几何列名',4326, 'POINT');
最后,当然是从你以前的xy中赋值。
update 你的表名 set 你的几何列名 = GeomFromText('POINT ('+纬度列=' '+经度列+')',4326);
也可以这样。
update 你的表名 set 你的几何列名 = MakePoint(X列,Y列,EPSG投影码);
和实例一相似,在数据库空间初始化后,创建数据列。
update 你的表名 set 你的几何列名 = GeomFromText('WKT格式内容')',4326);
WKT格式内容参考WKT&WKB 笔记一:格式介绍,如此一来同理,可以快速导入各种各样的数据格式(点线面),不再展开。
如同我在mapbox介绍中所说的,sqlite和gis结合运用十分紧密,无论在矢量还是栅格数据上。它的轻量,整洁,快速开发都是它的优点。希望这给你一点点帮助。