5.3. 将数据导入 空间数据库¶
使用DB Manager可以很容易地将数据导入SpatiaLite数据库。 SpatiaLite支持以下常用格式以及许多其他格式来导入文件:
shp文件( .shp )
数据库( .dbf )
文本( .txt ),逗号分隔值( .csv ),以及Excel电子表格( .xls / .xlsx )
AutoCAD DXF( .dxf )
地理标记语言( .gml )
KML 标记语言( .kml )
几何JavaScript对象表示法( .geojson )
可缩放矢量图形( .svg )
让我们用 DB Manager 将不同格式的数据导入 "GiffordPinochet.sqlite" 数据库。
5.3.1. 将KML导入SpatiaLite¶
要将KML文件导入SpatiaLite数据库,请完成以下步骤:
1.通过单击打开 "Database" 下面的 "DB Manager" 来打开 DB Manager ,打开 SpatiaLite 然后在 "Tree" 面板上选择 "GiffordPinochet.sqlite" 。
2.导航到
导入 "Import vector layer" 对话框。3.单击 Input 下拉框右侧的省略号按钮。从过滤器列表中选择“KML标记语言[KML]”, 然后从示例数据集中选择并打开"stream.kml",该数据集可从"Packt Publishing"网站上下载。
4.单击 Updata options 按钮加载对话框的其余部分。输出表名将填充为 "streams" , 并且将与输入文件的基本名称匹配。
5.设置以下选项,如下图所示:如 图 5.3 。
选择 Source SRID 然后输入 "4326" 。 这是所有KML数据集的EPSG代码。
选择 Target SRID 然后输入 "26910" 。 这是NAD83/UTM 10区北部的EPSG代码。
选择 Create spatial index 。
6.请参阅以下截图,以确保设置匹配。请单击 OK 按钮导入文件。

图 5.3 KML导入设置¶
7.几分钟后,将显示导入已完成。要查看新创建的表,需要通过树中的选择面板 "GiffordPinochet.sqlite" 刷新tree, 然后单击 "Database" 下面的 Refresh ,或按键盘上的 f5 键。 现在将出现 "streams" 表,并在其旁边有多段线图标。
8.要预览属性表,请在信息面板上单击 "Table" 选项卡。要预览几何图形,请在信息面板上单击 Preview 选项卡。 要在QGIS桌面中查看新创建的SpatiaLite层,请右键单击 "Tree" 面板上的 streams ,然后 选择 Add to canvas 。
5.3.2. 将shapefile导入SpatiaLite¶
1.通过单击打开 "Database" 下面的 DB Manager 来打开 "DB Manager" ,打开 SpatiaLite 并 在 Tree 面板选择 "GiffordPinochet.sqlite" 。
2.导航到 图 5.4 。
导入 "Import vector layer" 对话框,如3.单击 Input 下拉框右侧的省略号按钮。从过滤器列表中选择 "ESRIshp文件", 然后从示例数据集中选择并打开 "NF_roads.shp" ,该数据集可从Packt Publishing网站上下载。
4.单击 Updata options 按钮加载对话框的其余部分。输出表名将填充为 "NF_roads" ,并将与输入文件的基本名称匹配。
5.设置以下选项:
选择 Source SRID 然后输入 "26910" 。 这是NAD83/UTM区域 10北的EPSG代码。因为我们不想在导入期间更改坐标系, 所以不需要设置目标SRID。
选择 创建空间索引 。
6.点击 OK 导入文件的按钮。

图 5.4 shapefile导入设置¶
7.几分钟后,将通知您导入已完成。要查看新创建的表,需要通过树中的选择面板 "GiffordPinochet.sqlite" 刷新tree, 然后单击数据库下面的“刷新”
8.要预览属性表,请在信息面板上单击 Table 选项卡。要预览几何图形,请在信息面板上单击 Preview 选项卡。 要在QGIS桌面中查看新创建的"SpatiaLite"层,请右键单击 "Tree" 面板上的 NF_roads ,然后 选择 Add to canvas 。
5.3.3. 将表导入SpatiaLite¶
要将表文件导入SpatiaLite数据库,请完成以下步骤:
1.通过单击打开 Database 下面的 "DB Manager" 来打开 DB Manager ,展开 SpatiaLite 并 在 Tree 面板选择 "GiffordPinochet.sqlite" 。
2.导航到
导入 "Import vector layer" 对话框。3.单击 Input 下拉框右侧的省略号按钮。从过滤器列表中选择MS Excel格式, 然后从可从Packt Publishing网站上下载的示例数据集中选择并打开 "Waterfalls.xls"。
4.点击 Update options 按钮加载对话框的其余部分。输出表名将填充为 "waterfalls" ,并且将与输入文件的基本名称匹配。 请注意,与空间数据集相关的所有选项都是不可修改的,并且是灰色的,如 图 5.5 。 这是因为SpatiaLite将输入存储在表中,也将其视为非空间表,我们将在后面的步骤中将空间组件添加到表中。
5.点击 OK 导入文件的按钮:

