
3.2.1 SpatiaLite数据库
SpatiaLite是一个基于SQLite轻量级数据库的空间数据引擎。SQLite是一个以单一文件存在的数据库,数据库中的所有信息和功能都保存到一个文件中(后缀名通常为“sqlite”、“db”、“sqlite3”、“db3”和“s3db”等),且不需要系统服务的支持。SpatiaLite可以通过关系型表结构支持OGC简单要素模型,以存储矢量数据,也可以通过SQL查询语句进行简单的空间查询和分析。随着移动互联网的发展,许多在移动端运行的应用程序依赖SQLite,因此基于SpatiaLite的移动GIS应用也越来越多。作为一个轻量级空间数据库,在很多场景下,“SQLite+SpatiaLite”组合可以替代“PostgreSQL+PostGIS”组合,也可以替代“ArcSDE+Oracle”组合。
本节介绍如何创建、连接和使用SpatiaLite数据库。
1. 创建或连接SpatiaLite数据库
在“Browser”面板中,在SpatiaLite节点上右击,在弹出的快捷菜单中选择“Create Database…”命令,弹出创建对话框,选择数据库的保存位置即可创建SpatiaLite数据库,如图3-23所示。

图3-23 连接或创建SpatiaLite数据库
通过SpatiaLite节点右键菜单中的“New Connection…”命令,即可连接一个已经存在于硬盘上的SpatiaLite数据库。创建或连接SpatiaLite数据库后,在“Browser”面板的
SpatiaLite节点下面就会出现该数据库的名称。
2. 在SpatiaLite数据库中创建数据
选择“Layer”—“Create Layer”—“New SpatiaLite Layer…”菜单命令,即可在SpatiaLite数据库中创建一个矢量数据图层,如图3-24所示。在弹出的“New SpatiaLite Layer”对话框中,通过“Geometry type”选项可以选择几何图形类型,支持的几何图形类型包括点(Point)、线(Line)、面(Polygon)、多点(MultiPoint)、多线(MultiLine)、多面(MultiPolygon)等,也可以不包括几何图形(No geometry),即创建单独的数据表。

图3-24 创建SpatiaLite数据库
除此之外,也可以将QGIS中的矢量图层导入SpatiaLite数据库中,只需要在矢量图层的右键菜单中选择“Export”—“Save Features As…”命令,在弹出的“Save Vector Layer as…”对话框中,设置“Format”选项为“SpatiaLite”,设置“File name”选项为SpatiaLite数据库文件的位置,设置“Layer name”为图层名称,单击“OK”按钮,如图3-25所示。

图3-25 导入数据到SpatiaLite数据库
【小提示】目前,QGIS不支持在SpatiaLite数据库中进行栅格数据的读写,但是可以借助GDAL等工具以Blob形式将栅格数据写入SpatiaLite数据库。
3. 删除SpatiaLite数据库连接
在“Browser”面板中,在SpatiaLite数据库连接上右击,在弹出的快捷菜单中选择“Delete”命令,即可删除该数据库连接。但是,删除数据库连接并不意味着删除数据库,数据库文件仍然存在于计算机的文件系统中。