QGIS-快速启动指南-全-
QGIS 快速启动指南(全)
原文:
zh.annas-archive.org/md5/8a0012a7f3ddad006f2a195cf697392a译者:飞龙
前言
QGIS 是一个用户友好的开源 GIS 软件。最近,开源 GIS 和 QGIS 正变得越来越受欢迎。
本书面向对象
本书是 QGIS 3.4 的快速入门指南。本书适合任何想学习如何使用 QGIS 分析地理空间数据和创建丰富地图应用的人。本书假设没有先前的知识或经验。
本书涵盖内容
第一章,开始使用 QGIS 3,涵盖了 QGIS 3 的介绍和安装,包括不同版本的简要讨论。然后我们将查看打开 QGIS、软件布局、菜单和工具栏。
第二章,加载数据,我们将下载并打开各种类型的 GIS 数据。我们将讨论不同类型的数据,我们将主要使用 GeoPackage 格式。我们还将提及 GeoTIFF(栅格)和 Shapefile(矢量)格式。我们将使用现有数据通过缩放/平移/选择与画布进行交互。最后,我们将讨论保存项目并查看投影。
第三章,创建数据,将指导您创建一个 GeoPackage 并围绕它构建一个简单的项目。我们将创建矢量数据。我们将查看编辑工具,以及捕捉和纠正错误。我们将查看属性表以及如何填充它。最后,我们将加载栅格数据并讨论如何创建栅格数据。
第四章,数据样式化,我们将对我们的 GIS 数据进行样式化。我们将查看样式选项(有很多)对于矢量和栅格数据。我们将查看 QGIS 中的图层样式面板。
第五章,创建地图,将涉及使用前几章中的数据来创建地图。我们将简要查看标签和更详细地探讨如何创建更好、更美观的地图。最后,我们将查看图集功能。
第六章,空间处理,将指导您使用 GeoPackage 中的数据来分析数据。本章将介绍处理工具箱。我们将查看单个工具,并查看对数据的空间查询。
第七章,扩展 QGIS 3,将探讨扩展 QGIS。这将侧重于插件、模型构建器和少量命令行工作。
为了最大限度地利用本书
尽可能按照章节顺序阅读;这将帮助您从本书中获得最大收益。
下载示例代码文件
您可以从www.packt.com的账户下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packt.com/support并注册以将文件直接通过电子邮件发送给您。
您可以通过以下步骤下载代码文件:
- 
在www.packt.com登录或注册。 
- 
选择“支持”选项卡。 
- 
点击“代码下载和勘误”。 
- 
在搜索框中输入书籍名称,并遵循屏幕上的说明。 
文件下载后,请确保使用最新版本解压缩或提取文件夹:
- 
WinRAR/7-Zip for Windows 
- 
Zipeg/iZip/UnRarX for Mac OS 
- 
7-Zip/PeaZip for Linux 
本书代码包也托管在 GitHub 上,网址为github.com/PacktPublishing/QGIS-Quick-Start-Guide。如果代码有更新,它将在现有的 GitHub 仓库中更新。
我们还有其他来自我们丰富的书籍和视频目录的代码包,可在github.com/PacktPublishing/找到。查看它们吧!
下载彩色图像
我们还提供包含本书中使用的截图/图表的彩色图像的 PDF 文件。您可以从这里下载:www.packtpub.com/sites/default/files/downloads/9781789341157_ColorImages.pdf。
使用的约定
本书中使用了多种文本约定。
CodeInText:表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 昵称。以下是一个示例:“双击.exe文件,然后逐步通过以下安装屏幕。”
任何命令行输入或输出都如下所示:
Airport_layer = iface.addVectorLayer('D:/QGIS_quickstart/qgis_sample_data/shapefiles/airports.shp','airports','ogr')
粗体:表示新术语、重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词在文本中如下所示。以下是一个示例:“点击“完成”以退出。”
警告或重要提示如下所示。
小贴士和技巧如下所示。
联系我们
我们始终欢迎读者的反馈。
一般反馈:如果您对本书的任何方面有疑问,请在邮件主题中提及书名,并通过customercare@packtpub.com发送给我们。
勘误:尽管我们已经尽最大努力确保内容的准确性,但错误仍然可能发生。如果您在这本书中发现了错误,如果您能向我们报告,我们将不胜感激。请访问www.packt.com/submit-errata,选择您的书籍,点击勘误提交表单链接,并输入详细信息。
盗版:如果您在互联网上以任何形式遇到我们作品的非法副本,如果您能提供位置地址或网站名称,我们将不胜感激。请通过copyright@packt.com与我们联系,并提供材料的链接。
如果您有兴趣成为作者:如果您在某个领域有专业知识,并且您有兴趣撰写或为书籍做出贡献,请访问 authors.packtpub.com.
评论
请留下评论。一旦您阅读并使用了这本书,为何不在购买它的网站上留下评论呢?潜在读者可以查看并使用您的客观意见来做出购买决定,我们 Packt 可以了解您对我们产品的看法,而我们的作者也可以看到他们对书籍的反馈。谢谢!
如需了解 Packt 的更多信息,请访问 packt.com.
第一章:开始使用 QGIS 3
QGIS 是免费和开源的软件。它是一个地理信息系统(GIS)。QGIS 使用户能够创建、操作和可视化空间数据。空间数据是与位置或地点相关的数据,通常以矢量(点、线或多边形)或栅格(位图)数据的形式定义。QGIS 项目始于 2002 年,作为一种从PostGIS(也是一种开源软件,它为 PostgreSQL 添加了地理支持)启用数据库导入和查看数据的方式。可以说,QGIS 现在是领先的开放源代码 GIS 软件包。
QGIS 3 是 QGIS 系列中的一个重大更新。如果你熟悉 QGIS 项目,你可以检查这个网站上的视觉变更日志中的更改:www.qgis.org/en/site/forusers/visualchangelogs.html。处理框架被重写,并显著提高了性能。现在,QGIS 3 为用户提供了对 Python 3 的访问。这意味着许多使 QGIS 如此强大的插件都已更新,以兼容新的 API。在撰写本文时,QGIS 3 已经发布近一年。QGIS 3.4 于 2018 年 10 月发布。它计划在 2019 年初成为 QGIS 3 系列的第一个长期支持版本(LTR)。
本书是 QGIS 的快速入门指南;它以 LTR 3.4 版本为基础。建议你在阅读本书时使用这个版本。本书的编写方式使得你可以将获得的基础知识应用到未来的版本中。然而,QGIS 是一个积极开发的软件,可能会发生变化。
本入门章节涵盖以下主题:
- 
安装 QGIS 
- 
工具栏和 GUI 
安装 QGIS
QGIS 可以在大多数操作系统上运行。甚至可以在树莓派上安装它!这是 QGIS 成功的原因之一:它支持多个平台。QGIS 项目提供了现成的软件包,以及从源代码构建的说明,可在download.qgis.org找到。在本快速入门指南中,我们将介绍如何在两个系统上安装 QGIS:Windows 和 Ubuntu。
在 Windows 上安装
在 Windows 操作系统上安装 QGIS 有两种方式。直接从 download.qgis.org 下载 .exe 文件,或者通过 OSGeo4W 安装程序下载。OSGeo4W 是一个小程序,它不仅允许您下载和安装 QGIS,还可以安装其他 OSGeo 工具。我们建议您使用此安装程序安装 QGIS。您可以从 osgeo4w.osgeo.org 下载 32 位或 64 位的 OSGeo4W 安装程序,或者直接从 download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe 或 download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe 下载。下载与您的操作系统匹配的版本并保存。将来,无论何时您想更改或更新系统,只需再次运行它即可。
OSGeo4W 安装程序
在本节中,我们将使用 OSGeo4W 作为安装程序,查看高级安装程序和快速安装程序选项(这将安装最新版本)。
最新版本
下载与您的系统匹配的安装程序后,双击 .exe 文件,并按以下步骤完成安装屏幕。最简单的方法是选择快速桌面安装。这可能不会安装 QGIS 3.4。如果您想这样做,请参阅以下子节“高级安装程序”。快速安装选项在下面的屏幕截图中显示:

OSGeo4W 安装设置
选择 QGIS、GDAL 和 GRASS GIS 旁边的复选框。GDAL 用于读取和写入地理空间数据,GRASS GIS 是可以与 QGIS 结合使用的开源 GIS 软件。这在上面的屏幕截图中显示:

OSGeo4W 安装设置,选择安装选项
点击“下一步”,下载过程将开始。每个组件下载和安装时都会显示进度。安装这些组件将为您提供许多工具来执行地理空间分析。经过一段时间后,您应该在程序菜单中看到 OSGeo4W,以及安装的软件子集,包括 QGIS。
您可以安装多个版本的 QGIS。有时,这可能是必要的,因为插件可能无法与某些软件版本兼容。如果您想选择一个版本怎么办?OSGeo4W 允许您通过高级安装程序来做到这一点。
高级安装程序
运行 OSGeo4W .exe 文件,并选择旁边的“高级安装”单选按钮:

OSGeo4W 安装设置(选择高级安装)
按步骤完成安装向导。当您到达“选择软件包”时,选择您所需的版本。在下面的屏幕截图中,我选择了 3.4:

OSGeo4W 安装设置(选择要安装的软件包)
如果需要,你可以选择其他包。一旦选择了软件,点击下一步,安装将开始。
通过 OSGeo4W 更新
你可以使用 OSGeo4W 安装程序安装新的更新。它将卸载旧版本。你可能在系统中安装了旧版本(可能是使用独立安装程序安装的)。要卸载,找到旧版本的安装目录并运行 uninstall.exe 文件。这在上面的截图中有展示:

Windows 资源管理器
逐步通过卸载向导,一旦卸载,你应该会收到类似的消息(取决于你的版本):

