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 模式来查看我们在前面几节中使用过的表。
您可能注意到的第一件事是,您现在可以看到一些关于数据库中包含的模式的元数据。
模式是对PostgreSQL数据库中的数据表和其他对象进行分组的一种方式,也是权限和其他约束的容器。管理PostgreSQL模式不在本手册的讨论范围内,但您可以在 PostgreSQL documentation on Schemas 。您可以使用DB Manager创建新的模式,但需要使用pgAdmin III之类的工具或命令行界面来有效地管理它们。
DB Manager还可用于管理数据库中的表。我们已经研究了在命令行上创建和管理表的各种方法,但现在让我们看看如何在DB Manager中实现这一点。
首先,只需通过在树中单击表的名称并在 Info 标签。
在此面板中,您可以看到 General Info 关于表以及PostGIS扩展维护的有关几何图形和空间参考系统的信息。
如果您向下滚动到 Info 选项卡中,您可以查看有关 Fields , Constraints 和 Indexes 对于您正在查看的表。
使用DB Manager简单地查看数据库中的记录也非常有用,其方式与查看层树中层的属性表的方式大致相同。您可以通过选择 Table 标签。
也有一个 Preview 选项卡,该选项卡将在地图预览中显示层数据。
在树中右键单击层,然后单击 Add to Canvas 会将该层添加到您的地图中。
到目前为止,我们只查看了数据库及其模式和表以及它们的元数据,但如果我们想要更改表以添加额外的列,该怎么办呢?DB Manager允许您直接执行此操作。
在树中选择要编辑的表
选择 从菜单中,打开 Table Properties 对话框中。
可以使用此对话框添加柱、添加几何图形柱、编辑现有柱或完全删除柱。
使用 Constraints 选项卡中,您可以管理将哪些字段用作主键或删除现有约束。
这个 Indexes Tab可用于添加和删除空间索引和普通索引。
18.2.2.
Follow Along: Creating a New Table
现在我们已经完成了处理数据库中现有表的过程,接下来让我们使用DB Manager创建一个新表。
如果尚未打开,请打开DB Manager窗口,然后展开树,直到看到数据库中已有的表列表。
从菜单中选择 Table --> Create Table 打开Create Table(创建表)对话框。
使用默认设置
Public方案和命名表places。添加
id,place_name,以及elevation如下所示的字段确保
id字段设置为主键。单击复选框以 Create geometry column 并确保将其设置为
POINT键入并将其命名为geom并指定4326作为 SRID 。单击复选框以 Create spatial index 并点击 Create 来创建表。
关闭通知您表已创建的对话框,然后单击 Close 若要关闭创建表对话框,请执行以下操作。
现在,您可以在DB Manager中检查您的表,您当然会发现其中没有数据。从这里你可以 Toggle Editing 在“层”菜单上,开始向您的表格中添加位置。
18.2.3.
Follow Along: Basic Database Administration
DB Manager还允许您执行一些基本的数据库管理任务。它当然不能替代更完整的数据库管理工具,但它确实提供了一些可用于维护数据库的功能。
数据库表通常会变得非常大,频繁修改的表可能会留下PostgreSQL不再需要的剩余记录。这个 VACUUM 命令负责执行一种垃圾收集,以压缩和可选地分析表,以获得更好的性能。
让我们来看看我们可以如何执行 VACUUM ANALYZE 命令从数据库管理器中执行。
在数据库管理器树中选择一个表
选择 从菜单中
现在,PostgreSQL将执行该操作。根据您的桌子有多大,这可能需要一些时间才能完成。
有关真空分析过程的更多信息,请参阅 PostgreSQL Documentation on VACUUM ANALYZE 。
18.2.4.
Follow Along: Executing SQL Queries with DB Manager
DB Manager还为您提供了一种针对数据库表编写查询和查看结果的方法。我们已经在 Browser 面板,但是让我们在这里用DB Manager再看一遍。
选择
lines树上的桌子。选择 SQL window 数据库管理器工具栏中的按钮。
撰写以下内容 SQL query 在提供的空白处:
select * from lines where roadtype = 'major';
单击 Execute (F5) 按钮以运行查询。
现在,您应该会看到与 Result 面板。
单击复选框以选择 Load as new layer 将结果添加到您的地图。
选择
id列作为 Column with unique integer values 以及geom列作为 Geometry column 。请输入
roads_primary作为 Layer name (prefix) 。单击 Load now! 将结果作为新图层加载到地图中。
与查询匹配的图层现在将显示在地图上。当然,您可以使用该查询工具来执行任何任意的SQL命令,包括我们在前面的模块和小节中看到的许多命令。
18.2.5. 使用DB Manager将数据导入数据库
我们已经了解了如何使用命令行工具将数据导入到空间数据库中,所以现在让我们学习如何使用DB Manager进行导入。
单击 Import layer/file 数据库管理器对话框中工具栏上的按钮。
选择
urban_33S.shp文件来源exercise_data/projected_data作为输入数据集单击 Update Options 按钮预填充表单值。
请确保 Create new table 选项已选中
指定 Source SRID AS
32722以及 Target SRID AS4326启用该复选框以 Create Spatial Index
单击 OK 执行导入的步骤
关闭对话框以通知您导入已成功
单击 Refresh 数据库管理器工具栏上的按钮
现在,您可以通过在树中单击表来检查数据库中的表。验证是否已重新投影数据,方法是检查 Spatial ref: 被列为 WGS 84 (4326) 。
在树中右键单击表并选择 Add to Canvas 会将该表作为图层添加到地图中。
18.2.6. 使用DB Manager从数据库中导出数据
当然,DB Manager也可以用于从您的空间数据库中导出数据,所以让我们来看看这是如何完成的。
选择
lines层,然后单击 Export to File 按钮,以打开 Export to vector file 对话框中。单击 ... 按钮,以选择 Output file 并将数据保存到您的
exercise_data目录为urban_4326。设置 Target SRID AS
4326。单击 OK 要初始化导出,请执行以下操作。
关闭通知您已成功导出的对话框并关闭数据库管理器。
现在,您可以检查使用浏览器面板创建的shapefile。
18.2.7. In Conclusion
现在,您已经了解了如何使用QGIS中的DB Manager界面来管理空间数据库、对数据执行SQL查询以及如何导入和导出数据。
18.2.8. What's Next?
接下来,我们将了解如何将其中许多相同的技术用于 SpatiaLite 数据库。