图 5.5 表导入SpatiaLite设置¶
6.几分钟后,系统将通知您导入已完成。 要查看新创建的表,您需要通过在 "Tree" 中选择 "GiffordPinochet.sqlite" 来 刷新 "Tree" 面板,然后单击 "Database" 下面的 Refresh ,或按键盘上的 f5 键。 现在将显示 "Waterfalls" 表,并在其旁边带有表图标。
7.选择 "Waterfalls" 图层。 单击信息面板上的 "Info" 选项卡。 注意北向和东向字段。 这些字段包含NAD 83 / UTM北部10区(EPSG 26910)中瀑布的坐标。 单击信息面板上的 Table 选项卡以查看表中的条目。 请注意,"Preview" 选项卡是不可选择的,因为选定的表没有任何几何字段。
此时,表导入已完成。但是,只要Waterfalls 表具有坐标对,因此可以将点几何列添加到表中,这实际上会将表转换为点层。 让我们现在开始::
1.在 Tree 面板中选择 "Waterfalls" 表后,导航到 以打开表属性窗口。
2.点击 Add geometry column 按钮。在新窗口中,设置以下选项以匹配以下屏幕截图,然后单击 OK 要创建几何体字段, 请执行以下操作:
Name : geom (包含几何信息的字段的名称)
Type : POINT (字段将保存的几何图形类型)
尺寸 : 2 (几何字段将为每个记录保留的维度(值)的数目;两个维度表示两个坐标( X ,。Y )为每个点存储,三维将包括 Z 坐标)
SRID : 26910 (空间参考标识:坐标参考系 ( CRS )几何字段的代码;CRS代码可以在 http://www.epsg-registry.org 。 对QGIS的重新审视在CRS上复习)
下图显示了正在创建的新几何图形列,该列将存储包含二维(坐标)的点几何图形,空间参考标识号为"26910", 表示NAD83 UTM Zone 10 North。如 图 5.6 。

图 5.6 新几何图形列¶
3.关闭表属性。要查看新编辑的表,需要通过树中的选择面板 "GiffordPinochet.sqlite" 刷新tree, 然后单击数据库下面的“刷新”。现在应显示waterfalls表,并在其旁边带有点图标。
现在 waterfalls 表有一个几何字段,我们需要用坐标填充它。我们将通过编写一个SQL 更新查询并使 用SpatiaLite MakePoint函数来完成此操作。为此,请执行以下步骤:
1.在 "Tree" 形视图中选择 "GiffordPinochet" ,单击 "Database" 下边的 SQL窗口 。你也可以按键盘上的 f2 。 这将打开SQL窗口作为 "DB Manager" 中的选项卡。
2.在SQL窗口中,单击 Clear 按钮清除 "SQL query" 文本区域。
3.在 "SQL查询" 文本区域中输入以下查询:
UPDATE Waterfalls
SET geom = MakePoint(Easting,Northing,26910);
让我们讨论一下MakePoint函数。
MakePoint(东距,北距,26910) 是一个空间函数,用于创建新的点几何对象。 "东方" 和 "北方"同一行中的列 是否保存 x 和 y 分别是坐标。 26910 是 x 和 y 坐标。
4.单击 Execute (F5) 按钮以执行查询。查询将不返回任何结果,但将指示 100行 受到影响。 这表明已用点几何填充了100行的几何字段。以下屏幕截图显示了该查询以及受影响的100行的指示,如 图 5.7 。

图 5.7 执行查询¶
5.在SQL窗口中,单击 Close 按钮关闭窗口。
6.要查看 "Waterfalls" 表,需要通过树中的选择面板 "GiffordPinochet.sqlite" 刷新tree, 然后单击数据库下面的“刷新” ,或按键盘上的 f5 键。
7.选择 "waterfalls" ,然后单击 Info 面板上的选项卡。在 SpatiaLite 信息打印输出的部分。 注意,将显示一条警告,说明尚未定义空间索引,如 图 5.8 。为了提高访问速度, 最好设置空间索引。点击 create it ,然后在弹出窗口中单击 Yes 按钮:

图 5.8 未设置空间索引¶
8.要预览属性表,请在信息面板上单击 Table 选项卡。要预览几何图形,请在信息面板上单击 Preview 选项卡。 要在QGIS桌面中查看新创建的SpatiaLite层,请右键单击 Tree 面板上的 "NF_roads" ,然后 选择 Add to canvas 。