18.2. Lesson: 在QGIS中使用DB Manager处理空间数据库

我们已经了解了如何使用QGIS以及其他工具执行许多数据库操作,但现在是时候看看DB Manager工具了,它提供了许多相同的功能以及更多面向管理的工具。

The goal for this lesson: 学习如何使用QGISDB管理器与空间数据库交互。

18.2.1. 基本信息 Follow Along: Managing PostGIS Databases with DB Manager

您应该首先打开数据库管理器界面,方法是选择 Database --> DB Manager --> DB Manager 在菜单上或通过选择工具栏上的数据库管理器图标。

数据库管理器

您应该已经看到了我们之前配置的连接,并且能够展开 myPG 节和它的 public 模式来查看我们在前面几节中使用过的表。

您可能注意到的第一件事是,您现在可以看到一些关于数据库中包含的模式的元数据。

../../../_images/db_manager_dialog.png

模式是对PostgreSQL数据库中的数据表和其他对象进行分组的一种方式,也是权限和其他约束的容器。管理PostgreSQL模式不在本手册的讨论范围内,但您可以在 PostgreSQL documentation on Schemas 。您可以使用DB Manager创建新的模式,但需要使用pgAdmin III之类的工具或命令行界面来有效地管理它们。

DB Manager还可用于管理数据库中的表。我们已经研究了在命令行上创建和管理表的各种方法,但现在让我们看看如何在DB Manager中实现这一点。

首先,只需通过在树中单击表的名称并在 Info 标签。

../../../_images/table_info.png

在此面板中,您可以看到 General Info 关于表以及PostGIS扩展维护的有关几何图形和空间参考系统的信息。

如果您向下滚动到 Info 选项卡中,您可以查看有关 FieldsConstraintsIndexes 对于您正在查看的表。

../../../_images/table_info_fields.png

使用DB Manager简单地查看数据库中的记录也非常有用,其方式与查看层树中层的属性表的方式大致相同。您可以通过选择 Table 标签。

../../../_images/table_panel.png

也有一个 Preview 选项卡,该选项卡将在地图预览中显示层数据。

在树中右键单击层,然后单击 Add to Canvas 会将该层添加到您的地图中。

到目前为止,我们只查看了数据库及其模式和表以及它们的元数据,但如果我们想要更改表以添加额外的列,该怎么办呢?DB Manager允许您直接执行此操作。

  1. 在树中选择要编辑的表

  2. 选择 Table ► Edit Table 从菜单中,打开 Table Properties 对话框中。

    ../../../_images/edit_table.png

可以使用此对话框添加柱、添加几何图形柱、编辑现有柱或完全删除柱。

使用 Constraints 选项卡中,您可以管理将哪些字段用作主键或删除现有约束。

../../../_images/constraints_panel.png

这个 Indexes Tab可用于添加和删除空间索引和普通索引。

../../../_images/indexes_panel.png

18.2.2. 基本信息 Follow Along: Creating a New Table

现在我们已经完成了处理数据库中现有表的过程,接下来让我们使用DB Manager创建一个新表。

  1. 如果尚未打开,请打开DB Manager窗口,然后展开树,直到看到数据库中已有的表列表。

  2. 从菜单中选择 Table --> Create Table 打开Create Table(创建表)对话框。

  3. 使用默认设置 Public 方案和命名表 places

  4. 添加 idplace_name ,以及 elevation 如下所示的字段

  5. 确保 id 字段设置为主键。

  6. 单击复选框以 Create geometry column 并确保将其设置为 POINT 键入并将其命名为 geom 并指定 4326 作为 SRID

  7. 单击复选框以 Create spatial index 并点击 Create 来创建表。

    ../../../_images/create_table.png
  8. 关闭通知您表已创建的对话框,然后单击 Close 若要关闭创建表对话框,请执行以下操作。

现在,您可以在DB Manager中检查您的表,您当然会发现其中没有数据。从这里你可以 Toggle Editing 在“层”菜单上,开始向您的表格中添加位置。

18.2.3. 基本信息 Follow Along: Basic Database Administration

DB Manager还允许您执行一些基本的数据库管理任务。它当然不能替代更完整的数据库管理工具,但它确实提供了一些可用于维护数据库的功能。

