QGIS 3.10 批处理

QGIS使用处理框架(Processing Framework)提供运行数据处理算法的环境,包括原生算法和第三方算法,处理框架包含的批处理接口可以在多个图层上执行数据处理操作。批处理(batch processing)是自动执行重复数据处理任务的工具,可以有效减少手工重复劳动。

任务概述

通过批处理指令,按非洲界限范围裁剪多个矢量图层。

将会学到的其他技巧

  • 利用过滤(Filter)屏蔽图层中不需要的要素。
  • 将多个图层合并为一个GeoPackage文件。

获取示范数据

本教程示范数据是自然地球(Natural Earth)提供的全球范围矢量数据,下载地址为:

http://www.qgistutorials.com/downloads/ne_global.gpkg

将QGIS界面设置为中文

制作地图之前,请将您的QGIS软件界面设置为简体中文(如果您已经设置过了,可以忽略本节后续内容)。操作方式为:通过菜单【Settings】->【Options…】打开对话框,选择其中的【General】标签,找到“Override system locale”前面的复选框并打勾,在“User Interface Transaction”下拉框中找到并选择“简体中文”,单击【OK】,退出QGIS。重新启动QGIS后即可看到简体中文界面。
在这里插入图片描述

详细操作步骤

  1. 在QGIS【浏览】面板,找到下载的gpkg文件,展开并选中ne_10m_admin_0_countries, 将该图层拖拽到地图画布中。
    在这里插入图片描述
  2. ne_10m_admin_0_countries图层加载到了地图窗口中。本教程的目标是按非洲界线范围裁剪图层,首先需要将非洲境内的国家提取出来。右键点击ne_10m_admin_0_countries图层,在弹出菜单中选择【打开属性表】,浏览该属性表的内容,查找可以用于查询归属特定大洲的字段。
    在这里插入图片描述
    备注:可以通过快捷键F6快速打开选中图层的属性表。

  3. 在【属性表】窗口中,横向拖动滚动条查看属性数据内容,可以看到属性字段 CONTINENT中包含大洲的归属信息,适合用于按照大洲过滤要素。
    在这里插入图片描述
  4. 关闭属性表,返回QGIS地图窗口,右键点击ne_10m_admin_0_countries图层,从弹出菜单中点击【过滤…】。弹出【查询构建器】对话框。
    在这里插入图片描述
  5. 在【查询构建器】对话框中,选中CONTINENT字段,点击【采样】按钮,将该字段的所有可能取值自动填充到【值】面板中,从所列出的字段取值可以了解数据集中存在什么类型的数据值。从【值】面板中可以看到,该字段表示国家所属的大洲,其中“Africa”表示该国家属于非洲。
    在这里插入图片描述
  6. 在【提供者过滤器表达式】文本框中输入下列表达式,点击【OK】按钮。
"CONTINENT" = 'Africa'