卸载 QGIS 2.18
点击完成以退出。
你的系统上可能运行着多个 QGIS 版本。
在 Ubuntu 上安装
在 Ubuntu 上,QGIS 项目提供了 LTR(长期支持)、最新发布(LR)和开发版本(DEV)的包。对于本书,我们建议安装 LTR 版本。LTR 版本是软件当前最稳定的版本。
为了避免因不兼容的包而可能发生的冲突,请确保你只添加其中一个包源选项。你必须添加到源列表中的具体行取决于你的操作系统版本。以下版本是 Debian stretch 的最新发布版:
deb     https://qgis.org/debian stretch main
deb-src https://qgis.org/debian stretch main 
选择存储库后,我们将把 qgis.org 存储库的公钥添加到我们的 apt 密钥环中。这将避免在从非默认存储库安装时可能收到的警告。在终端中运行以下命令:
wget -O - https://qgis.org/downloads/qgis-2017.gpg.key | gpg --import
gpg --fingerprint CAEB3DC3BDF7FB45
gpg --export --armor CAEB3DC3BDF7FB45 | sudo apt-key add -
如果需要,你可能需要根据你的系统进行调整。要获取支持的 Ubuntu 版本列表的最新更新,请查看 www.qgis.org/en/site/forusers/alldownloads.html#debian-ubuntu。到本书印刷时,关键信息可能已经改变。请参阅 www.qgis.org/en/site/forusers/alldownloads.htm 获取最新更新。
最后,要安装 QGIS,运行以下命令。第一个命令将检索系统中包的任何更新;第二个命令将安装 QGIS、Python 库和 GRASS 插件:
sudo apt-get update
sudo apt-get install qgis python-qgis qgis-plugin-grass
本书是基于 Windows 操作系统上的 QGIS 安装编写的。操作系统之间可能会有细微的视觉变化,尤其是截图。
使用 QGIS
从安装位置打开 QGIS。如果你在 Windows 上遵循了 OSGeo4W 安装,你应该能在开始菜单下的 OSGeo4W Shell 文件夹中找到它。加载时,QGIS 将显示类似于以下截图的界面,我已经对其进行了标注:

QGIS 3 的概述标注
最大的区域留给了地图。
工具栏和面板概述
在本节中,我们将查看 QGIS 中的面板和工具栏以及如何打开和关闭它们。
面板
所有面板都是可停靠的;这意味着您可以根据需要移动它们。在地图的左侧是图层和浏览器面板,右侧是处理工具箱。浏览器面板允许您在计算机上的文件夹中查找数据。从浏览器面板,您可以拖动数据到地图上。图层面板显示数据及其绘制顺序。在图层面板上右键单击图层会打开一个上下文菜单,让您与该图层交互。我们将在整本书中与图层面板一起工作。在 QGIS 项目的底部,我们可以看到状态栏。状态栏对于快速查找您正在使用的投影或地图的比例非常有用。最后,在 QGIS 的顶部是窗口标题(尚未命名的项目)、菜单选项和工具栏。
工具栏
工具栏是找到工具的地方!您可以根据工作需要自定义工具栏。这些设置可以通过设置 | 界面自定义找到。在上一张屏幕截图中,工具栏停靠在菜单下方。许多工具也可以通过菜单找到。将鼠标光标悬停在工具上以了解更多信息。您还可以使用插件在 QGIS 中构建自己的工具。
自定义
如果您在上一张截图的菜单标注附近右键单击,您可以访问面板和工具栏。如果您意外关闭了面板或工具栏,那么这里是将其重新打开的地方。您也可以通过查看菜单找到这些选项:

自定义面板和工具栏
在下一节中,我们将简要介绍一些主要工具栏。
主要工具栏
地图导航工具栏如图所示:

地图导航工具栏
这些工具都是关于在地图上移动的。平移(手形图标)、缩放(放大镜)、创建新的画布视图(从右数第四个图标),以及书签位置(从右数第三个和第二个图标)都是这个工具栏的一部分。这些工具应该与任何基于地图的应用程序相似。您还可以使用鼠标滚轮来放大和缩小地图。
属性工具栏主要涉及与数据交互。它显示在以下屏幕截图中:

属性工具栏
这些工具允许您识别矢量层的属性或栅格层的值(蓝色 i)。选择和取消选择要素(从左数第三个、第四个和第五个图标),然后打开属性表(表格图标)、字段计算器(算盘图标)、测量工具(尺子图标)和文本注释按钮(条上的最后一个图标)。这些工具非常常用,并将成为您在 QGIS 中与 GIS 数据标准交互的一部分。
项目工具栏是关于在 QGIS 中保存和创建新项目的地方。项目是包含所有文件链接、它们的顺序、它们的样式、任何打印布局——基本上是关于你的项目的所有内容。以下截图展示了它:

项目工具栏
这些工具允许你创建一个新项目(纸张图标)、打开一个项目(文件夹图标)、保存项目以及另存为(磁盘图标)、创建和管理打印布局(两个图标),最后使用样式管理器。我们将在第五章创建地图中更详细地查看打印布局。
如果你从菜单栏点击“项目”,你会看到相同的图标出现。这通常适用于所有菜单和相应的工具栏。有时保持常用工具栏(如编辑工具栏)打开,并将不常用的一些工具栏隐藏起来以节省屏幕空间,可能会更容易一些。
随着我们在这本书中的进展,我们将更详细地查看其他工具栏。
摘要
在本章中,我们介绍了 QGIS 3。我们探讨了在 Windows 和 Ubuntu 上安装的选项。最后,我们快速浏览了 QGIS 界面及其功能命名法。
在下一章中,我们将探讨如何在 QGIS 中加载数据并与它交互。我们将描述 GIS 是什么以及如何保存项目。
第二章:加载数据
接下来的两章都是关于在 QGIS 中使用数据的。在第三章创建数据中,我们将探讨如何构建和编辑 GIS 数据。在本章中,我们将从加载现有数据开始。QGIS 支持许多 GIS 数据格式。它使用 OGR 库处理矢量数据,使用 GDAL 库处理栅格数据。默认情况下,QGIS 使用 GeoPackage 格式。因此,我们将将其作为本书的默认格式。
本章将涵盖以下主题:
- 
矢量、栅格和其他数据类型 
- 
GeoPackage 
- 
加载数据 
- 
投影 
- 
创建和保存项目 
GIS 数据
我所说的 GIS 数据是什么意思?通过矢量数据,我指的是点、线和多边形。最常见的文件格式是 Shapefile(多个文件组成一个 Shapefile)。通过栅格数据,我指的是(地理参考的)位图。最常见的文件格式是 GeoTIFF。
从github.com/PacktPublishing/QGIS-Quick-Start-Guide/blob/master/qgis_sample_data.zip下载 QGIS 样本数据集。将其提取到您计算机上的工作目录中.
在 QGIS 中,您现在应该能够在浏览器面板中看到这些数据,如下面的屏幕截图所示:

浏览器面板
加载数据
在 QGIS 中加载数据可以通过多种方式完成。以下三种最常见的方式如下:
- 
您可以直接从文件夹(Windows 操作系统)中将数据拖动到地图中 
- 
您可以将数据从浏览器面板直接拖动到地图中 
- 
您可以点击“图层”|“添加图层”,然后选择要添加到地图中的图层类型 
- 
以这种方式打开数据源管理器 
在下面的屏幕截图中,我们选择加载添加矢量图层,这也可以通过Ctrl + Shift + V 快捷键完成:

加载数据
这张屏幕截图展示了 QGIS 可以消费的所有不同数据类型。我们不会涵盖所有这些格式;我们提到它只是为了突出 QGIS 的数据能力。通过这种方式添加数据,您将打开数据源管理器,如下面的屏幕截图所示:

QGIS 数据源管理器
数据源管理器是向您的地图添加数据的一种非常不错的方式。您可以逐个添加文件,添加多个文件,或者同时添加不同类型的文件。打个比方,数据源管理器非常像是一个数据菜单:只需选择您想要的数据。
从之前下载的 QGIS 样本数据中,从shapefiles文件夹中加载airport.shp文件,从raster文件夹中加载SR_50M_alaska_nad.tif文件。这些数据应该加载到地图中,并显示如下:

加载数据后的 QGIS 概览
右键单击 SR_50M_alaska_nad 并选择缩放到图层以缩放到图层范围。这显示在以下截图中:

缩放到图层
选择项目 | 新建,不保存更改以清除项目并打开一个新的项目。
GeoPackage
我已将 shapefiles 文件夹中的所有 Shapefiles 加载到 GeoPackage 图层中。您可以从这里下载此图层:github.com/PacktPublishing/QGIS-Quick-Start-Guide/blob/master/Alaska_GeoPackage.zip。
在浏览器面板中展开 GeoPackage,如下截图所示。在第三章 “创建数据”中,我们将探讨如何向此包中添加图层。现在,选择 Airports 图层并将其拖动到地图中,如下所示:

浏览器面板中的 GeoPackage
通过拖动更多图层并缩放到图层范围进行实验。这些数据看起来与我们之前加载的 Shapefiles 没有区别。如果你在文件管理器(例如 Windows Explorer)中查看该文件,而不是几个 Shapefiles 和与 Shapefile 相关的几个文件,我们只有一个文件。这使得 GeoPackage 格式(.gpkg)非常适合共享和管理项目数据。GeoPackage 格式没有文件大小限制,且平台无关,与 Shapefile 不同。
与数据交互
在本节中,我们将使用地图导航和属性工具栏。创建一个新的项目(项目 | 新建)并将以下数据从 GeoPackage 加载到 QGIS 项目中:
- 
Airports
- 
majrivers
- 
trees
从 raster 文件夹加载 SR_50M_alaska_nad.tif。确保图层按此顺序排列。缩放到 Airports 图层的范围。您的屏幕应类似于以下截图:

添加图层后的 QGIS 概览
识别数据
从属性工具栏中,点击蓝色 i 按钮,然后在地图中的 Airports 图层上点击一个点。这将在新面板中显示要素属性;同样,像所有面板一样,您可以移动它并按需调整大小。点击的点将在地图中突出显示,其属性将显示,类似于以下截图:

识别工具
使用其他图层调查识别工具。请注意,在识别结果中显示的模式当前设置为当前图层。这意味着您只能看到当前活动图层的结果。模式中有四个选项:
- 
当前图层 
- 
自顶向下,首次停止 
- 
自顶向下 
- 
选择 
将模式设置为选择并点击地图上的另一个位置。这次,您将看到所有图层(与点击位置相关)的识别选项。这样,您可以选择要查询的要素。以下是一个示例截图:

识别所有图层
关闭识别结果面板。接下来,我们将查看如何选择数据。
数据选择
在 QGIS 中,选择数据有多种方法。在本章中,我们将查看属性工具栏中的绘图选择选项,这是我们已在第一章“QGIS 3 入门”中强调的内容。让我们从“机场”中选择一些数据。在图层面板中点击“机场”图层(确保它被突出显示)并选择“按区域或单击选择要素”按钮。请注意,还有其他从下拉按钮绘制选择的方法,包括按多边形、自由手绘和半径选择。在本例中,我们将使用默认的要素选择选项,如下面的截图所示:

按区域或单击选择要素
点击并拖动一个框围绕几个机场的点。选中的点将改变颜色。按F6或点击工具栏中的打开表格按钮。将出现“机场”图层的属性表。在左下角,将查询设置为“显示所选要素”。这如下面的截图所示:

机场图层属性表
在属性表中,点击“反转选择”(Ctrl+R)按钮(黄色直角三角形和清除三角形形成一个正方形),如下所示:

反转选择
反转数据选择通常很有用。例如,您可能想选择许多点,但只想排除少数几个。使用反转功能,您可以选择少数几个并反转选择以选择多数。关闭属性表,您将在地图上看到新选择的机场。从属性工具栏点击“从所有图层取消选择要素”以清除选择。这如下面的截图所示:

从所有图层取消选择要素
最后,让我们通过属性值在“机场”图层中选择一个要素。在属性工具栏中点击“按值选择要素”按钮。这如下面的截图所示:

按值选择要素
将出现一个选择对话框。将 ID 字段设置为等于1。点击“选择要素”按钮,选中的机场将在地图上突出显示。您可以点击“闪烁要素”以闪烁选中的机场,也可以点击“缩放到要素”以放大到选中的机场。
按值选择要素的对话框如下截图所示:

通过值选择功能对话框
点击关闭按钮并清除选择(使用之前显示的清除选择按钮)。注意,这里也可以使用通过表达式选择功能。我们将在本书稍后更详细地探讨表达式。
测量距离和面积
GIS 的一个常见功能是快速计算距离和面积。在第三章,创建数据中,我们将展示如何将特征面积写入属性表。然而,在本章中,我们将探讨从属性工具栏中可用的测量选项。
测量工具不需要在图层面板中选择图层即可工作。这意味着它是独立的。测量工具可以测量长度、面积或角度,您可以使用工具旁边的下拉按钮选择所需的选项。在这个例子中,让我们测量长度。选择测量线选项,然后在地图上左键单击开始测量。完成后,再次左键单击以测量线段。继续左键单击以测量线段,或右键单击终点以完成测量。
以下截图显示了机场之间的距离(以米为单位):

QGIS 中的测量工具
将单位从米转换为千米,以显示在此比例尺上更有意义的距离。尝试测量面积;工具的工作方式与测量距离相同。在任何 GIS 中测量都取决于地图的投影。在下一节中,我们将探讨 QGIS 中的投影。
投影
QGIS 的默认投影(首次加载时)具有 EPSG 代码 4326(WGS 84)。除非更改,否则 QGIS 中的默认设置允许通过加载到地图中的第一个层的投影来设置地图的投影,假设数据与投影相关联。
本书不涉及各种坐标系统的详细内容;如果您想了解更多关于这方面的知识,那么一个很好的起点是维基百科上关于地理坐标系统的条目en.wikipedia.org/wiki/Geographic_coordinate_system。
suffice to say that getting the projection correct in your GIS is fundamental to any analysis, mapping, or derivation of knowledge from your data. The world is not flat and projecting your data is the process of taking the part of the Earth's surface you are working on and mathematically shrinking and distorting it so it fits on a plane. You can move from one projection system to another by transforming your data.
以Airports图层为例,图层的投影是 EPSG 2964,在加载数据时,你的 QGIS 项目将设置为这个投影。如果你添加了另一个投影的数据,那么 QGIS 将实时对你的数据进行重投影。这非常强大且有用,但请注意,你了解所有数据所在的投影系统。
为了说明投影,考虑将投影从 EPSG 2964 更改为 EPSG 4326,使用内部重投影参数。以下是我们的数据,在 EPSG 2964 投影下:

EPSG 2964 下 QGIS 项目的概述
在状态栏的右下角,你会看到 EPSG 2964. 点击它并将投影更改为 WGS 84. 在过滤器框中搜索4326,如下所示:

项目投影属性概述
点击确定并返回到你的地图。你会看到数据与之前表示得非常不同。以下屏幕截图中显示了此操作:

重投影数据概述
通过重复这些步骤并选择 EPSG 2964 来重置投影。
保存数据
在后面的章节中,当我们开始创建数据时,我们将在一个投影系统中工作。然而,在本节中值得注意,矢量数据(点、线和多边形)和栅格数据(位图)都可以保存为不同的投影。在Airports图层上右键单击并选择导出 | 保存要素为。在对话框中,你会看到一个选项为 CRS;这就是你可以更改投影系统的地方。
此对话框在以下屏幕截图中显示:

保存图层
对于栅格,从菜单栏中选择栅格 | 投影 | Warp(重投影)。以下屏幕截图中显示了此操作:

在 QGIS 中重投影栅格
Warp命令使用gdalwarp重投影栅格数据。以下屏幕截图中显示了将SR_50M_alaska_nad栅格重投影到 EPSG:4326 的示例:

重投影栅格工具
如果你滚动到对话框的底部,你会看到相应的gdalwarp命令。这可以粘贴到 OSGeo4W shell 中(如果你通过 OSGeo4W 安装程序安装了 QGIS)并在命令行上运行(就像许多 QGIS 功能一样)。
保存你的项目
我们可以将 QGIS 项目保存下来,以便将来返回。默认格式是.qgz。要保存项目,请转到选择项目 | 保存。我将其命名为ch2.qgz;在 Windows 资源管理器中显示如下:

将项目保存为.qgz 文件
摘要
我们已经探讨了 QGIS 中的地理/空间数据。我们讨论了矢量格式和栅格格式。本章介绍了默认文件新格式,GeoPackage。在下一章中,我们将创建 GeoPackage 中的数据。QGIS 仍然完全支持 Shapefiles 和 GeoTIFFs,它们在许多行业和 GIS 社区中仍然被广泛使用。在第七章,扩展 QGIS 3中,我们将探讨将文本文件导入和导出到 QGIS。
我们已经探索了通过属性工具栏来探索数据的方法。我们查看过查询、选择和测量数据。我们还能做很多事情,在下一章中,我们将探讨在 QGIS 中构建数据。
第三章:创建数据
在本章中,我们将创建 GIS 数据。我们将主要使用 GeoPackage。这是 QGIS 3.4 中存储 GIS 数据的默认格式。与 Shapefile 的许多扩展名相比,GeoPackage 可以在一个文件中包含数百个图层,这使得共享和管理更加简单。
我们将探讨创建点、线和多边形的几何形状。我们将向属性表中添加属性,并使用字段计算器计算多边形的面积。我们将简要讨论使用临时图层和将我们的数据导出为 Shapefile 的方法。最后,我们将探讨如何将栅格数据导入到 GeoPackage 中。
在本章中,您将学习以下主题:
- 
创建 GeoPackage 
- 
创建矢量数据: - 
编辑几何形状 
- 
创建属性 
 