数据库表通常会变得非常大,频繁修改的表可能会留下PostgreSQL不再需要的剩余记录。这个 VACUUM 命令负责执行一种垃圾收集,以压缩和可选地分析表,以获得更好的性能。

让我们来看看我们可以如何执行 VACUUM ANALYZE 命令从数据库管理器中执行。

  1. 在数据库管理器树中选择一个表

  2. 选择 Table ► Run Vacuum Analyze 从菜单中

现在,PostgreSQL将执行该操作。根据您的桌子有多大,这可能需要一些时间才能完成。

有关真空分析过程的更多信息,请参阅 PostgreSQL Documentation on VACUUM ANALYZE

18.2.4. 基本信息 Follow Along: Executing SQL Queries with DB Manager

DB Manager还为您提供了一种针对数据库表编写查询和查看结果的方法。我们已经在 Browser 面板,但是让我们在这里用DB Manager再看一遍。

  1. 选择 lines 树上的桌子。

  2. 选择 SQL window 数据库管理器工具栏中的按钮。

    ../../../_images/sql_window_btn.png
  3. 撰写以下内容 SQL query 在提供的空白处:

    select * from lines where roadtype = 'major';
    
  4. 单击 Execute (F5) 按钮以运行查询。

  5. 现在,您应该会看到与 Result 面板。

    ../../../_images/sql_results.png
  6. 单击复选框以选择 Load as new layer 将结果添加到您的地图。

  7. 选择 id 列作为 Column with unique integer values 以及 geom 列作为 Geometry column

  8. 请输入 roads_primary 作为 Layer name (prefix)

  9. 单击 Load now! 将结果作为新图层加载到地图中。

    ../../../_images/sql_add_to_map.png

与查询匹配的图层现在将显示在地图上。当然,您可以使用该查询工具来执行任何任意的SQL命令,包括我们在前面的模块和小节中看到的许多命令。

18.2.5. 使用DB Manager将数据导入数据库

我们已经了解了如何使用命令行工具将数据导入到空间数据库中,所以现在让我们学习如何使用DB Manager进行导入。

  1. 单击 Import layer/file 数据库管理器对话框中工具栏上的按钮。

    ../../../_images/import_layer_btn.png
  2. 选择 urban_33S.shp 文件来源 exercise_data/projected_data 作为输入数据集

  3. 单击 Update Options 按钮预填充表单值。

  4. 请确保 Create new table 选项已选中

  5. 指定 Source SRID AS 32722 以及 Target SRID AS 4326

  6. 启用该复选框以 Create Spatial Index

  7. 单击 OK 执行导入的步骤

    ../../../_images/import_urban.png
  8. 关闭对话框以通知您导入已成功

  9. 单击 Refresh 数据库管理器工具栏上的按钮

现在,您可以通过在树中单击表来检查数据库中的表。验证是否已重新投影数据,方法是检查 Spatial ref: 被列为 WGS 84 (4326)

../../../_images/urban_info.png

在树中右键单击表并选择 Add to Canvas 会将该表作为图层添加到地图中。

18.2.6. 使用DB Manager从数据库中导出数据

当然,DB Manager也可以用于从您的空间数据库中导出数据,所以让我们来看看这是如何完成的。

  1. 选择 lines 层,然后单击 Export to File 按钮,以打开 Export to vector file 对话框中。

  2. 单击 ... 按钮,以选择 Output file 并将数据保存到您的 exercise_data 目录为 urban_4326

  3. 设置 Target SRID AS 4326

  4. 单击 OK 要初始化导出,请执行以下操作。

    ../../../_images/export_to_vector.png
  5. 关闭通知您已成功导出的对话框并关闭数据库管理器。

现在,您可以检查使用浏览器面板创建的shapefile。

../../../_images/inspect_vector_output.png

18.2.7. In Conclusion

现在,您已经了解了如何使用QGIS中的DB Manager界面来管理空间数据库、对数据执行SQL查询以及如何导入和导出数据。

18.2.8. What's Next?

接下来,我们将了解如何将其中许多相同的技术用于 SpatiaLite 数据库。