在这里插入图片描述

  1. 根据过滤表达式,地图主窗口中只显示属于非洲的国家。请留意图层名称右侧的过滤图标,它代表该图层使用了过滤器。如果需要看到或者使用该图层的所有要素,点击过滤图标,调出【查询构建器】对话框,并清空【提供者过滤器表达式】文本框中的表达式即可。
    在这里插入图片描述

  2. 至此,非洲界线要素提取完成,可以按照该界线使用批处理过程来裁剪多个图层了。在QGIS的【浏览】面板中,找到下载的gpkg文件,按住键盘上的Ctrl键,选中ne_10m_railroads、ne_10m_portsne_10m_urban_areas三个图层,将它们拖拽到地图画布中。
    在这里插入图片描述

  3. 在地图窗口中可以看到,新添加的三个图层包含的要素遍布世界各地。点击菜单【处理】->【工具箱】,在地图右侧调出【处理工具箱】面板。
    在这里插入图片描述

  4. 依次点击【处理工具箱】中的【矢量覆盖】->【裁剪】,也可以在搜索框中输入关键字“clip”快速查找到该工具。
    在这里插入图片描述

  5. 右键点击【裁剪】工具,从弹出菜单选择【以批处理方式执行…】。
    在这里插入图片描述

  6. 在【批量处理中-裁剪】对话框中,选择【参数】标签,设置输入输出参数。表格中每一行代表一个处理任务(processing task),点击【+】按钮,添加3个新行,表示本次批处理命令包含三个任务,即三个图层的裁剪操作。
    在这里插入图片描述

  7. 点击第一行【输入图层】列的【…】按钮,从弹出菜单中选择【从打开的图层中选择…】。
    在这里插入图片描述

  8. 在【多项选择】对话框中,选中需要裁剪的三个图层,点击【OK】按钮。
    在这里插入图片描述

  9. 选中的图层自动逐个填充到【批量处理中-裁剪】对话框的【输入图层】列中。点击【叠加图层】列第一行的【…】按钮,从弹出菜单点击【从打开的图层中选择…】,设置裁剪界线图层。
    在这里插入图片描述

  10. 在【多项选择】对话框中,勾选ne_10m_admin_0_countries,然后点击【OK】按钮。
    在这里插入图片描述

  11. 由于三个被裁剪的图层使用相同的裁剪界线,QGIS提供了快速自动填充参数的方法。点击表格中【叠加图层】列的【自动填充…】按钮,在弹出菜单中点击【向下填充】,【叠加图层】列剩下的两个空行被自动填充了第一列相同的参数,即ne_10m_admin_0_countries
    在这里插入图片描述

  12. 点击第一行【裁剪后】列右侧的【…】按钮,设置输出结果参数。
    在这里插入图片描述

  13. 在【保存文件】对话框中,选择保存输出结果的文件夹,【文件名】中输入“clipped_”,点击【保存】按钮。
    在这里插入图片描述

  14. 在弹出的【自动填充设置】对话框中,【自动填充模式】下拉框选择“填充参数值”,【参数】下拉框选择“输入图层”,该设置将会使用上一步骤设置的文件名加输入图层名的方式为输出结果文件命名,即输出结果文件名称分别为:clipped_ne_10m_railroadsclipped_ne_10m_portsclipped_ne_10m_urban_areas
    在这里插入图片描述

  15. 确保勾选表格下方的【完成后载入图层】选项,点击【运行】按钮。
    在这里插入图片描述

  16. 【批量处理中-裁剪】对话框自动切换到【记录】标签,此标签页可以看到详细的批处理执行过程。裁剪算法依次处理上述设置的输入图层,并按照参数指定的规则创建输出结果文件。批处理完成后,点击【Close】按钮,返回QGIS地图窗口。
    在这里插入图片描述
    备注:QGIS可以在后台运行处理任务而不阻塞用户界面。如果批处理过程需要比较长的时间,可以先关闭批处理对话框,返回QGIS主窗口进行其他操作,使批处理任务转入后台运行。

  17. 将包含世界范围要素的相关图层关闭,地图窗口只显示裁剪生成的结果。可以看到,输出结果仅保留了非洲大陆范围内的要素,其他的要素都被裁剪掉了。至此,批量裁剪图层任务完成了。
    在这里插入图片描述

  18. 如果想把裁剪结果共享给其他人,需要在QGIS外将生成的三个文件打包成一个压缩文件,这个过程有点繁琐。在保存和交付输出结果方面,QGIS提供了一个更加便捷的方式,即将输出图层打包成单个GeoPackage文件。在【图层】面板中取消显示裁剪结果图层,然后在【浏览】面板中点击【刷新】按钮,将裁剪结果显示到面板中。
    在这里插入图片描述

  19. 在【处理工具箱】面板,找到【数据库】->【打包图层】,双击运行。
    在这里插入图片描述

  20. 在【打包图层】对话框中,点击【输入图层】右侧的【…】按钮。
    在这里插入图片描述

  21. 在【多项选择】对话框中,选择 clipped_ne_10m_ports clipped_ne_10m_railroads clipped_ne_10m_urban_areas图层,点击【OK】。
    在这里插入图片描述

  22. 返回【打包图层】对话框,点击【目标GeoPackage】文本框右侧的【…】按钮,选择【保存到文件…】。
    在这里插入图片描述

  23. 输入文件名:“ clipped_layers”,点击【保存】按钮。
    在这里插入图片描述

  24. 返回【打包图层】对话框,点击【运行】按钮开始打包。
    在这里插入图片描述

  25. 打包结束后,QGIS的【浏览】面板中添加了打包生成的Geopackage文件,包含所有裁剪输出结果。该文件是独立文件,可以方便地分发到需要的人手中。
    在这里插入图片描述

本教程到此结束。

吴建玲

2020年6月26日


版权声明

本文欢迎转载,转载时请注明出处。

本文主要翻译并改编自qgistutorials网站,原文链接为https://www.qgistutorials.com/en/docs/3/batch_processing.html,原文已根据《知识共享署名4.0国际许可协议(Creative Commons Attribution 4.0 International License)》获得许可,在此向原文作者乌加尔·甘地(Ujaval Gandhi)致以敬意,感谢他为分享QGIS技术做出的贡献。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/QGISClass/article/details/106971633
今日推荐