- 
- 
临时图层和保存为 Shapefile 
- 
在 GeoPackage 中处理栅格数据 
创建数据
如我们在第一章“QGIS 3 入门”和第二章“加载数据”中提到的,QGIS 3.4 的默认导出 GIS 格式是 GeoPackage。我们进行的任何矢量数据操作都可以应用于 Shapefile——在本章末尾,我们将展示如何将 GeoPackage 中的任何矢量层导出为 Shapefile(您也可以导出为其他多种格式;见www.gdal.org/ogr_formats.html)。
打开我们在第二章“加载数据”中创建的 QGIS 项目。如果您跳过了前面的章节,请从与本书相关的 GeoPackage 中加载以下图层(可在以下链接找到):[github.com/PacktPublishing/QGIS-Quick-Start Guide/blob/master/Alaska_GeoPackage.zip](https://github.com/PacktPublishing/QGIS-Quick-Start Guide/blob/master/Alaska_GeoPackage.zip)
- 
Airports
- 
majrivers
- 
trees
还需从QGIS_sample_data加载SR_50M_alasja_nad.tif(从qgis.org/downloads/data/qgis_sample_data.zip下载)。将此项目保存为Chapter3.qgz。
创建 GeoPackage
在本章中,我们将创建一些数据。这些数据将采用与 QGIS 示例数据相同的地点和投影。我们将专注于绘制阿拉斯加海岸外的岛屿火岛。首先,让我们创建一个名为Fire_Island的 GeoPackage。
要创建新的 GeoPackage 图层(GeoPackage 内的图层),我们首先需要创建一个新的 GeoPackage。从图层菜单中选择创建图层 | 新 GeoPackage 图层,如下截图所示:

创建 GeoPackage 图层
在出现的对话框中,填写参数,如下截图所示:

GeoPackage 参考对话框
我们将在 GeoPackage 中创建一个名为Fire_Island_Points的层,其几何类型为点,坐标参考系统为 EPSG 2964。创建一个名为Description的新字段,并将其类型设置为文本数据,最大长度为25。点击“添加到字段列表”将其添加到字段中。我们总是可以稍后添加额外的字段。点击“确定”。当你点击“确定”时,将创建一个新的 GeoPackage,并将Fire_Island_Points层添加进去。你应该在图层面板中看到一个名为Fire_Island_Points的新层。如果你右键点击这个层并选择“打开属性表”,将出现与该层关联的表。它将是空的,并将有一个 fid 字段(默认分配)和刚刚创建的描述字段。这如图下所示:

图层和属性表
我们现在已创建了一个 GeoPackage 以及其中包含的点层。我们现在需要创建一些数据。在我们这样做之前,我们需要定位火岛,以便有一个可以基于我们的数据建立的基础!幸运的是,QGIS 使这变得非常简单,因为它允许你将OpenStreetMap添加到你的项目中。
在浏览器面板中,找到XYZ Tiles并展开它。内部应该有OpenStreetMap。点击并拖动它到地图上。它将作为新层出现在图层面板中。调整图层面板中图层的顺序,以匹配以下截图所示:

浏览器面板和图层面板
导航地图以找到安克雷奇,你应该能看到火岛。它位于安克雷奇西海岸外。在此阶段,关闭除Fire_Island_Points层和OpenStreetMap层之外的所有其他层。
你的项目现在应该看起来像以下截图:

QGIS 3.4 中显示的 OpenStreetMap 概述
在下一节中,我们将使用数字化工具栏创建一些数据。
数字化数据
在本节中,我们将在我们刚刚创建的 GeoPackage 中创建点、线和多边形数据。
创建点
将地图放大到火岛,以便机场出现。我们现在将创建一个点来表示这个机场。确保数字化工具栏可见。你可以通过选择“视图”|“工具栏”|“数字化工具栏”来打开它。数字化工具栏如图下所示:

数字化工具栏
确保在图层面板中选择了Fire_Island_Points层,并点击“切换编辑”按钮(黄色铅笔)以开始编辑会话。数字化工具现在在工具栏中处于活动状态,如图下所示:

已激活切换编辑功能的数字化工具
点击“添加点要素”按钮(三个绿色圆点)。鼠标光标将变为十字准星。在OpenStreetMap数据中点击机场位置。将打开一个要素属性对话框。在这里,接受自动生成 fid(这将为要素分配一个唯一的标识符),并在描述中输入Fire_Island_Airport。如下截图所示:

Fire_Island_Points 要素属性
将创建一个新的点。在数字化工具栏上,点击保存(蓝色磁盘)。打开属性表。您将看到这个新添加的点。在编辑模式下,让我们添加一个新字段。在打开属性表的情况下,点击“新建字段”(Ctrl+W),如下截图所示:

属性表
这将打开一个名为“添加字段”的对话框。创建一个名为Type的新字段,并将其长度设置为25(因为不期望输入的任何字符串超过25个字符)。如下截图所示:

添加字段
点击“确定”,新创建的字段将作为属性表中的空值出现。点击空值并将其更改为“机场”。在属性表中,点击保存按钮然后点击切换编辑按钮(黄色铅笔)以停止编辑。我们现在已经在 GeoPackage 中创建了一个点图层,添加了属性,并创建了一个新字段。让我们利用这些知识来创建一个道路图层(线)和一个岛屿轮廓图层(多边形)。
创建线数据
从图层菜单中选择图层 | 创建图层 | 新 GeoPackage 图层,就像我们之前做的那样。填写对话框以匹配以下截图:

创建道路图层
点击“确定”。系统会提示您是否要覆盖、添加新图层或取消。在这种情况下,请点击“添加新图层”,如下截图所示:

新 GeoPackage 图层消息框
在图层面板中会出现一个Roads图层。确保它被选中,然后从数字化工具栏中点击“切换编辑”。点击“添加线要素”。这次,在岛屿上找到一个现有的道路并数字化它。您通过左键点击鼠标并移动到新位置然后再次左键点击来完成数字化——软件会将这两个点击连接起来,称为节点或顶点。在编辑过程中,您可以点击缩放和平移工具来缩放并使过程更容易。不用担心过于精确,这是一个学习练习。完成时,右键点击以完成线条。将Road_Type字段设置为黑色沥青并点击保存。
让我们再创建一条道路。这将是我们的Roads图层中的另一个特性。为了保持拓扑,我们需要确保道路线条相接触。这是通过捕捉来实现的。在 QGIS 中,我们可以捕捉到顶点、线段或交叉点。通过点击视图 | 工具栏 | 捕捉工具栏来打开捕捉工具栏。在编辑会话中,捕捉工具栏看起来如下面的截图所示:

捕捉工具栏
在这个例子中,捕捉容差已被更改为 10 像素,但你可以根据你的缩放级别进行相应的调整。这并不一定是一个通用的解决方案,你需要调整这个参数以满足你的需求。将捕捉环境设置为顶点和线段,以确保你有机会捕捉到相邻的道路,如下面的截图所示:

捕捉选项
你需要在一个十字线数字化光标内看到一个粉红色的方块。你可能需要放大。它看起来如下面的截图所示:

在点上捕捉
创建一个新的道路并使用捕捉来确保线条是拓扑正确的——也就是说,没有间隙。当你完成数字化后,右键点击并在Road_Type字段中添加沥青,然后点击保存。点击切换编辑以完成数字化。如果你愿意,可以继续数字化更多道路。
创建多边形
最后,在这个矢量编辑部分,我们将看看如何编辑多边形。我们所学到的所有关于线和点的技术都适用于此。再次,在你的 GeoPackage 中创建一个新的图层,这次命名为Island_Outline。我们不会创建任何字段,所以接受以下截图所示的默认设置:

创建多边形图层
在图层面板中选择新的图层,点击切换编辑并数字化岛屿。不用担心过于详细。结果将是一个数字化的岛屿。在 QGIS 中,新的多边形图层将类似于以下截图:

QGIS 内编辑概述
现在,让我们创建一个名为area的字段并填充其实际面积。为此,我们将使用属性工具栏中的字段计算器工具。选择Island_Outline后,点击字段计算器按钮(算盘图标)。输入以下值:创建一个名为area的新字段,将其设置为整数,并在表达式框中输入$area。如下面的截图所示:

字段计算器
点击“确定”。这将开启“切换编辑”功能,创建一个名为area的新字段,并用面积值填充它。如果你有多个要素,所有面积都将被计算。或者,你可以使用选择工具选择你想要计算面积的特征。字段计算工具是一个灵活且非常强大的工具。计算出的面积将在属性表中显示。在计算面积时,请记住所有单位都将使用投影的单位进行计算。如果你想检查面积,可以使用第二章中提到的“加载数据”部分展示的测量工具来验证这个测量值。取消编辑会话并保存项目。
临时图层
临时图层是临时矢量图层,在打开 QGIS 项目时保持存在,但在关闭时丢失——它们存储在内存中。当你想要快速在地图上绘制一些特征时,临时图层非常有用。好处是,你不需要考虑临时数据的文件格式和位置。如果你发现你需要保留这个图层,它可以被导出为永久文件——我们将在下一节中探讨这一点。
要创建一个临时图层,选择“图层 | 创建图层 | 新建临时临时图层”。选择“多边形/曲线多边形”作为几何类型,如下面的截图所示:

创建临时图层
使用我们已强调的技术在Fire_Island上的一个水体周围进行数字化。你的项目将看起来像下面的截图:

数字化水体的概述
保存你的编辑并取消编辑。临时图层可以帮助你进行数据管理——无需再创建多个test.shp文件,也不必再知道它们是什么。
将数据保存为 Shapefile
我们可能希望将这个临时图层保存为 Shapefile。实际上,我们可以使用相同的方法将我们的任何数据保存为 Shapefile。在图层上右键单击并选择“导出 | 保存要素为...”。在“格式”旁边的下拉菜单中选择 ESRI Shapefile,如下面的截图所示:

保存到 Shapefile
接受默认设置,将创建一个新的 Shapefile。
光栅数据
对于主要的光栅数据,你将通过处理工具如插值或点数据的网格化来创建。有时,我们可能想要将矢量图层栅格化。这可以通过使用“光栅 | 转换 | 栅格化”命令来完成。
让我们将SR_50M_alasak_nad.tif光栅加载到我们刚刚创建的 GeoPackage 中。你只需将图层从浏览器面板拖到 GeoPackage 中。一旦加载,它将显示一个消息框,如下面的截图所示:

将光栅图层导入 GeoPackage
Fire_Island.gpkg GeoPackage 现在将看起来像下面的截图:

GeoPackage 的内容
向 GeoPackage 添加数据如此简单。将这个图层拖入地图中,以检查它是否确实存在。
创建栅格数据集
我们将对landcover数据进行查询以创建一个新的图层,然后将其移动到Fire_IslandGeoPackage 中。将 QGIS 样本数据中的landcover栅格从raster文件夹加载到图层面板中。
接下来,从主菜单中选择“栅格”|“栅格计算器”。填写栅格计算器,如图下截图所示:

栅格计算器
将新的栅格保存为 GeoTIFF 文件并点击确定。这将创建一个掩膜——任何landcover值大于五的都将被分配一个值为一,而小于五的将被分配一个值为零。在下一章中,我们将展示如何以更有意义的方式显示这些数据,设置透明度和更改颜色渐变。
最后,将这个新创建的图层拖入Fire_IslandGeoPackage 中。
摘要
我们已经探讨了创建矢量和栅格数据。在 QGIS 中使用默认的 GeoPackage 格式是一种强大而简单的方式来管理我们的 GIS 数据。在本章中,我们为点、线和多边形构建了几何形状,并分配了属性。我们创建了临时图层、Shapefiles 和栅格。
在下一章中,我们将查看这些属性数据来样式化我们的数据。我们将使用栅格中的值来利用不同的颜色渐变。下一章是我们创建地图道路上的一个垫脚石,我们将在第五章“创建地图”中完成这一任务。
第四章:样式化数据
在本章中,我们将样式化 GIS 数据。我们将使用存储在 GeoPackage 中的数据。我们将根据属性表中的数据样式化矢量图层,并使用我们可用的各种渲染工具来样式化栅格数据。在创建样式后,您可以保存并重用它们。
QGIS 默认情况下会随机为每个图层分配颜色,这在编辑和创建时很有用,但我们希望更好地可视化我们的数据。这将帮助我们制作出更有用和令人愉悦的地图。这是本章的重点。
本章涵盖以下主题:
- 
图层样式面板 
- 
样式化矢量数据 
- 
样式化栅格数据 
- 
保存样式文件 
图层样式面板
图层样式面板提供了访问图层属性对话框样式选项的快捷方式。它允许用户更新图层的样式并立即在地图上看到更新。
打开 QGIS。从 GeoPackage 加载以下图层,并在图层面板中保持以下顺序:
- 
机场
- 
majrivers
- 
grassland
- 
alaska
图层按从上到下的顺序排列,点、线和多边形,以便于可见性。打开图层样式面板。通过点击视图 | 面板 | 图层样式面板来完成此操作,如下面的截图所示:

激活图层样式面板
一旦您打开了图层样式面板,请确保面板右下角的“实时更新”复选框被勾选,以便任何更新都可以在制作时看到。
右键点击alaska图层并选择缩放到图层选项。您的屏幕应该看起来类似于以下截图:

QGIS 中加载的所有图层的概述
样式化矢量数据
在本节中,我们将探讨样式化矢量数据的选择。我们将查看点数据的聚类和将其转换为热图。我们将查看阿拉斯加的主要河流的样式化,但首先我们将探讨样式化多边形数据的选择,从阿拉斯加的边界开始。
样式化多边形数据
在本节中,我们将样式化alaska和grassland图层。在图层面板中关闭所有其他图层。我们将通过前图中右侧的图层样式面板来样式化数据,因为它具有交互性。然而,如果您愿意,您也可以通过右键点击一个图层并选择属性然后符号选项卡来访问相同的信息。
选择单符号,并在符号层中输入然后选择形状爆发填充。形状爆发填充是多边形内部边缘的阴影。我为我alaska图层的边界选择了蓝色。将填充距离设置为 2.00 毫米,如下所示:

图层样式面板
这产生了很好的样式。我们可以进一步细化它。点击忽略多边形阴影时环的复选框旁边的复选框。然后,点击绘制效果按钮并选择自定义效果按钮。从结果对话框中,将效果设置为着色,如图所示:

图层样式面板中的高级多边形样式
alaska层现在应该被样式化并看起来类似于以下截图:

阿拉斯加边界样式化
接下来,打开grassland层。这次,我们将使用 F_CODEDESC 字段来样式化它。在此字段中,我们有两种类型:grassland和Scrub/Bush。这些数据被分为几类。QGIS 有一个根据字段中的类别可视化数据的渲染器;它被称为分类渲染器。将分类作为符号并选择 F_CODEDESC 字段。点击分类。
接下来,双击grassland并将其设置为酒红色符号,如图所示:

符号化草地
通过点击符号选择器标签旁边的蓝色三角形返回到原始样式选择窗口。双击grassland并将符号更改为点划线,如图所示:

符号化草地(2)
你的数据现在应该看起来类似于以下截图:

阿拉斯加已符号化的草地
我们有多种方式可以样式化多边形数据。探索样式菜单中的选项,这有助于在需要时调整你的可视化效果。接下来,我们将通过 GeoPackage 中的majrivers层来查看线样式。
样式化线数据 – 河流层
从图层样式面板顶部选择majrivers层。我们将使用此层创建一个由两种颜色组成的线条样式:填充颜色和轮廓颜色。在图层样式面板中选择单个符号。在此符号学下方,点击绿色加号图标添加一个新的简单线条。你现在应该看到两条线,它们看起来类似于以下:

将河流样式化为线条
将顶部简单线条改为厚度为 0.260000 的蓝色,底部为厚度为 0.460000 的灰/黑色。点击线条(直接在这两条线之上)以突出符号。这将稍微改变图层样式面板。在此面板底部,有一个标签为“高级”的按钮。点击此按钮并选择符号级别。从结果屏幕中,选择启用符号级别复选框。你的数据现在应该看起来类似于以下截图:

阿拉斯加已符号化的主要河流
接下来,我们将查看如何样式化Airports层。
样式化点 – 机场层
在样式化点方面有许多选项。首先,让我们看看一些选项。
点聚类选项通过聚类接近其他点特征的点特征来样式化点图层。它将一个数字样式分配给聚类点,以指示聚类的点数。打开Airports图层,在图层样式面板中选择点聚类。接受默认设置。现在您应该有一个带有该位置点(簇)数的红色标记。您的地图应该看起来类似于这个:

显示为簇的机场数据的阿拉斯加
热力图创建是点数据的另一种选项。类似于聚类,我们可以即时创建点的密度热力图。从下拉列表中,这次选择热力图。选择合适的颜色渐变;在以下示例中,我选择了光谱颜色渐变。与Airports数据集相关的点数据相当稀疏,而且,实际上在这里的热力图对数据可视化并没有太大的作用。然而,了解它是一个有用的工具:

从点数据创建热力图
更好的方法是将机场位置显示为飞机符号,而不是热力图或点簇。在图层样式面板中使用分类选项进行符号化。选择 USE 作为列,这将定义机场是否为以下:
- 
民用/公共 
- 
联合军事/民用 
- 
军事 
- 
其他 
这在下面的屏幕截图中显示:

按类别样式化的机场
通过以这种方式显示数据,可以清楚地看到大多数机场都被归类为其他类别。这有助于我们更好地样式化地图。这样,我们可以通过复选框打开/关闭我们希望显示的机场。如果我们只想显示民用机场,我们可以取消选中所有其他机场类型。生成的地图将如下所示:

显示民用机场数据的阿拉斯加
数据管理的一点说明
通过直接查询数据仅显示数据选择,可以实现与上一节相同的结果。我们可以复制相同的图层,查询它,并不同地符号化,而不会对底层数据产生影响。要复制机场数据,在图层面板中右键单击图层并选择复制图层。这将再次将完全相同的图层添加到地图上。现在您可以更改符号化,或添加标签(更多内容请参阅第五章,创建地图)。
右键单击新图层并选择筛选。您可以使用查询构建器构建一个查询,仅选择军事机场。双击字段中的 USE,然后从操作符中选择=,最后在值中选择所有并选择军事。查询构建器将如下所示截图:

使用查询构建器选择数据
点击“确定”,然后再次点击“确定”以退出属性对话框。现在,地图上只显示军事机场。这种过滤是另一种处理数据的方式。如果你只打开此图层的属性表,则只会显示过滤特征。
样式化栅格数据
关闭所有矢量图层。在本节中,我们将专注于渲染栅格数据。将SR_50M_alaska_nad和landcover图层加载到地图中。我们将对这些图层进行风格化。风格栅格数据的选项包括以下内容:
- 
多波段颜色:当你有三个或更多栅格波段(例如卫星图像)时,此选项允许你选择哪些波段用于红色、绿色和蓝色通道 
- 
调色板/唯一值:为离散栅格数据(例如 landcover分类)着色
- 
单波段灰色:对连续栅格数据(例如高程数据)应用从黑到白或从白到黑的颜色渐变 
- 
单波段伪彩色:将对连续栅格数据(例如高程数据)应用颜色渐变 
- 
阴影图:将 DEM 即时风格化为阴影栅格 
SR_50M_alaska_nad图像将默认加载为单波段灰色。在图层风格面板中,将符号类型更改为单波段伪彩色。展开最小/最大值设置并选择累积计数切分到 1%到 99%,保持插值方式为线性(因为它是一个连续的栅格数据集),并选择 Viridis 作为颜色渐变。
图层风格面板应类似于以下屏幕截图:

使用单波段伪彩色渲染器风格栅格
当处理连续栅格数据时,调整设置以适应你的数据是值得的。尝试不同的拉伸设置和颜色渐变,以最好地解释数据。
landcover数据在加载时使用调色板/唯一值符号显示。由于这是离散数据(它有定义的类别),这是显示landcover数据最合适的符号类型。你可以通过双击颜色来调整类别颜色。这将打开图层风格面板中的颜色选择工具,它提供了几种调整颜色的方法。这在上面的屏幕截图中显示:

QGIS 中的颜色选择器
选择一个类别的最合适的颜色后,点击“应用”。在这种情况下,我们不知道每个类别代表什么,所以在这个阶段选择颜色是任意的。回到图层风格面板,我们可以为我们的标签分配文本,这在制作包含这些数据的地图时非常有用。当你对图层风格面板进行更改时,地图/图层面板将实时更新。这在上面的屏幕截图中显示:

样式化土地覆盖栅格文件的概述
栅格工具栏
通过视图 | 工具栏 | 栅格工具栏打开栅格工具栏。这在上面的屏幕截图中显示:

栅格工具栏
您可以使用此工具栏来拉伸您的连续栅格数据(例如,DEM 或卫星影像数据)。这是通过之前显示的前四个按钮完成的,使用各种拉伸方式。在最后四个按钮上,您可以增加/减少栅格的亮度并增加/减少对比度。此工具栏提供了方便的工具,可以快速调整您的数据。然而,如果您想要更多控制,那么请使用之前演示过的图层样式面板。
保存样式
将数据样式化以在地图上展示可能需要花费大量时间,您可能希望将来重用和/或调整您创建的样式。这可以通过将样式保存为样式文件来完成。为此,右键单击一个图层并选择属性。
在图层属性对话框的左下角有一个名为样式的按钮,如以下屏幕截图所示:

保存样式
选择保存样式。有三种保存样式的选项。您可以将.qml文件保存到项目目录中,您可以将样式保存为 SLD(样式图层描述文件,通常用于在线样式化栅格数据,例如在 GeoServer 中),或者您可以直接将其保存到 GeoPackage 中。在这种情况下,我选择将其保存为.qml文件,所有类别都开启,在我的项目目录中。点击确定关闭图层属性对话框。右键单击图层,选择移除图层以将其从项目中移除。现在,将图层添加回来,样式将设置为默认。右键单击图层,从样式按钮中选择加载样式,并选择刚刚创建的样式。
保存你的项目。在下一章中,我们将使用这种样式化的数据来制作地图。
摘要
我们已经探讨了矢量数据和栅格数据的样式化。我们使用图层样式面板使样式化交互式。我们探讨了在 QGIS 中样式化多边形、线和点的一些方法。然后,我们转向探讨样式化连续和离散栅格数据的方法。最后,我们展示了如何保存样式并将它们应用到图层上。
在下一章中,我们将探讨如何使用标签添加额外信息,然后创建可以打印或导出为文件以便共享的地图。
第五章:创建地图
在本章中,我们将使用 QGIS 创建地图。我们将使用上一章中的样式和数据。在构建地图之前,我们将查看标签功能。QGIS 在创建地图方面非常出色。查看这个画廊以了解 QGIS 的功能:www.flickr.com/groups/qgis/pool/。
本章涵盖的主题如下:
- 
标签 
- 
创建地图 
- 
保存和导出地图 
- 
创建地图集 
- 
构建网络地图 
标签
打开我们在第四章,数据样式中构建的 QGIS 项目。我们将使用它来构建地图。通过选择视图 | 工具栏并选择标签工具栏来打开标签工具栏。标签工具栏如下所示:

标签工具栏
在这个工具栏上有八个按钮;按顺序,它们如下:
- 
点击“图层标签选项”将打开图层样式面板,并默认打开标签选项卡 
- 
图层图表选项 
- 
突出显示已锚定的标签和图表 
- 
锚定/取消锚定标签和图表 
- 
显示/隐藏标签和图表 
- 
移动标签和图表 
- 
旋转标签 
- 
更改标签,用于标签编辑 
确保在图层面板中选择了“机场”图层。在标签工具栏上点击图层标签按钮。这将打开图层样式面板;我们在上一章中使用它来设置图层样式。选择单个标签和带有 NAME 的标签来标记所有“机场”。我已经将文本大小从 10.0000 点减少到 8.0000 点。确保勾选了“实时更新”旁边的复选框,以便在更新时可以看到任何更改。这在上面的屏幕截图中显示:

图层样式面板——标签设计重点
这些是默认的标签选项。您所做的任何更改都将立即在地图中显示。并非所有标签都将放置得完美。一个好的方法是尽可能多地使用位置选项卡将标签放置在最佳位置,如果它们仍然没有放置得最优,则手动移动单个标签。
在打开标签选项卡后,选择位置选项卡(带有四个箭头指向北、南、东和西的图标)。选择“从点偏移”旁边的单选按钮,并在显示窗口中点击顶部中间象限。这将使所有标签直接向北(如您查看地图时所见)从“机场”图标移动。调整偏移 X,Y 为 0.0000,-2.0000 以夸大与图标的距离。这在上面的屏幕截图中显示:

图层样式面板——标签位置重点
现在我们已经放置了标签,让我们使用我们可用的选项之一来设置它们的样式。点击缓冲区标签(图标显示为蓝色背景下的 abc)。接下来,勾选旁边的“绘制文本缓冲区”复选框。这有助于我们的标签从地图中脱颖而出。点击自定义效果按钮,勾选旁边的“阴影”复选框,并将其不透明度设置为 50.0%。这如图所示:

图层样式面板—标签效果属性
地图现在看起来像这样:

添加了图层后的地图
如你所见,靠近安克雷奇国际机场的标签存在问题。让我们使用交互式标签工具栏手动移动这些标签。还有一些标签没有显示;在下一节中,我们将手动移动它们。
手动移动标签
要交互式移动一个标签,请点击标签工具栏上的“移动标签和图表”按钮,接受 ID 作为主键。接下来,点击一个标签并移动它。当你点击并拖动一个标签时,一个放置框以绿色出现在新标签位置。这如图所示:

添加标签
保持放大和缩小地图,以确保你的标签放置在最适合你的数据的位置。你还有许多其他选项,我们不会在本快速入门指南中介绍,但旋转(如图在标签工具栏上突出显示如下)很有用,尤其是在线性特征上:

标签工具栏
标签工具栏最右侧的按钮允许你一次更改一个标签的个别属性;大小、颜色和字体大小都可以逐个标签设置。你的地图将看起来类似于以下截图:

标签放置与调整
如果你想要标记河流和草地区域,请使用我们刚刚描述的工具应用标签。
现在我们已经准备好将所有这些整合在一起并制作地图。
在 QGIS 中制作地图
点击项目 | 新建打印布局(或点击项目工具栏上的相应按钮)。
在创建打印布局标题对话框(如下所示)中,给你的新、空地图添加一个标题并点击确定:

创建新的打印布局
现在,你将有一个空白的画布,我们将在其上构建我们的地图。通过菜单进入添加项目 | 添加地图,将你的地图添加到布局画布中。然后,点击并拖动鼠标在你想放置地图的位置绘制画布。这将添加一个名为“地图 1”的项目;我们稍后会添加更多项目。这如图所示:

地图布局
请注意,为了便于阅读本书,标签大小已经增加。
因此,你会发现屏幕截图与你的屏幕略有不同。
选择“地图 1”,点击“项目属性”选项卡,并将比例设置为12000000,这样就可以在页面上显示所有数据。确保工具箱工具栏已启用(视图 | 工具栏 | 工具箱)。这是一个非常有用的工具栏,因为它允许我们设计我们的页面。点击“移动项目内容”按钮,如下所示:

移动项目按钮——用于在地图上移动项目
这个工具允许我们将地图中的数据移动到最佳位置以适应页面。当你满意它在正确的位置时,点击“平移地图”(手形图标)。
要添加图例,点击添加图例按钮。绘制一个区域,图例将出现在地图上。图例最初可能看起来很杂乱,但我们可以通过“项目属性”进行调整。确保在“项目”面板中选择图例,然后在“项目属性”选项卡中添加一个标题(图例)并取消勾选自动更新复选框。我们可以移除图例中不需要的任何图层。在地图中,“阴影”和“土地覆盖”栅格仍然存在。要移除这些,点击图层名称,然后点击红色减号按钮将其从图例中移除。如果您想将图层添加回来,则点击绿色十字按钮以显示选择图层列表。完成图例后,在“项目属性”中向下滚动并展开字体。
在这里,将标题字体设置为粗体。现在的地图看起来是这样的:

添加图例的地图布局
接下来,添加一个比例尺。在工具箱工具栏中,选择比例尺工具,并将新的比例尺拖动到地图的右下角。在比例尺的“项目属性”中,将样式设置为“双框”并将单位设置为英里。将单位值的标签从“mi”更改为“Miles”。
通过点击“添加项目”|“添加图片”,添加一个指向北方的箭头。使用北方的项目属性来指向计算机上存储 QGIS SVG 文件的地点。在这个例子中,我使用的是C:\OSGeo4W64\apps\qgis\svg\arrows\NorthArrow_11.svg。
现在,我们需要添加一个标题和描述。要将文本添加到这个地图中,选择“添加项目”|“添加标签”。在左下角绘制一个框,然后在“项目属性”窗口中,复制以下文本:
<h1>A QGIS built map of Alaska</h1>
<h2>This map was created in QGIS 3.4</h2>
<p>We used the following data</p>
<ul><li>Airports</li>
<li>Grassland</li>
<li>Rivers</li>
<li>Alaska boundary</li></ul>
点击“渲染为 HTML”。
为了完成,我们可以为地图设置一个背景颜色。在“项目”面板中选择“地图 1”,然后在“项目属性”中的背景选项中滚动。选择一个中性颜色;我选择了浅灰色。调整透明度到一个合适的水平,以免分散观众的注意力。在“项目”面板中选择图例,并将其背景设置为与地图背景相同的颜色。
最后,从工具箱工具栏中,点击添加形状图标。选择一个矩形并围绕标题绘制。选择该项目,然后在“项目属性”中,将填充更改为无填充并将边框设置为黑色(默认为黑色)。然后,将圆角半径设置为 3.00,这样文本框的角落就是圆滑的。
您的地图将类似于以下截图:

QGIS 3.4 中更新的地图布局
通过布局 | 保存项目来保存您的地图。要将它保存为.pdf格式,请点击布局 | 导出为 PDF。您可能需要调整导出设置,例如 dpi 值,以获得最佳的地图输出。为此,请点击屏幕右侧的布局标签(在项目属性旁边)。在此屏幕上,您将有机会更改各种设置。布局标签如图所示:

布局设置
创建图集
关闭我们刚刚创建的布局,并返回到 QGIS 主项目屏幕。在这个例子中,我们将创建一个关于民用机场周边地区的图集。为此,请使用只包含民用机场的 NAME 字段。让我们创建一个新的基本布局来展示这个功能。我们可以通过选择项目 | 新打印布局,或者通过布局管理器项目 | 布局管理器来实现。让我们选择布局管理器。这是一个有用的对话框,列出了 QGIS 项目中的所有创建的布局。如图所示:

QGIS 布局管理器
选择空布局并点击创建以打开一个新的空白模板。我将把我的新布局命名为Airport_Atlas:

创建一个新的打印布局
就像我们在创建阿拉斯加地图时做的那样,选择将新地图添加到布局的按钮,然后点击并拖动以用 QGIS 项目的数据填充地图页面。从菜单栏中选择图集 | 图集设置,然后勾选“生成图集”旁边的框。现在,选择覆盖层为“机场”和页面名称为“NAME”。这将告诉图集为每个机场名称创建一页:

生成图集的选项
在项目属性标签页中,确保已勾选“由图集控制”;这意味着比例/视图将调整到每个要素。接下来,确保大纲工具栏已开启。工具栏如图所示:

大纲工具栏
点击图集工具栏中的预览按钮,并使用箭头滚动查看建议的图集。如图所示:

在图集功能中创建的地图
比例可能需要调整以适应您的需求。您可以添加标题、图例、比例尺和北箭头,就像我们在前面的例子中所做的那样。完成之后,从菜单中选择图集 | 导出图集为.pdf并保存到磁盘。这是一个简单的例子,但它展示了创建图集的基本方法;您只需构建一个布局即可完成。完成布局后,保存并关闭它。
最后,在本章中,我们将快速浏览创建网络地图的过程。
创建网络地图
我们不仅可以创建打印或静态的数字地图。通过创建网络地图,用户可以在线与地图进行更多交互。QGIS 有一个插件可以让你将数据以网络地图的形式展示。这为共享地图提供了另一种选择。在这个简短的例子中,我们将介绍 QGIS 插件以及 qgis2web 插件如何让我们创建网络地图。
插件是 QGIS 中非常强大且具有协作性的功能。开发者和公司已经创建了众多插件,这些插件扩展了 QGIS 的核心功能。其中一些插件已经如此关键,以至于它们被整合到了主软件中。从插件菜单中选择“管理”和“安装插件”。
在接下来的两章中,我们将更详细地探讨插件,第六章 空间处理 和 第七章 扩展 QGIS 3。
在插件管理器中,选择“全部”标签,搜索并安装 qgis2web。安装完成后,关闭插件管理器。在菜单中,应该有一个名为“网络”的选项。从这里,选择 qgis2web | 创建网络地图。调整图层和组以匹配您希望创建的地图。在这个例子中,选择了 Airports、majrivers 和 alaska 图层。这张地图将使用 Leaflet JavaScript 库;这是一个用于创建轻量级网络地图的库。以下是 qgis2web 的截图:

QGIS qgis2web 插件概述
当你对配置满意时,点击“导出”按钮;这将把网络地图保存到指定的“导出”文件夹中。然后,在您的网络浏览器中打开生成的网络地图。您可以将“导出”文件夹中的内容复制到网络服务器上以发布地图。qgis2web 插件是创建网络地图的一种非常高效的方式。
摘要
在本章中,我们使用 QGIS 构建了地图。我们首先查看标签选项,包括使用规则和交互式更改单个标签。然后,我们使用上一章中设计的样式数据构建了一张地图。接着,我们探讨了如何创建图集,最后查看使用 qgis2web 插件将地图导出到网络上的选项。
在下一章中,我们将探讨空间分析,帮助从数据中提取更详细的空间信息。
第六章:空间处理
在本章中,我们将使用 QGIS 进行空间分析。我们将使用之前数据章节中使用的 GeoPackage 中的数据。首先,我们将查看处理工具箱,然后继续介绍一些单个工具,并对我们的数据进行空间查询。
本章将涵盖以下主题:
- 
处理工具箱 
- 
空间查询 
- 
数据分析 
- 
基于栅格的分析 
处理工具箱
从处理菜单中选择工具箱。处理工具箱如下所示:

处理工具箱
在处理工具箱的顶部,有一个工具栏。在这个工具栏中,第一个按钮用于调用模型构建器,第二个按钮打开 Python 脚本工具,这两个工具我们将在后面介绍。接下来四个按钮按顺序显示历史记录、结果查看器、原地编辑要素(此按钮显示允许原地修改几何形状的算法的工具),以及处理设置。在此工具栏下方是搜索功能;使用此功能,您可以快速找到处理工具并运行它们。
在本章中,我们将使用这些工具来分析和处理我们的数据。我们将使用处理工具箱中的某些工具来回答一些空间或 GIS 类型的问题。
创建一个新的空 QGIS 项目。从 GeoPackage 中加载以下图层:
- 
regions
- 
pipelines
哪些区域与管道相交?
我们可以通过空间查询来回答这个问题。在 QGIS 中,这个工具称为“按位置选择”;在处理工具箱中搜索这个术语,然后双击工具打开对话框。我们想使用这个工具来选择与pipelines相交的所有regions图层要素。输入将如下所示:

按位置选择工具
QGIS 中的输出将如下所示:

高亮显示的选定区域
通过右键单击图层并选择打开属性表来打开属性表。您将在表中看到选定的区域。可以扩展此查询并在regions图层中创建一个字段,以记录管道是否与区域相交。为此,我们可以使用字段计算器。
让我们添加一个名为Pipeline的字段,如果管道穿过该区域,则分配值为 1,如果不穿过,则分配值为 0。在属性表中,单击打开字段计算器按钮(图标是一个算盘)。按照以下方式填写字段计算器。确保选中旁边的“仅更新 5 个选定的要素”复选框:

字段计算器
点击确定,然后打开属性表;您将看到一个名为Pipeline的新字段。如下所示:

带有选定要素的属性表
现在我们需要将所有其他字段的所有值都设置为 0。反转选择(按钮看起来像灰色三角形下方的黄色三角形)。从下拉菜单中选择“管道”字段并将值设置为 0。点击“更新所选”。要更改的值在上面的屏幕截图中显示:

在字段计算器中更新现有字段
点击“确定”。现在,“管道”字段要么为零(未受影响)或一个(受影响)。清除选择并取消编辑。我们可以使用第四章中“样式化数据”的样式技巧,根据新创建的“管道”字段来表示区域层。
管道附近 15,000 英尺内的建筑和定居点有哪些?
要回答这个问题,我们需要对管道执行缓冲操作,然后选择位于此缓冲区内的 popp 图层中的点。这是一个常见的 GIS 查询,这里展示的方法应该适用于你可能对数据有任何类似查询的情况。将 popp 图层加载到地图中。
在处理工具箱中搜索“缓冲”。双击打开工具。选择pipelines图层并将缓冲距离设置为15000英尺。勾选旁边的“溶解结果”复选框;这将合并任何相邻或重叠的要素成为一个要素。对于输出,选择我们与这本书一起提供的包含此alaska图层的 GeoPackage。缓冲对话框应该如下所示:

缓冲工具
点击“运行”。当工具完成后,点击“关闭”。在地图上,我们现在应该有一个管道的缓冲区。使用之前的选择位置工具,但这次选择位于新创建的缓冲区内的 popp 图层中的点。对话框应该类似于下面的屏幕截图:

选择位置工具
点击运行后,关闭工具并检查地图。此查询导致选择了 49 个要素。要将这些要素写入新图层,在图层面板中右键单击弹出图层,选择“导出”|“将所选要素另存为”。将所选要素保存到名为Popp_in_pipeline_corridor的新 GeoPackage 图层中。这在上面的屏幕截图中显示:

保存图层
点击“确定”,在图层面板中关闭除这个图层和区域之外的所有图层。你的地图应该看起来像下面的截图:

管道 15,000 英尺范围内的所有 popp 点
与第一个问题类似,这个查询在 GIS 中很常见。你可能会处理的是管道走廊内的地址点,而不是新商店周围的定居点和建筑,你可能会联系他们告知他们新的优惠。
在缓冲管道内部,土地覆盖类型的分布是什么?
这是一个我们需要结合栅格和矢量数据来提供答案的问题。我们可能想知道管道是否穿过保护区以及该区域有多少受到影响。
将landcover.img数据集加载到图层面板中。为了回答这个问题,我们将使用一个名为区域直方图的工具。在工具箱中搜索它。将栅格图层设置为landcover图层,将包含区域的矢量图层设置为缓冲管道,并选择使用单词Terrain_作为区域的前缀。将更改保存到 GeoPackage 中。这如图下截图所示:

区域直方图工具
点击“在后台运行”,完成后关闭。将在图层面板中添加一个具有一个要素的新图层。右键单击此图层并打开属性表。由于我们在创建时溶解了缓冲区,因此表中只有一个要素。生成的表看起来如下截图所示:

区域统计工具生成的属性表
我们可以看到带有Terrain_x字段的字段,其中x对应于landcover栅格中的值。管道受影响最严重的地形是Terrain_9。
在第七章 扩展 QGIS 3 中,我们将探讨如何将问题 2 和 3 中的工具组合成一个模型来自动化这些过程。这将使我们只需运行一个工具。
现在我们将转向使用栅格数据进行的地形建模。
栅格分析
创建一个新的 QGIS 项目并将landcover.img文件加载到地图中。我们将使用这个图层来演示 QGIS 中许多栅格处理工具中的几个。加载后,我们有了从 0 到 13 的范围的覆盖层类别。值零似乎对应于水。在这个例子中,我们将所有等于零的值设置为无数据。在 GIS 中,当我们有不想使用或显示的数据时,我们会将栅格数据设置为无数据。
要将Landcover数据集中的 0 值更改为无数据,请选择“栅格”|“转换”|“翻译”(转换格式),如图下截图所示:

调用翻译工具
翻译工具非常有帮助,可以将栅格数据转换为不同的数据类型和格式。它基于 GDAL 翻译工具构建;您可以通过gdal_translate了解选项,请参阅www.gdal.org/gdal_translate.html。在 QGIS 中打开翻译工具后,选择landcover图层作为输入图层,并将输出波段分配特定无数据值设置为0。将输出框标记为Converted as Landcover_Null.tif保存。这如图下截图所示:

使用翻译工具设置无数据值
生成的栅格将看起来像这样:

将值为 0 设置为无数据的土地覆盖
使用这个新创建的图层,我们将根据栅格计算器中的条件语句重新分类这个栅格数据集。我们将设置所有值大于或等于五的地面为零,其余部分为一。打开栅格计算器,并在栅格计算器表达式窗口中输入以下内容:"Converted@1" >= 5,并保存为 Landcover_Null_reclassified.tif,如图所示:

栅格计算器中的条件语句
结果的二值栅格将看起来像以下截图:

从栅格计算器生成的条件栅格
你可能没有预料到这个结果,因为值为 0 的部分是黑色的,而 1 的部分显示为白色。我们可以改变这一点;要做到这一点,我们需要将 1 的渲染方式改为着色,其余部分为透明(或白色)。右键单击 Landcover_Null_reclassed 图层并选择属性。将渲染类型设置为调色板/唯一值,点击分类并调整 1 的值为红色,0 的值为透明,如图所示:

改变栅格的渲染方式
在下一节中,我们将探讨将此栅格转换为矢量数据集的过程。
转换为矢量
重新分类栅格对于许多可视化和处理工作流程非常有用,同时也适用于将数据转换为矢量。从栅格菜单中选择转换 | 多边形化(栅格到矢量),这将打开栅格到矢量工具。将矢量化图层保存为名为 vectorised_terrains.gpkg 的新 GeoPackage 图层,如图所示:

多边形化工具
由于栅格相当复杂,这个过程可能需要一些时间。完成后,你将拥有一个看起来类似于以下截图的矢量图层:

从条件栅格创建的结果矢量图层
新创建的矢量数据集将具有 DN 字段等于 1 或 0 的特征。在这种情况下,我们对任何等于 0 的 DN 值不感兴趣。打开图层的属性表,并使用选择特征选择 DN 字段中等于 0 的值。使用表达式(点击属性表从左数第十个按钮)。点击选择特征然后关闭,如图所示:

编辑矢量化图层
在属性表中点击切换编辑模式按钮(左边的第一个按钮),然后点击红色垃圾桶删除选定的值。点击切换编辑模式关闭编辑并保存更改。现在最终数据应该看起来类似于以下截图:

最终向量化地形层
QGIS 处理工具箱中有许多栅格分析工具我们可以使用。例如,如果您可以访问数字高程模型(DEM),您就可以创建坡度图和其他类型的地形分析;在处理工具箱中搜索“栅格地形分析”。
摘要
在本章中,我们已经在 QGIS 的 Processing 工具箱中试水。我们针对我们的数据提出了问题。我们使用 QGIS 中的简单 GIS 流程和工具来从数据中得出答案。GIS 的力量在于其数据。我们还探讨了基于向量和栅格的查询。
在下一章中,我们将通过使用模型构建器将常见的处理工具串联起来来扩展这一功能,然后再查看插件和 Python 控制台。
第七章:扩展 QGIS 3
在本章的最后一章中,我们将探讨扩展 QGIS。我们将通过模型构建器将工具组合成一个模型。这有效地使我们能够构建自己的可重用模型,使用参数我们要么硬编码在模型中,要么留给用户调整。在最后,我们将简要查看插件的范围,以及随着 QGIS 熟练程度的提高,我们可以创建脚本的 Python 命令行。
这些是本章涵盖的主题:
- 
模型构建器 
- 
插件 
- 
Python 命令行 
模型构建器
你可能还记得在第六章“空间处理”中,我们运行了几个工具来利用区域直方图的答案来分析缓冲管线走廊中地形(Landcover)的分布。打开一个新的 QGIS 项目并加载Pipeline图层和Landcover。
要创建一个模型,请转到处理 | 图形模型器以打开模型构建器,在那里我们可以从不同的输入和算法中选择我们的模型。图形模型器在以下屏幕截图中显示:

图形模型器
选择输入选项卡并选择矢量图层。添加一个名为Pipeline的新参数并将几何类型设置为线;这在上面的屏幕截图中显示:

创建一个作为几何类型的管线属性—线
点击“确定”。现在,添加栅格图层并命名为Landcover。在算法选项卡中,我们可以使用顶部的过滤器来缩小我们搜索正确算法的范围。搜索buffer并双击以打开算法。将距离填写为15000并勾选复选框以确保图层被溶解。
现在,搜索并打开区域直方图工具,将前缀更改为Terrain_。这是我们最终的输出,所以告诉模型它是最终结果。最终输出是模型成功运行后返回给用户的内容。输入应类似于以下对话框:

区域直方图工具
点击“确定”。为了完成模型,我们需要输入模型名称(Pipeline_impact_terrain)和组名称(QuickStart_QGIS)。处理将使用组名称来组织我们创建的所有模型到不同的工具箱组中。模型现在已完成。完成的模型将如下所示:

显示模型的图形模型器
点击保存图标并将其保存为terrain_stats.model3。点击绿色三角形或按 F5 运行模型。应该会出现如下对话框:

作为工具表示的模型
点击运行以执行模型。管道输出将出现在 QGIS 地图窗口中。关闭模型器后,我们可以像使用任何其他工具一样运行保存的模型。在处理工具箱下的模型中查找。这个新创建的模型将出现在那里,如下面的截图所示。甚至可以使用一个模型作为另一个模型的构建块:

模型出现在处理工具箱下的模型中
另一个有用的功能是,我们可以指定需要自动应用于处理结果的图层样式。此默认样式可以通过在创建的模型工具箱的上下文菜单中右键单击并选择编辑、渲染样式来设置输出。这意味着如果您愿意,您可以自动化地图的构建。
您可以通过将.model3文件提供给他人来共享您的模型。这是扩大 QGIS 使用范围的第一步。保存您的项目。
QGIS 插件
我们在第五章“创建地图”中简要介绍了插件。我们使用 qgis2web 将我们的阿拉斯加地图转换为网络地图。以下是按下载量排名的顶级插件列表:plugins.qgis.org/plugins/popular/。您可以使用此页面搜索插件或查看标签以查看不同的插件及其功能。
插件通过插件菜单访问。一些插件是实验性的。所谓实验性,意味着它们可能不稳定或在开发初期,但如果有插件可能有助于您的流程,打开这些插件是值得的;只是要小心使用。从插件对话框中,选择设置并勾选“显示实验性插件”旁边的框:

插件设置
半自动分类插件
Semi-Automatic Classification Plugin(SCP)为 QGIS 提供了对遥感图像的监督分类功能,提供了卫星图像下载、预处理和后处理的工具(plugins.qgis.org/plugins/SemiAutomaticClassificationPlugin/)。这是一个功能强大的工具,显著扩展了 QGIS 的遥感功能。
在本例中,我们将使用 SCP 下载覆盖我们数字化部分阿拉斯加的Sentinel-2图像:火岛。在此阶段,请确保您在Copernicus Open Data Hub上有账户。您可以在:scihub.copernicus.eu/dhus/#/self-registration进行注册。
打开一个新的 QGIS 项目,并在浏览器面板中添加来自 XYZ Tiles 的 OpenStreeMap 数据,然后添加我们从 第三章 “创建数据” 中创建的 Fire_Island GeoPackage 中的 Island_Outline 图层。确保状态栏中的地图项目设置为 EPSG 3857。
要安装 SCP,选择插件 | 管理和安装插件。点击“全部”标签页,搜索 SCP,然后点击“安装插件”。将出现两个新的工具栏和一个新的面板。在这个例子中,我们将只查看 SCP 工作工具栏,如下所示:

SCP 工作工具栏
点击工具栏最左边的按钮;这将打开一个对话框,如下面的截图所示:

半自动分类插件对话框
假设您已经在 Copernicus Open Data Hub 上设置了账户,然后点击“下载产品”菜单并选择“登录数据”标签页。在此,输入您的用户名和密码。接下来,选择“搜索”标签页,从产品列表中选择Sentinel-2,将日期范围设置为 2018 年 11 月 01 日至 2018 年 12 月 01 日,并将云量设置为 25%,如下面的截图所示:

设置搜索参数
要定义我们正在搜索的区域,点击带有橙色背景加号的按钮,最小化窗口,然后返回到主 QGIS 屏幕。左键单击以获取 左上角(UL),右键单击以获取 右下角(LR)。你应该会在地图上画出一个如下所示的框:

定义搜索区域的概述
前往插件(您之前可以点击插件按钮,或者只需最大化 SCP 插件窗口)。如果您对搜索参数满意,点击“查找”旁边的按钮。结果将在产品列表中返回。您可以点击每个选项以找到最佳图像。这如下面的截图所示:

选择图像
如果您取消选中“仅在图层预览中”选项,此时您可以点击“运行”(右下角)。这将下载大量数据并对其进行预处理(校正大气效应)。在这个例子中,为了节省下载大小,选择下载选项并仅选择波段 2、3 和 4 以及辅助数据。这将使我们能够创建真彩色卫星图像。我还已关闭“预处理图像”选项以简化此说明。这些选项如下面的截图所示:

指定下载选项
在“搜索”标签页中,我已启用“仅在图层预览中”选项并点击了“在地图中显示突出显示图像预览”按钮。这已将我选择的产品添加到我的地图中。这如下面的截图所示:

通过对话框显示层的预览
最后,点击 RUN 按钮,选择你希望保存数据的文件夹,并让数据下载。完成后,你应该会在 QGIS 中以层的形式加载你的 Sentinel-2 图像。这个插件的功能远不止这里所涵盖的。如果你有兴趣进一步探索可用的功能,包括使用 QGIS 对卫星数据进行分类,请访问 fromgistors.blogspot.com/p/semi-automatic-classification-plugin.html 以获取详细的文档、视频和指南。
应该将卫星数据加载到 QGIS 中。使用栅格工具栏,拉伸其中一个波段直到你可以看到它(有时图像加载得很暗,特别是如果其中包含大量的海洋)。你的屏幕应该看起来如下:

下载的卫星图像出现在 QGIS 中
有许多其他插件可用;使用插件管理器搜索并探索新的工具以进行工作。
使用 Python 命令行
从插件工具栏中选择 Python 控制台按钮,或按 Ctrl + Alt + P,或从插件菜单中选择 Python 控制台。
Python 已经成为 GIS 的首选编程语言。在这本书中,我们将只查看 QGIS API 的基础知识。随着你变得更加高级,你可以使用 Python 开发自己的插件和自定义脚本。最终,你可以使用 QGIS Python 库(PyQGIS),在 QGIS 之外构建应用程序。
打开一个新的空 QGIS 项目。
加载层
要加载一个矢量层,我们使用 iface 的 addVectorLayer() 函数。iface 类用于访问 QGIS 界面的图形部分。在以下示例中,我将 airport.shp 添加到地图中。这在一行代码中显示,如下所示:
Airport_layer = iface.addVectorLayer('D:/QGIS_quickstart/qgis_sample_data/shapefiles/airports.shp','airports','ogr')
按下 Enter 键,airports 层现在已加载(更改到你的 Shapefile 路径):

加载到 QGIS 地图中的机场 Shapefile
添加另一个层:
Alaska_layer = iface.addVectorLayer('D:/QGIS_quickstart/qgis_sample_data/shapefiles/alaska.shp','alaska','ogr')
现在我们已经将 alaska 边界和 airports 层添加到了地图中。
检查层
我们可以通过访问一些属性来查看每一层。要获取层的名称,请使用 .name() 函数:
Airport_layer.name()
输出如下:
'airports'
要计算层中的记录数,请使用 featureCount() 函数:
Airport_layer.featureCount()
输出如下:
76
要打印所有这些 76 层的属性,请使用 for 循环:
airportFeatures = Airport_layer.getFeatures()
for feature in airportFeatures:
    print (feature.attributes()
记得使用缩进。结果看起来会像这样:

QGIS Python 控制台打印出属性表
脚本
命令行可能会让人困惑。最好是构建脚本并在命令行上进行测试。让我们将这些命令行调用转换为 Python 脚本。关闭此项目并打开一个新的 QGIS 项目。打开 Python 控制台。
点击“显示编辑器”按钮以打开脚本窗口。如下截图所示:

Python 控制台
将以下代码复制到脚本编辑器中:
Airport_layer = iface.addVectorLayer('D:/QGIS_quickstart/qgis_sample_data/shapefiles/airports.shp','airports','ogr')
Alaska_layer = iface.addVectorLayer('D:/QGIS_quickstart/qgis_sample_data/shapefiles/alaska.shp','alaska','ogr')
print (Airport_layer.name())
print (Airport_layer.featureCount())
## print the attribute table
airportFeatures = Airport_layer.getFeatures()
for feature in airportFeatures:
    print (feature.attributes())
或者,你也可以从github.com/PacktPublishing/QGIS-Quick-Start-Guide/blob/master/Chapter07/01_Loading_Data.py下载数据。请确保重新指定你的数据位置。在编辑器中点击“另存为”按钮,将文件保存到你的项目中,文件名为01_Loading_data.py。然后,点击运行(绿色三角形)。结果应该看起来像下面的截图:

Python 控制台中的脚本
要了解更多关于矢量类的信息,请查看以下文档:qgis.org/api/classQgsVectorLayer.html。
加载栅格数据
让我们再编写一个脚本以加载栅格数据。复制以下代码:
Hillshade_layer = iface.addRasterLayer('D:/QGIS_quickstart/qgis_sample_data/raster/SR_50M_alaska_nad.tif','Hillshade')
Landcover_layer = iface.addRasterLayer('D:/QGIS_quickstart/qgis_sample_data/raster/landcover.img','Landcover')
## print the layer names
print (Hillshade_layer.name())
print (Landcover_layer.name())
## print the image dimensions
print (Hillshade_layer.width(), Hillshade_layer.height())
print (Landcover_layer.width(), Landcover_layer.height())
此脚本中的代码在两个图层Hillshade和Landcover中加载,将名称打印到控制台,并打印图像尺寸。
你可以从这里下载数据:github.com/PacktPublishing/QGIS-Quick-Start-Guide/blob/master/Chapter07/02_Loading_data_raster.py。如果数据位置与脚本不同,请确保重新指定。在编辑器中点击“另存为”按钮,将文件保存到你的项目中,文件名为02_Loading_data_raster.py。然后,点击运行(绿色三角形)。结果应该看起来像下面的截图:

Python 控制台中的脚本
要了解更多关于Raster类的信息,请查看以下文档:qgis.org/api/classQgsRasterLayer.html。
我们可以编写脚本来自动化 QGIS 中的许多过程,包括渲染、地图创建和处理。实际上,这本书的所有部分都可以自动化。让我们用最后一个空间处理脚本来结束 Python 和脚本编写这一节。这次,我们将对airports图层进行缓冲。
缓冲脚本
在 QGIS 中打开一个新的项目。将以下代码复制到编辑器中:
## Buffering
Airport_layer = iface.addVectorLayer('D:/QGIS_quickstart/qgis_sample_data/shapefiles/airports.shp','airports','ogr')
param = { 'INPUT' : Airport_layer, 'DISTANCE' : 15000, 'SEGMENTS' : 5, 'END_CAP_STYLE' : 0, 'JOIN_STYLE' : 0, 'MITER_LIMIT' : 2, 'DISSOLVE' : False, 'OUTPUT' : 'memory:' }
algoOutput = processing.run("qgis:buffer", param)
Airport_buffer = QgsProject.instance().addMapLayer(algoOutput['OUTPUT'])
此脚本中的代码加载了airports图层,设置了缓冲参数(param),使用processing.run命令调用qgis缓冲,然后将名为OUTPUT的图层添加到地图中。
您可以从这里下载数据:github.com/PacktPublishing/QGIS-Quick-Start-Guide/blob/master/Chapter07/03_Buffer_Airport.py。请确保将数据位置重定向。将文件保存到您的项目中为03_Buffer_airport.py。然后,点击运行(绿色三角形)。结果应该看起来像以下截图:

Python 控制台中的脚本
如果您想了解更多关于在 QGIS 中使用 Python 编程的信息,这是一个很好的资源,其中包含大量的脚本示例:docs.qgis.org/testing/pdf/en/QGIS-testing-PyQGISDeveloperCookbook-en.pdf。
摘要
在本章的最后,我们探讨了扩展 QGIS。我们探讨了三个选项:使用模型构建器构建模型、访问插件和 Python 控制台。扩展 QGIS 的能力可能是使用该软件的最有说服力的理由。您可以按需定制它,可以下载他人编写的插件,并且可以自动化无聊的重复性工作。模型、脚本和插件都是可共享的。

 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号