您可以使用Python脚本(PyQGIS)和处理框架自动执行QGIS中的许多任务。大多数时候,您会在QGIS打开时手动运行这些脚本。尽管这很有用,但很多时候您需要一种方法来通过命令行运行此作业,而无需打开QGIS。幸运的是,您可以编写使用QGIS库并可以通过命令行运行的独立python脚本。在本教程中,我们将学习如何编写和计划使用QGIS处理框架的作业。
任务概述
假设我们正在使用区域的shapefile进行一些分析。shapefile每天都会更新,我们始终需要最新的文件。但是在使用这些文件之前,我们需要清理数据。我们可以设置一个QGIS作业来自动执行此过程并每天运行它,以便为您的工作准备最新的清理shapefile。我们将编写一个独立的Python脚本,该脚本每天下载一个shapefile并运行拓扑清理操作。您将学习的其他技能
使用Python下载和解压缩文件。
通过PyQGIS运行任何处理算法。
修复矢量层中的拓扑错误。
获取数据
Geofabrik提供OpenStreetMap数据集的每日更新shapefile 。
在本练习中,我们将使用斐济的shapefile。下载fiji-latest.shp.zip并将其解压缩到磁盘上的文件夹中。
资料来源[GEOFABRIK]
程序
我们将首先执行手动清理shapefile的过程,以记下将在python脚本中使用的命令。启动QGIS,然后转到“图层‣添加图层‣添加矢量图层”。
浏览到包含解压缩的shapefile的
roads.shp
文件夹,然后选择该 文件,然后单击“打开”。
首先,我们必须将道路图层重新投影到“计划的CRS”。这将使我们在进行分析时可以将米作为单位而不是度。打开处理‣工具箱。
搜索“重新投影图层”工具。双击以启动对话框。
在“重新投影图层”对话框中,选择
roads
图层作为“ 输入图层”。我们将使用 CRS作为目标CRS。点击运行。EPSG:3460 Fiji 1986 / Fiji Map Grid
该过程完成后,您将看到重新投影的图层已加载到QGIS中。转到处理‣历史记录和日志。
在“历史记录和日志”对话框中,展开“算法” 文件夹,然后选择最新条目。您将在底部面板中看到完整的处理命令。注意此命令可在我们的脚本中使用。