目录

上一个主题

5.5. 管理表

下一个主题

6. 地图/影像配准与数字化


本教程由OSGeo中国中心维护

5.6. 创建查询和视图

DB Manager有一个SQL窗口,该窗口允许对数据库执行SQL查询。本节将说明如何使用SQL窗口查询表并在SpatiaLite中 创建空间视图。

  • 不同的数据库支持不同的SQL命令。

  • SQLite支持大部分(但不是全部)标准SQL。

  • 有关支持的SQL操作的完整列表,请访问http://www.sqlite.org/sessions/lang.html。

5.6.1. 创建SQL查询

要创建SQL查询,请执行以下步骤:

  1. 通过单击 Database 下的 "DB Manager" 来打开 DB Manager

  2. 在 "Tree" 面板中,导航到并选择要在其上执行SQL查询的数据库。

  3. 引导到 Database ‣ SQL window ,或按键盘上的 f2 ,打开SQL窗口。

  4. 在顶部的文本框中输入SQL查询。点击键盘上的 Execute 按钮,或 f5 ,对数据库执行SQL查询。查询结果将显示在 底部的结果框中,并且受影响的行数和执行时间将显示在 Execute 按钮。如 图 5.12 显示了成功运行查询的示例。

_images/image327.jpg

图 5.12 SQL查询

  1. 通过在顶部的文本框中输入名称,然后单击 Store 按钮。要加载并运行存储的查询,请在顶部的下拉框中选择 查询名称。要删除存储的查询,请在下拉框中选择该查询,然后单击 Delete 按钮。

5.6.2. 创建空间视图

使用DB Manager中的SQL窗口在SpatiaLite数据库上创建空间视图需要两步。 第一步是创建包含具有唯一标识符的字段和几何体列的视图。第二步是在 "views_geometry_columns" 表中插入一跳新纪录, 以将视图注册为空间视图。在本节中,我们将在瀑布表上创建一个空间视图,以显示 "Mowich Lake quad" 中的所有瀑布; 要执行此操作,请执行以下步骤:

  1. 通过单击 Database 下的 "DB Manager" 来打开 DB Manager

  2. 在 "Tree" 面板中,导航到并选择 "GiffordPinochet.sqlite" 数据库。

  3. 导航到 Database - SQL 窗口,或按键盘上的 f2 ,打开SQL窗口。

  4. 输入以下查询:

CREATE VIEW mowich_lake_waterfalls AS

SELECT w.id as ROWID, w.NAME, w.TYPE, w.geom from Waterfalls as w

WHERE w.quadname = 'Mowich Lake';

CREATE VIEW 查询中,两个字段必须包含在 "SELECT" 语句:唯一标识符字段(应重命名为ROWID)和几何字段。 您必须将唯一标识符重命名为ROWID,否则该视图无法注册为空间视图。

  1. 单击 Execute 按钮创建视图。以下屏幕快照显示了 "Waterfalls" 表的成功编写和执行的视图:如 图 5.13

_images/image328.jpg

图 5.13 Waterfalls表查询结果

现在已经创建了视图,我们需要通过在 "views_geometry_columns" 表中插入新行来将其注册为空间视图。 该表将视图的几何图形链接到其选择的表的几何图形。

  1. 在 "SQL" 窗口中,单击 Clear 按钮清除SQL查询文本框。

  2. 输入以下查询:

INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name,
f_geometry_column, read_only) VALUES('mowich_lake_waterfalls', 'geom', 'rowid', 'waterfalls',
'geom', 1);

在这 INSERT 查询,六个字段中插入了值:

  • view_name :这包含要注册为空间视图的视图的名称。

  • view_geometry :它包含视图中几何体字段的名称。

  • view_rowid :它包含 罗维德 字段。请注意 must 是 罗维德 . 如果 罗维德 字段被命名为其他名称, 您将需要使用 罗维德 字段。

  • f_table_name :视图所选表的名称。

  • f_geometry_column :视图所选表中几何字段的名称。

  • read_only :在此字段中,输入 1 将空间视图设置为只读并输入 0 使空间视图读/写。请注意,从QGIS的2.6.0版开始, 在QGIS桌面中不能编辑设置为读/写的视图。但是,视图在某些插件中或使用SQL查询时可能是可编辑的。

  1. 单击 Execute 按钮创建视图。以下屏幕截图显示了 "Waterfalls" 表的成功编写和执行的视图:如 图 5.14

_images/image329.jpg

图 5.14 Waterfalls表查询结果

该视图现在注册为空间视图,可以像任何其他空间表一样添加到QGIS桌面画布中。

5.6.3. 删除空间视图

删除空间视图需要删除空间视图表并删除 "view_geometry_columns" 表中的相关条目。

要删除空间视图表,请使用 "SQL DROP VIEW" 命令。例如,删除 "mowich_lake_waterfalls" 视图, 需要执行以下SQL命令:

DROP VIEW mowich_lake_waterfalls

删除视图后,最后一步是使用 "SQL DELETE" 命令删除 "view_geometry_columns" 表中的相关条目。 例如,要删除与mowich_lake_waterfalls视图相关的条目,您将需要执行以下SQL命令:

::

DELETE FROM views_geometry_columns

WHERE view_name = 'mowich_lake_waterfalls';