QGIS-2-0-学习指南-全-
QGIS 2.0 学习指南(全)
原文:
zh.annas-archive.org/md5/276b663aafa1fcf708e5451ebcd6f5a5译者:飞龙
前言
欢迎阅读 学习 QGIS 2.0。本书旨在向您介绍 QGIS 2 以及如何使用这款流行的开源 GIS 执行核心地理空间任务。它通过五章内容引导您,从第一章的 QGIS 安装和设置,到第二章中查看空间数据的基本知识。第三章涵盖了数据创建和编辑,随后是第四章,介绍了在 QGIS 中执行空间分析。在最后一章,您将学习如何创建优秀地图以及如何为打印做准备。
本书涵盖内容
第一章, QGIS 入门,涵盖了 QGIS 的安装和配置。我们还将了解用户界面以及如何自定义它。到本章结束时,你将在你的机器上运行 QGIS,并准备好开始教程。
第二章, 查看空间数据,介绍了如何从不同的数据源查看空间数据。QGIS 支持许多文件和数据库格式以及 OGC 网络服务。我们将首先了解如何从这些不同的数据源加载图层。然后,我们将探讨矢量图层和栅格图层的基本样式,并创建我们的第一个地图。我们将以从在线服务加载背景地图的示例结束本章。
第三章, 数据创建和编辑,涵盖了创建新的矢量图层。然后,我们将介绍在继续编辑特征几何和属性之前如何选择特征和进行测量。然后,我们将重新投影矢量和栅格数据,并学习如何在不同的文件格式之间转换,最后以将数据从文本文件和电子表格中合并到我们的空间数据中结束本章。
第四章, 空间分析,涵盖了栅格处理和分析任务,如裁剪和地形分析。然后,我们介绍在栅格和矢量格式之间转换,然后继续介绍常见的矢量地理处理任务,如生成热图和计算区域内的面积份额。最后,我们将通过使用 QGIS 处理模型器自动化地理处理工作流程的练习来结束本章。
第五章, 创建优秀地图,涵盖了使我们能够创建优秀地图的重要特性。我们将深入探讨高级矢量样式,基于我们在第二章,查看空间数据中学到的知识。然后,我们将通过标注点位置以及创建带有路标图形的更高级道路标签的示例来介绍标注。我们还将介绍如何手动调整标签。最后,我们将了解打印组合器以及如何使用它来创建可打印的地图和地图集。
本书面向对象
本书是为那些了解 GIS 的基本功能和流程的用户、开发人员和顾问而编写的,但想了解如何使用 QGIS 来实现他们从其他 GIS 中习惯的结果。本书不是一本 GIS 教科书。预期读者对 GIS 核心概念感到舒适。
惯例
在本书中,您将找到多种文本样式,用于区分不同类型的信息。以下是一些这些样式的示例及其含义的解释。
文本中的代码词如下所示:“使用[% $now %]插入当前时间戳。”
代码块设置如下:
( landcover@1 > 0 AND landcover@1 <= 6 ) * 100
+ ( landcover@1 >= 7 AND landcover@1 <= 10 ) * 101
+ ( landcover@1 >= 11 ) * 102
任何命令行输入或输出如下所示:
sudo apt-get install qgis python-qgis qgis-plugin-grass
新术语和重要词汇以粗体显示。您在屏幕上看到的单词,例如在菜单或对话框中,在文本中如下所示:“点击下一步按钮将您移动到下一屏幕”。
备注
警告或重要注意事项以如下框中的形式出现。
小贴士
小技巧和窍门如下所示。
读者反馈
我们始终欢迎读者的反馈。告诉我们您对这本书的看法——您喜欢什么或可能不喜欢什么。读者反馈对我们开发您真正从中获得最大收益的标题非常重要。
要向我们发送一般反馈,只需发送一封电子邮件到<feedback@packtpub.com>,并在邮件主题中提及书名。
如果您在某个主题上具有专业知识,并且您对撰写或为书籍做出贡献感兴趣,请参阅我们的作者指南www.packtpub.com/authors。
客户支持
现在您已经是 Packt 图书的骄傲拥有者,我们有一些事情可以帮助您从您的购买中获得最大收益。
勘误
尽管我们已经尽最大努力确保内容的准确性,错误仍然可能发生。如果您在我们的某本书中发现错误——可能是文本或代码中的错误——如果您能向我们报告这一点,我们将不胜感激。通过这样做,您可以避免其他读者感到沮丧,并帮助我们改进本书的后续版本。如果您发现任何勘误,请通过访问www.packtpub.com/submit-errata来报告它们,选择您的书籍,点击勘误提交表单链接,并输入您的勘误详情。一旦您的勘误得到验证,您的提交将被接受,勘误将被上传到我们的网站,或添加到该标题的勘误部分下的现有勘误列表中。您可以通过选择您的标题从www.packtpub.com/support查看任何现有勘误。
侵权
在互联网上,版权材料的盗版问题是一个持续存在于所有媒体中的问题。在 Packt,我们非常重视我们版权和许可证的保护。如果您在互联网上发现我们作品的任何非法副本,无论形式如何,请立即提供位置地址或网站名称,以便我们可以寻求补救措施。
请通过 <copyright@packtpub.com> 联系我们,并提供涉嫌盗版材料的链接。
我们感谢您在保护我们作者和我们为您提供有价值内容的能力方面提供的帮助。
问题
如果您在本书的任何方面遇到问题,可以通过 <questions@packtpub.com> 联系我们,我们将尽力解决。
第一章. QGIS 入门
在本章中,我们将安装和配置 QGIS 地理信息系统。我们还将了解用户界面以及如何自定义它。到本章结束时,您将在您的机器上运行 QGIS,并准备好开始教程。
安装 QGIS
QGIS 可以在 Windows、各种 Linux 发行版、Unix、Mac OS X 和 Android 上运行。此外,QGIS 项目还提供了现成的软件包以及从源代码构建的说明,可在download.qgis.org下载。我们将介绍如何在 Windows 和 Ubuntu 这两个最常用的系统上安装 QGIS,以及如何避免最常见的陷阱。
与许多其他开源项目一样,QGIS 提供了稳定发布版本和前沿的开发者版本,也称为master。QGIS master 将包含最新的最伟大的发展,但请注意,在某些日子里,它可能不如您习惯的那样可靠。对于本书中的教程,我们将使用 QGIS 2.0 发布版本。
Windows 上的安装
在 Windows 上,我们有两种不同的安装 QGIS 的选项:独立安装程序和 OSGeo4W 安装程序。独立安装程序是一个大型的下载(大约 130MB),它包含一个 QGIS 发布版本和地理资源分析支持系统(GRASS)GIS,打包在一个软件包中。OSGeo4W 安装程序是一个小巧灵活的安装工具,使得可以下载和安装 QGIS 以及许多其他 OSGeo 工具及其依赖项。与独立安装程序相比,其主要优势是它使得更新 QGIS 及其依赖项变得非常容易。如果您选择这样做,您始终可以访问当前发布版本和开发者版本,但当然,您永远不会被迫更新。这就是为什么我推荐使用 OSGeo4W。OSGeo4W 安装程序可以从osgeo4w.osgeo.org(或直接从download.osgeo.org/osgeo4w/osgeo4w-setup.exe)下载。下载它并保存!将来,无论何时您想要更改或更新您的系统,只需再次运行它即可。
小贴士
无论您选择哪个安装程序,请确保在安装路径中避免特殊字符,因为它们可能会在以后造成问题,例如在插件安装期间。
当 OSGeo4W 安装程序启动时,我们可以选择Express Desktop、Express Web-GIS和Advanced安装方式。要安装 QGIS 的发布版本,我们可以简单地选择Express Desktop选项,下一个对话框将列出可用的桌面应用程序,如 QGIS、uDig 和 GRASS GIS。我们只需选择 QGIS,点击Next,下载和安装将自动开始。安装完成后,将在桌面上为 OSGeo4W 和 QGIS 创建快捷方式和开始菜单条目。
如果我们想安装 QGIS master 版本,我们需要进行 高级 安装。此安装路径提供了许多选项,例如 下载但不安装 和 从本地目录安装,这些选项可以用来在一个机器上下载所有必要的包,以便稍后在没有互联网访问的机器上安装。通常不需要更改默认设置,但如果您的机器,例如,位于代理后面,您将能够在此处指定它。在安装程序从 OSGeo 的服务器获取最新的包信息后,我们可以选择要安装的包。QGIS master 在桌面类别中列名为 qgis-dev。要选择它进行安装,点击显示为 跳过 的文本,它将改变并显示版本号。安装程序将自动选择所有必要的依赖项(如 GDAL、SAGA、OTB 和 GRASS),所以我们不必担心这一点。点击 下一步 后,下载和安装将自动开始,就像 Express 版本一样。对话框将看起来像以下截图:

如果您尝试运行 QGIS 并弹出一个提示说 “程序入口点 C:\OSGeo4W\bin\ 复制到 C:\OSGeo4W\apps\qgis\bin\(如有必要,调整路径)。
在 Ubuntu 上安装
在 Ubuntu 上,QGIS 项目为发布版本和开发者版本都提供了软件包。但请注意,您一次只能安装一个版本。软件包没有列在默认的 Ubuntu 仓库中。因此,我们必须将适当的仓库添加到 Ubuntu 的源列表中,您可以在 /etc/apt/sources.list 中找到它。您可以使用任何文本编辑器打开该文件。
确保您有超级用户权限,因为您需要它们来保存您的编辑。一个选项是使用默认安装在 Ubuntu 上的 gedit。要编辑 sources.list 文件,请使用以下命令:
sudo gedit /etc/apt/sources.list
确保只添加以下四个软件包源选项之一,以避免由于不兼容的软件包而导致的冲突。您必须添加到源列表中的具体行取决于您的 Ubuntu 版本。
首选和默认选项是安装当前发布版本。要在 Precise Penguin 上安装 QGIS 发布版本,请将以下行添加到您的文件中:
deb http://qgis.org/debian precise main
deb-src http://qgis.org/debian precise main
如有必要,将 precise 替换为 raring、oneiric、natty 或 lucid 以适应您的系统。要获取支持的 Ubuntu 版本的更新列表,请检查 download.qgis.org。
第二个选项是安装 QGIS master 版本,目前它适用于 precise、quantal 和 raring。将以下行添加到您的文件中:
deb http://qgis.org/debian-nightly precise main
deb-src http://qgis.org/debian-nightly precise main
小贴士
之前的版本依赖于其他包,如 GDAL 和 proj4,这些包在 Ubuntu 存储库中可用。值得一提的是,这些包通常相当旧。
因此,第三个选项是使用由ubuntugis存储库提供的更新依赖项安装 QGIS 发布版本。将以下行添加到您的文件中:
deb http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu precise main
deb-src http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu precise main
第四个选项是带有更新依赖项的 QGIS master。将以下行添加到您的文件中:
deb http://qgis.org/ubuntugis-nightly precise main
deb-src http://qgis.org/ubuntugis-nightly precise main
deb http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu precise main
在选择存储库后,我们将qgis.org存储库的公钥添加到我们的apt密钥环中。这将避免在从非默认存储库安装时可能收到的警告。请在终端中运行以下命令:
gpg --keyserver keyserver.ubuntu.com --recv 997D3880
gpg --export --armor 997D3880 | sudo apt-key add –
注意
自本书印刷以来,关键信息可能已更改。请参阅hub.qgis.org/projects/quantum-gis/wiki/Download#26-Ubuntu获取最新更新。
最后,要安装 QGIS,请运行以下命令:
sudo apt-get update
sudo apt-get install qgis python-qgis qgis-plugin-grass
首次运行 QGIS
默认情况下,QGIS 将使用操作系统的默认语言。为了跟随本书中的教程,建议通过导航到设置 | 选项 | 区域设置将语言更改为英语。在首次运行时,工具栏排列成两行,根据您的屏幕分辨率,这可能会隐藏许多按钮。为了能够高效工作,因此建议排列工具栏。我喜欢将一些工具栏放在屏幕的左右边缘,以节省垂直屏幕空间——尤其是在宽屏显示器上。
此外,我们通过导航到查看 | 面板 | 浏览器来激活文件浏览器。它将为我们提供快速访问空间数据。最后,您的屏幕应该类似于以下屏幕截图:

接下来,我们通过导航到插件 | 管理并安装插件来激活一些必备插件。通过勾选其名称旁边的复选框来激活插件。一开始,我推荐以下插件:
-
坐标捕获:此插件在地图中拾取坐标很有用。
-
fTools:此插件提供矢量分析和管理工具。
-
GdalTools:此插件提供栅格分析和管理工具。
-
处理:此插件提供了访问许多有用的栅格和矢量分析工具以及用于任务自动化的模型构建器。
为了更容易找到特定的插件,我们可以使用窗口顶部的搜索输入字段来过滤插件列表,您可以在以下屏幕截图中看到:

介绍 QGIS 用户界面
现在我们已经设置了 QGIS,让我们熟悉一下界面!最大的区域是为地图预留的。地图的左侧是图层和浏览器面板。在地图下方,我们可以找到重要信息,如(从左到右),当前地图坐标、地图比例和(目前不活跃)项目坐标参考系统(CRS)。
接下来,有多个工具栏可供探索。如果你按照上一节所示排列,你将在顶部行找到以下工具栏:
-
文件:此工具栏包含创建、打开、保存和打印项目所需的工具
-
管理图层:此工具栏包含从矢量或栅格文件、数据库、网络服务、文本文件添加图层或创建新图层的工具
-
数据库:目前,此工具栏仅包含数据库管理器,但安装其他数据库相关工具时,它们将出现在这里
-
帮助:指向用户手册下载
以下截图显示了前面工具栏的外观:

工具栏的第二行包含以下内容:
-
地图导航:此工具栏包含平移和缩放工具
-
属性:这些工具用于识别、选择、打开属性表、测量等
-
标签:这些工具用于添加、配置和修改标签
-
矢量:目前为空,但将被额外的 Python 插件填充
-
网络:目前为空,但将被额外的 Python 插件填充
以下截图显示了前面工具栏的外观:

在屏幕的左侧边缘,我们放置以下内容:
-
插件:目前为空,但将被额外的 Python 插件填充
-
栅格:此工具栏包括直方图拉伸、亮度、对比度控制
以下截图显示了前面工具栏的外观:

最后,在屏幕的右侧边缘,我们可以找到以下内容:
-
数字化:这些工具使编辑、基本要素创建和编辑成为可能
-
高级数字化:此工具栏包含撤销/重做、高级编辑工具、几何简化等
以下截图显示了前面工具栏的外观:

小贴士
所有数字化工具目前都是非激活状态。只有在开始编辑矢量图层时,它们才会变为激活状态。
工具栏和面板可以通过视图菜单中的面板和工具栏选项以及通过右键点击菜单或工具栏来激活和关闭,这会打开一个包含所有可用工具栏和面板的上下文菜单。所有工具栏工具也可以通过菜单访问。例如,如果你关闭了管理图层工具栏,你仍然可以通过图层菜单添加图层。
QGIS 具有高度的可定制性。您可以通过导航到 设置 | 配置快捷键 来为经常使用的工具分配快捷键,从而提高您的生产力。同样,如果您发现您从未使用过某个工具栏按钮或菜单项,您可以通过导航到 设置 | 自定义 来隐藏它。例如,如果您无法访问 Oracle Spatial 数据库,您可能希望隐藏相关的按钮以减少杂乱并节省屏幕空间,如下面的截图所示:

摘要
在本章中,我们安装了 QGIS 并通过选择有用的默认设置和排列用户界面元素来配置它。最后,我们探索了构成 QGIS 用户界面的面板、工具栏和菜单,并学习了如何自定义它们以提高生产力。
第二章 查看空间数据
在本章中,我们将介绍如何从不同的数据源查看空间数据。QGIS 支持许多文件和数据库格式以及 OGC 网络服务。我们将首先了解如何从这些不同的数据源加载图层。然后我们将探讨矢量图层和栅格图层的基本样式,并创建我们的第一个地图,你可以在下面的屏幕截图中看到。我们将以从在线服务加载背景地图的示例结束本章。

注意
对于本章的示例,我们将使用由 QGIS 项目提供的样本数据,并可以从download.osgeo.org/qgis/data/qgis_sample_data.zip(20 MB)下载。下载并解压它。
从文件加载矢量数据
在本节中,我们将讨论从 GIS 格式,如 Shapefiles 以及文本文件中加载矢量数据。
我们可以通过转到图层 | 添加矢量图层以及使用添加矢量图层工具栏按钮来加载矢量文件。如果你喜欢快捷方式,可以使用Ctrl + Shift + V。在添加矢量图层对话框中,我们找到一个下拉列表,允许我们指定输入文件的编码。如果我们处理包含特殊字符的文件,例如德语的重音符号或其他非默认拉丁字母表中的字母,此选项很重要。以下屏幕截图显示了添加矢量图层对话框:

我们现在最感兴趣的是浏览按钮,它打开文件打开对话框。注意对话框右下角的文件类型过滤器下拉列表。我们可以打开它,查看支持的矢量文件类型列表。此过滤器通过隐藏不同类型的所有文件,有助于更快地找到特定文件,但请注意,过滤器设置将被存储,并在我们下次打开对话框时再次应用。
如果我们后来试图找到不同的文件,而它恰好被过滤器隐藏,这可能会引起混淆,所以请记住,如果你在查找文件时遇到困难,要检查过滤器设置。
我们可以通过一次选择多个文件来一次性加载多个文件(在 Windows/Ubuntu 上按住Ctrl或在 Mac 上按住Cmd)。让我们试一试。
-
我们从样本数据文件夹
vmap0_shapefiles中选择alaska.shp和airports.shp。 -
接下来,我们通过点击打开来确认我们的选择,然后我们返回到添加矢量图层对话框。
-
再次点击打开后,选定的文件将被加载。你会注意到每个矢量层都显示为随机颜色。现在不用担心这个。我们将在本章后面处理图层样式。
小贴士
有多种技巧可以使加载数据更快;例如,您可以直接从操作系统文件浏览器中将文件拖放到 QGIS 中。另一种快速访问您的空间数据的方法是使用 QGIS 内置的文件浏览器。如果您按照第一章中所示设置 QGIS,即“QGIS 入门”,您会发现浏览器位于左侧,位于图层列表下方。导航到您的数据文件夹,您可以从浏览器中将文件再次拖放到地图上。此外,您可以通过右键单击文件夹并选择添加到收藏夹来标记文件夹为收藏夹。这样,您的数据文件夹将更快地访问,因为它们被添加到浏览器列表顶部的收藏夹部分。
另一个流行的空间数据来源是分隔文本(CSV)文件。QGIS 可以通过添加分隔文本图层选项加载 CSV 文件,该选项可通过图层|添加分隔文本图层或相应的工具栏按钮访问。点击浏览并从示例数据中选择 elevp.csv。CSV 包含各种分隔符。如图所示,插件允许您从最常见的选择中选取(逗号、制表符等),但您也可以指定任何其他纯文本或正则表达式分隔符。如果您的 CSV 包含引号,如 " 或 ',您可以使用引号选项来移除它们。要丢弃的标题行数选项允许我们跳过文本文件开头的额外行。以下字段选项包括从字段值中删除额外空格或重新定义小数分隔符为逗号的功能。空间信息本身可以由包含点 X 和 Y 坐标的两列提供,或者使用已知文本 (WKT)格式。WKT 字段可以包含点、线或多边形。
小贴士
WKT 是一个非常有用且灵活的格式。例如,一条线可以通过编写 LINESTRING (30 10, 10 30, 40 40) 来指定。如果您不熟悉这个概念,您可以在 en.wikipedia.org/wiki/Well-known_text 找到带有示例的介绍。

点击确定后,QGIS 将提示我们指定图层的坐标参考系统(CRS)。我们将在下一节讨论处理坐标参考系统。
处理坐标参考系统
每次我们加载数据源时,QGIS 都会寻找可用的 CRS 信息;例如,在 Shapefile 的 .prj 文件中。如果 QGIS 找不到任何可用的信息,它将默认提示您手动指定 CRS。此行为可以通过转到设置|选项|CRS来更改,始终使用项目 CRS 或默认 CRS。
QGIS 坐标参考系统选择器提供了一个过滤器,使查找 CRS 变得更容易。它可以按名称或按 ID(例如,EPSG 代码)过滤。只需开始输入,看看潜在 CRS 列表是如何变短的。实际上有两个独立的列表:上面的列表包含我们最近使用的 CRS,而下面的列表更长,包含所有可用的 CRS。对于elevp.csv文件,我们选择NAD27 / 阿拉斯加阿尔伯斯。
如果我们想检查一个层的 CRS,我们可以在层属性常规部分找到这个信息,可以通过转到图层 | 属性或通过在图层列表中双击图层名称来访问。如果您认为 QGIS 选择了错误的 CRS 或您在指定 CRS 时犯了错误,您可以使用指定 CRS来纠正 CRS 设置。请注意,这不会更改底层数据或重新投影它。我们将在第三章中讨论重新投影矢量和栅格文件,数据创建和编辑。
在 QGIS 中,即使每个数据集存储的 CRS 不同,我们也可以从多个图层创建地图。QGIS 通过启用一个称为即时重投影的机制来自动处理必要的重投影,您可以通过转到设置 | 项目属性来访问它,如下面的截图所示:
所有图层都会即时重投影到项目 CRS,这意味着 QGIS 会动态地计算这些重投影,并且只为渲染地图的目的。底层数据不会改变,空间分析也不会受到影响。

在某些情况下,您可能需要指定 QGIS 坐标系数据库中不可用的 CRS。您可以通过转到设置 | 自定义坐标系来添加 CRS 定义。点击添加新 CRS按钮创建新条目,为新的 CRS 输入一个名称,并粘贴proj4定义字符串。完成操作后,只需点击确定关闭对话框。
加载栅格文件
加载栅格文件与加载矢量文件没有太大区别。选择图层菜单项,然后点击添加栅格图层,点击添加栅格图层按钮,或按Ctrl + Shift + R快捷键将直接带您到文件打开对话框。再次提醒,您可以通过检查文件类型过滤器来查看支持的文件类型列表。
让我们试一试,从样本数据raster文件夹中加载landcover.img。同样,就像矢量文件一样,您可以通过从操作系统或内置文件浏览器拖动它们到 QGIS 中来加载栅格文件。
注意
QGIS 中所有这些不同类型的向量和栅格文件类型都由强大的 GDAL/OGR 包处理。您可以在www.gdal.org/formats_list.html(栅格)和www.gdal.org/ogr/ogr_formats.html(向量)查看支持的完整格式列表。
地理配准栅格地图
一些栅格数据源,如简单的扫描地图,缺乏适当的空间参考,我们必须在将它们用于 GIS 之前对其进行地理配准。在 QGIS 中,我们可以使用地理配准器 GDAL 插件来地理配准栅格,该插件可以通过转到栅格 | 地理配准访问(如果无法在栅格菜单中找到,请通过转到插件 | 管理并安装插件来启用它)。
地理配准器涵盖了以下用例:
-
我们可以为栅格文件创建一个世界文件,而不会改变原始栅格。
-
如果我们有一个包含已知坐标点的地图图像,我们可以设置地面控制点(GCPs)并输入已知坐标。
-
最后,如果我们不知道地图上任何点的坐标,我们仍然有机会使用同一区域的第二个已地理配准的地图手动放置 GCPs。我们可以使用在两个地图中都可见的对象来选择我们想要地理配准的点,并从参考地图中确定它们的坐标。
通过转到文件 | 打开栅格或使用打开栅格工具栏按钮,将栅格加载到地理配准器中后,我们会要求指定我们计划添加的地面控制点的 CRS。接下来,我们可以通过转到编辑 | 添加点来开始添加地面控制点。我们可以使用平移和缩放工具进行导航,并通过在地图上点击来放置 GCPs。然后,我们会提示输入新点的坐标或从主 QGIS 窗口中的参考地图中选择它们。
放置 GCPs 后,我们可以通过转到设置 | 变换设置来定义变换算法。您选择哪种算法取决于您的输入数据和您想要允许的几何畸变程度。最常用的算法是多项式 1 到 3。一阶多项式变换仅允许缩放、平移和旋转。
二阶多项式变换可以处理一些曲率,而三阶多项式变换则允许更高的畸变程度。薄板样条算法可以处理地图中的局部变形,因此在处理非常低质量的地图扫描时非常有用。另一方面,线性选项仅用于创建世界文件,如前所述,这实际上并不变换栅格。
重采样方法取决于您的输入数据和您想要实现的结果。立方重采样创建平滑的结果,但如果您不想更改栅格值,请选择最近邻方法。
在我们开始地理配准过程之前,我们仍然需要指定输出文件名和目标坐标参考系统。确保 完成时加载到 QGIS 中 选项处于激活状态。然后,我们可以关闭 变换设置 对话框,转到 文件 | 开始地理配准。地理配准的栅格将自动加载到 QGIS 主地图窗口中。
从数据库加载数据
QGIS 支持 PostGIS、SpatiaLite、MSSQL、SQL Anywhere 和 Oracle Spatial 数据库。我们将介绍两种开源选项:PostGIS 和 SpatiaLite。这两个选项都支持跨平台,就像 QGIS 一样。
SpatiaLite 是 Sqlite 数据库的空间扩展。Sqlite 是一个自包含的、无服务器的、零配置的事务性 SQL 数据库引擎 (www.sqlite.org)。这基本上意味着 Sqlite 数据库,因此也是 SpatiaLite 数据库,不需要服务器安装,可以像任何普通文件一样复制和交换。
您可以从 www.gaia-gis.it/spatialite-2.3.1/test-2.3.zip 下载示例数据库。解压文件;您可以通过转到 图层 | 添加 SpatiaLite 图层,使用 添加 SpatiaLite 图层 工具栏按钮,或按 Ctrl + Shift + L 来连接到它。单击 新建 选择数据库文件 test-2.3.sqlite。QGIS 将保存所有连接并将它们添加到顶部的下拉列表中。在单击 连接 后,您将看到数据库中存储的图层列表,如下面的截图所示:

与文件一样,您可以从列表中选择一个或多个表,然后单击 添加 将它们加载到地图中。此外,您还可以使用 设置过滤器 仅加载特定要素。
小贴士
QGIS 中的过滤器使用类似 SQL 的语法;例如,"Name" = 'EMILIA-ROMAGNA' 用于仅选择名为 EMILIA-ROMAGNA 的区域,或者 "Name" LIKE 'ISOLA%' 用于选择以 ISOLA 开头的所有区域。过滤器查询将传递给底层数据提供者(例如,Spatialite 或 OGR)。基本过滤器查询的提供者语法在不同提供者之间是一致的,但在使用更复杂的函数时可能会变化。您可以在 www.gdal.org/ogr/ogr_sql.html 上查阅 OGR SQL 的详细信息。
PostGIS 是 PostgreSQL 数据库系统的空间扩展。安装和配置数据库超出了本书的范围,但提供了 Windows 的安装程序以及许多 Linux 发行版和 Mac 的软件包。要从 PostGIS 数据库加载数据,请转到 图层 | 添加 PostGIS 图层,使用 添加 PostGIS 图层 工具栏按钮,或按 Ctrl + Shift + D。
当首次使用数据库时,点击新建以建立新的数据库连接。在以下对话框中,您可以指定新连接的名称。其他需要填写的字段如下:
-
主机:服务器的 IP 地址将插入到此字段。如果 PostGIS 在本地运行,您可以使用 localhost。
-
端口:PostGIS 默认端口是 5432。
-
数据库:这是您想要连接的 PostGIS 数据库名称。
-
用户名和密码:为了方便,您可以告诉 QGIS 保存它们。
![从数据库加载数据]()
以下截图显示了创建到名为postgis的数据库的新连接的对话框:
建立连接后,您可以像我们之前讨论的 SpatiaLite 那样加载数据和过滤表格。
从网络服务加载数据
越来越多的数据提供者通过 OGC 兼容的 Web 服务(如 WMS、WCS 或 WFS)提供对他们的数据集的访问。QGIS 支持这些服务。
您可以通过转到图层 | 添加 WMS 图层,点击添加 WMS 图层按钮,或按Ctrl + Shift + W来加载 WMS 图层。如果您知道一个 WMS 服务器,您可以通过点击新建并填写名称和 URL 来连接到它。所有其他字段都是可选的。如果您不知道任何 WMS 服务器,请不要担心,因为我们只需点击添加默认服务器即可获取与 QGIS 项目合作的管理员的服务器访问信息。其中有一个服务器称为Lizardtech 服务器。从下拉框中选择它或任何其他服务器,然后点击连接以查看通过服务器可用的图层列表。
从图层列表中,您现在可以选择一个或多个图层进行下载。值得注意的是,您选择图层的顺序很重要,因为图层将在服务器端合并,QGIS 只会接收到合并后的图像作为结果图层。如果您想能够单独使用图层,您必须逐个下载它们。点击添加后,数据下载开始。对话框将保持打开状态,以便您可以添加来自服务器的其他图层。
许多 WMS 服务器提供他们的图层以多种不同的 CRS。您可以通过点击对话框底部的更改按钮来检查可用的 CRS 列表。这将打开一个 CRS 选择对话框,该对话框限于 WMS 服务器的 CRS 功能。
从 WCS 或 WFS 服务器加载数据的方式相同,但公共服务器很少且不可靠,因此在此无法提供推荐。
样式栅格图层
在介绍完数据源之后,我们现在可以创建我们的第一个地图。我们将从下往上构建地图,首先加载一些背景栅格(阴影和土地覆盖),然后我们将用点、线和多边形图层叠加它们。
让我们从加载来自landcover.img和SR_50M_alaska_nad.tif的土地覆盖和阴影层开始,然后打开图层属性的样式部分(图层 | 属性或通过双击图层名称)。QGIS 会尝试选择一个合理的默认渲染类型。如您在以下截图中所见,阴影栅格SR_50M_alaska_nad.tif以单波段灰度渲染类型加载。如果我们想以彩色而不是灰度渲染阴影栅格,我们可以将渲染类型更改为单波段伪彩色。在伪彩色模式下,我们可以手动创建颜色图或选择预制的颜色渐变之一。但为了现在,我们还是坚持使用单波段灰度来样式阴影。
在颜色设置下方,我们找到一个包含更多高级选项的部分,这些选项控制栅格重采样、亮度、对比度、饱和度和色调——这些选项您可能从图像处理软件中很熟悉。默认情况下,重采样设置为快速的最近邻选项。为了获得更平滑的结果,我们可以将其更改为双线性或立方方法。
点击确定或应用以确认。在这两种情况下,地图将使用新的图层样式重新绘制。如果您点击应用,则图层属性对话框保持打开状态,您可以继续微调图层样式。如果您点击确定,则图层属性对话框将关闭。

landcover.img栅格是一个调色板栅格的好例子。每个单元格值都映射到特定的颜色。要更改颜色,我们只需双击颜色预览,就会打开颜色选择器。
一个调色板栅格的样式部分看起来如下截图所示:

如果我们想将阴影和土地覆盖组合成一个美观的背景,我们可以使用混合模式和图层透明度的组合。混合模式是图像处理软件中常见的另一个功能。与透明度相比,混合模式的主要优势是我们可以避免仅使用透明度结合栅格时通常出现的单调、低对比度的外观。如果您没有混合经验,请花些时间尝试不同的效果。在这个例子中,我使用了变暗混合模式,如前一个截图所示,以及全局图层透明度50%,如下一个截图所示:

样式矢量图层
当我们加载矢量图层时,QGIS 使用默认样式和随机颜色进行渲染。当然,我们希望自定义这些样式以更好地反映我们的数据。在以下练习中,我们将样式点、线和多边形图层,并且我们将熟悉最常见的矢量样式选项。
创建点样式 – 机场样式的例子
让我们从点图层开始!从我们的样本数据中加载airport.shp。无论图层的几何类型如何,我们总是在样式对话框的右上角找到一个包含可用样式选项的下拉列表。
向量图层有以下样式选项可用:
-
单个符号:这是最简单的选项。当我们使用单个符号样式时,所有点都使用相同的符号显示。
-
分类:如果图层包含不同类别的点,则这是首选的样式;例如,包含不同动物观测地点的图层。
-
渐变样式:如果我们想可视化数值,这些样式非常好;例如,温度测量。
-
基于规则的样式:这是最先进的选项。这些样式非常灵活,因为它们允许我们为单个图层编写多个规则。
-
点位移样式:这些样式仅适用于点图层。如果您需要可视化具有相同坐标的多个点图层,这些样式很有用;例如,住在同一地址的学校学生。
在下拉列表下方,我们找到符号预览,再下方是符号层列表,它显示了符号由哪些不同的层组成。在右侧,我们找到用于符号大小和大小单位、颜色和透明度以及旋转的选项。使用数据定义属性按钮,我们还可以告诉 QGIS 使用要素的属性值来定义符号形状、大小、颜色等。最后,右下角包含一个保存符号的预览区域。
点图层默认使用简单的圆形符号显示。我们想使用飞机符号。要更改符号,请选择符号层中的简单标记条目。注意对话框的右侧如何变化。我们现在可以看到简单标记的选项:颜色、大小、旋转、形状等。然而,我们不是在寻找圆形、星星或方形符号——我们想要一个飞机。这就是为什么我们需要将符号层类型选项从简单标记更改为SVG 标记。许多选项都是相似的,但在底部我们现在可以找到一组 SVG 图像供我们选择。滚动列表并选择如图所示的飞机符号:

点图层符号层类型包括以下几种:
-
简单标记:这些包括几何形状,如圆形、星星和方形
-
字体标记:这些提供对您的符号字体的访问
-
SVG 标记:每个 QGIS 安装都附带一组默认的 SVG 符号;通过访问设置 | 选项 | 系统 | SVG 路径来添加包含 SVG 图像的自己的文件夹。
-
椭圆标记器:这些包括可定制的椭圆、矩形、十字和三角形;特别适用于与我们在数据定义设置选项中设置的内容结合使用
-
矢量场标记器:这是一个可定制的矢量场可视化工具
创建线样式 – 河流或道路样式的示例
在这个练习中,我们将为我们样本数据中的majriver.shp文件创建河流样式。目标是创建一个具有两种颜色的线条样式:线条中心的填充颜色和轮廓颜色。这种技术非常有用,因为它还可以用来创建道路样式。
要创建这样的样式,我们结合了两条简单的线。默认符号是一条简单的线。点击位于符号层列表下方的绿色+符号以添加另一条简单线。下面的一条将是我们轮廓,上面的一条将是填充。选择上面的简单线,将其颜色更改为蓝色并将宽度更改为 0.3 毫米。接下来,选择下面的简单线,将其颜色更改为灰色并将宽度更改为 0.6 毫米,比其他线条略宽。检查预览,并点击应用以测试将样式应用于河流层时的外观。
你会注意到样式还不是完美的。这是因为每个线要素都是单独绘制的,一个接一个,这导致了一种相当不连贯的外观。幸运的是,这很容易修复;我们只需要启用所谓的符号级别。为此,在符号层列表中选择线条目,并在高级部分的符号级别对话框中勾选复选框(位于样式对话框的右下角按钮),如图下截图所示。点击应用以测试结果:
小贴士
每当我们创建可能想要在其他地图中重复使用的符号时,我们可以通过转到符号 | 保存到符号库(位于底右角的高级按钮旁边的按钮)来保存它。我们可以为新符号分配一个名称;保存后,它将被添加到已保存样式预览区域。

线层符号层类型包括以下几种:
-
简单线:这些是实线或虚线
-
标记线:这些线由位于线顶点或等间隔的点标记组成
创建多边形样式 – 一个陆地样式的示例
在这个练习中,我们将为alaska.shp文件创建一个样式。目标是创建一个带有蓝色光环的简单填充。就像之前的河流样式示例一样,我们将结合两个符号层来创建这个样式:一个定义主要填充颜色并带有细边框的简单填充层,以及一个额外的简单线条轮廓层用于光环。光环应该有漂亮的圆角。为了实现这一点,将连接样式选项更改为圆形。类似于之前的示例,我们再次启用符号级别;为了防止这种陆地样式遮挡背景地图,我们选择乘法混合模式,如以下截图所示:

多边形层的符号层类型包括以下几种:
-
简单填充: 这些定义填充和轮廓颜色以及基本的填充样式
-
质心填充: 这些允许我们在多边形的中心放置点标记
-
线/点图案填充: 这些支持用户定义的线型和点图案,具有灵活的间距
-
SVG 填充: 这些使用 SVG 图案填充多边形
-
轮廓: 这些使使用线条样式绘制轮廓区域成为可能
加载背景地图
背景地图对于快速检查和提供方向非常有用,尤其是在你无法访问任何其他基础图层的情况下。使用 OpenLayers 插件添加背景地图非常简单。它提供了通过 Google、Yahoo!和 Bing 访问卫星、街道和混合地图的权限,以及通过 OpenStreetMap、Stamen 和 Apple 提供的不同地图类型。
要安装 OpenLayers 插件,请转到插件 | 管理和安装插件 | 获取更多。等待直到可用的插件列表加载完成。使用过滤器查找OpenLayers 插件选项,如以下截图所示。从列表中选择它,然后点击安装。这可能需要一点时间。完成后,您将看到一个简短的确认消息。然后您可以关闭安装程序,OpenLayers 插件选项应该可以通过插件菜单使用。

注意,您必须在线才能使用这些服务。另一个值得注意的事实是,所有这些服务都只提供伪墨卡托(EPSG:3857)地图。当您使用OpenLayers 插件选项加载背景地图时,您的项目 CRS 将自动更改为伪墨卡托。
如果您加载 OSM 景观层,您的地图将看起来像以下截图:

摘要
在本章中,我们介绍了如何从文件、数据库和 Web 服务中加载空间数据。我们看到了 QGIS 如何处理坐标参考系统,并对矢量图层和栅格图层的样式化进行了初步介绍,这个主题我们将在第五章“创建优秀的地图”中更详细地探讨。我们还安装了我们的第一个 Python 插件,即 OpenLayers 插件,并使用它将背景地图加载到我们的项目中。
第三章:数据创建和编辑
在本章中,我们将首先创建一些新的矢量图层,并介绍如何选择要素和进行测量。然后,我们将继续编辑要素几何和属性。接着,我们将重新投影矢量和栅格数据,在结束本章之前,我们将学习如何通过将数据从文本文件和电子表格合并到我们的空间数据中来在不同文件格式之间进行转换。
创建新的矢量图层
在这个练习中,我们将从头开始创建一个新的图层。QGIS 提供了一系列功能来创建不同的图层。图层 | 新建菜单列出了创建新 Shapefile 和 SpatiaLite 图层的功能,但我们可以使用 DB Manager 插件创建新的数据库表。界面略有不同,以适应每种格式支持的功能。
让我们创建一个新的 Shapefile 来查看它是如何工作的。通过访问图层 | 新建或Ctrl + Shift + N,可以打开一个新矢量图层对话框,其中包含不同几何类型、CRS 和属性选项。整个过程非常快,因为所有必填字段已经设置了默认值。默认情况下,它将创建一个新的点图层,使用 WGS84 CRS(除非在设置 | 选项 | CRS中指定了其他设置)和一个名为id的整数字段。我们只需点击确定,指定一个文件名,新的图层就会出现在图层列表中。
接下来,我们还会创建一个线和多边形图层。我们将向这些图层添加一些额外的字段。除了整数字段外,Shapefiles 还支持文本和小数值。要添加字段,我们只需插入一个名称,选择类型和宽度,然后点击添加到属性列表。对于小数数字,我们还需要定义精度值,它决定了小数点后的位数。宽度为3,精度为1的值将允许从-99.9 到+99.9 的值范围。以下截图显示了新矢量图层对话框和我的示例多边形图层的属性...窗口:

所有的新图层目前都是空的,但我们将现在创建一些要素。如果我们想向图层添加要素,我们首先必须启用该图层的编辑功能。可以通过选择图层 | 切换编辑、图层名称上下文菜单中的切换编辑或数字化工具栏中的切换编辑按钮来打开或关闭编辑。注意图层列表中的图层图标如何改变以反映编辑是否开启。当我们为图层开启编辑时,QGIS 会自动启用适合图层几何类型的数字化工具。
现在,我们可以使用编辑工具栏中的添加要素工具来创建新要素。要放置一个点,我们只需在地图上单击。然后我们会提示填写属性表单,一旦我们点击确定,新要素就会被创建。与点一样,我们可以通过在地图上放置节点来创建新的线和多边形。要完成一条线或一个多边形,我们只需在地图上右键单击。在每个图层中创建一些要素,然后保存您的更改。我们可以在即将到来的练习中重新使用这些测试图层。
注意
新要素和要素编辑只有在点击数字化工具栏中的保存图层编辑按钮或完成编辑并确认要保存后才会永久保存。
使用特征选择工具
选择特征是任何 GIS 的核心功能之一,在我们开始编辑几何形状和属性之前了解它们是有用的。根据用例,选择工具有多种不同的类型。QGIS 提供了三种不同的工具来使用鼠标、表达式或另一个图层选择特征。
属性工具栏中的第一组工具允许我们使用鼠标在地图上选择特征,一次选择一个或通过绘制不同的形状,如矩形或围绕特征的自由手绘区域。所有与绘制形状相交的特征都被选中。按住Ctrl键会将新选择添加到现有选择中。
类似地,按住Ctrl + Shift键将新选择从现有选择中删除。以下截图显示了这些工具:

第二种选择工具被称为表达式选择,它也存在于属性工具栏中。它根据可以包含引用和函数的表达式来选择特征,这些函数可以使用特征属性和/或几何形状。可用的函数列表相当长,但我们可以使用搜索框通过名称过滤列表,以便更快地找到所需的函数。在窗口的右侧,我们可以找到所选函数帮助,它解释了功能及其在表达式中的使用方法。函数列表还显示了图层属性字段,通过点击加载所有唯一值或加载 10 个样本值,我们可以轻松访问其内容。与鼠标工具一样,我们可以选择创建新的选择或添加到现有选择或从现有选择中删除。此外,我们还可以选择仅从现有选择中选择特征。让我们看看一些示例表达式,您可以在自己的工作中构建和使用它们:
-
使用我们样本数据中的
lakes.shp文件,例如,我们可以通过简单的属性查询选择面积大于 1,000 平方英里的湖泊:"AREA_MI" > 1000.0,或者使用几何函数如$area > (1000.0 * 27878400)。请注意,lakes.shp的 CRS 使用英尺,因此我们必须乘以 27,878,400 将平方英尺转换为平方英里。 -
我们还可以使用字符串函数,例如,查找名称较长的湖泊:
length("NAMES") > 12,或者名称中包含“s”或“S”的湖泊:lower("NAMES") LIKE '%s%',这首先将名称转换为小写,然后查找“s”的任何出现。对话框将看起来像以下屏幕截图:

第三种工具允许我们根据要素在第二层中的相对位置选择第一层中的要素。这些工具可以通过访问矢量 | 研究工具 | 按位置选择和矢量 | 空间查询 | 空间查询来访问。如果无法在矢量菜单中找到它,请在插件管理器中启用它。通常,我们想要使用空间查询插件,因为它支持各种空间操作,如交叉、等于、相交、不相交、重叠、接触和包含,具体取决于图层几何类型。
让我们使用样本数据中的railroads.shp和pipelines.shp测试空间查询插件。例如,我们可能想要找到所有穿过管道的铁路要素;因此,我们选择railroads图层、Crosses操作和pipelines图层。点击应用后,插件会展示查询结果。您可以在以下屏幕截图的窗口右侧看到结果要素的 ID 列表。在此列表下方,我们可以勾选缩放到项目复选框,QGIS 会缩放到所选 ID 所属的要素。此外,插件还提供按钮,可以直接将所有结果要素保存到新图层。

编辑矢量几何
现在我们知道了如何创建和选择要素,我们可以更仔细地查看绘图和高级绘图工具栏中的其他工具。绘图工具栏将看起来像以下屏幕截图:

基本绘图工具栏包含创建和移动要素以及节点、删除、复制、剪切和粘贴要素的工具,如下所示:
-
使用移动要素工具,通过拖动它们到新位置,可以轻松地一次移动一个或多个要素。
-
类似地,节点工具功能允许我们移动同一特征的一个或多个节点。第一次点击激活特征,而第二次点击选择节点。按住鼠标键拖动节点到其新位置。除了移动单个节点外,我们还可以通过单击并拖动线来移动边。最后,我们可以按住Ctrl键选择并移动多个节点。
-
删除选定内容、剪切特征和复制特征仅在选中一个或多个图层特征时才可用。同样,粘贴特征仅在特征已被剪切或复制后才能工作。
![编辑矢量几何]()
高级数字化工具栏提供了非常实用的撤销和重做功能,以及用于更复杂几何编辑的附加工具:
-
旋转特征(s)使我们能够围绕中心点旋转一个或多个选定的特征。
-
使用简化特征工具,我们只需单击特征并拉动弹出窗口中的公差滑块,就可以简化/泛化特征几何形状。
-
以下工具允许我们在现有多边形中添加环(也称为“洞”)或添加部分。当然,还有删除环和删除部分的工具。
-
重塑特征可以通过切割或添加部分来改变特征的几何形状。您可以通过在原始特征内开始绘制新形状以添加部分,或者在外部开始切割部分来控制行为,如下面的示例图所示:
![编辑矢量几何]()
-
偏移曲线工具仅适用于线条,并允许我们通过给定的偏移量移动线条几何形状。
-
分割特征允许我们沿着切割线切割一个或多个特征。
-
合并选定的特征使我们能够在保持对输出特征中哪些特征的属性将可用的控制的同时合并多个特征。
-
类似地,合并选定特征的属性允许我们将多个特征的属性合并,但不会将它们合并为一个特征。相反,所有原始特征保持原样,但属性值已更新。
-
最后,旋转点符号仅适用于具有旋转字段功能启用的点图层(我们将在第五章,创建优秀的地图中介绍)。
使用测量工具
任何 GIS 的核心功能之一是测量工具。在 QGIS 中,我们可以在属性工具栏中找到测量线条、面积和角度的工具,如下面的屏幕截图所示:

当我们绘制测量线、面积或角度时,测量值会持续更新。当我们绘制由多个段组成的线时,工具将显示每个段以及所有段的总长度。要停止测量,我们只需右键单击。如果我们想将测量单位从米更改为英尺,或者从度更改为弧度,我们可以在 设置 | 选项 | 地图工具 中进行更改。
编辑属性
属性编辑有三个主要用例。首先,我们可能想要编辑特定要素的属性,例如,更正一个错误的名字。其次,我们可能想要编辑一组要素的属性。或者第三,我们可能想要更改图层中所有要素的属性。所有这些用例都由属性表提供的功能覆盖。我们可以通过访问 图层 | 打开属性表,属性工具栏中的 打开属性表 按钮,或者在图层名称上下文菜单中来实现。
要更改属性值,我们总是首先需要启用编辑功能。然后我们可以双击属性表中的任何单元格以激活输入模式。点击 Enter 确认更改,但为了永久保存新值,我们还需要点击 保存编辑(s) 按钮,或者按 Ctrl + S。在属性表对话框的右下角,我们可以从表格视图切换到表单视图,如下面的截图所示,并从这里开始编辑。
小贴士
编辑单个要素属性的另一种选项是直接通过点击地图上的要素并使用 识别工具 来打开属性表单。默认情况下,识别工具 以只读模式显示属性值,但我们可以通过访问 设置 | 选项 | 地图工具 来启用 如果识别到单个要素,则打开要素表单。

注意
在属性表中,我们还找到处理选择(从左到右,从第三个按钮开始)的工具:删除选定的要素,通过表达式选择,取消选择,将选定的要素移动到表顶,反转选择,平移到选定的要素,缩放到选定的要素,以及复制选定的要素。在属性表中选择要素的另一种方法是点击行号。
下两个按钮允许我们添加和删除列。当我们点击删除列按钮时,会弹出一个列列表供我们选择。同样,添加列按钮会弹出一个对话框,用于指定新列的名称和数据类型。
如果我们想要更改图层中多个或所有要素的属性,手动编辑通常不是一个选择。这正是字段计算器的作用所在。我们可以通过在属性表中的打开字段计算器按钮或使用Ctrl + I键来访问它。在字段计算器中,我们可以选择仅更新所选要素或更新图层中的所有要素。除了更新现有字段外,我们还可以创建一个新字段。函数列表与我们之前在通过表达式选择要素时探索的相同。我们可以使用这些函数中的任何一个来填充新字段或更新现有字段。以下是一些常用表达式的示例:
-
我们可以使用
$rownum函数创建一个id列,该列填充了如图所示行号 -
另一个常见用例是使用几何函数
$length和$area分别计算线长度或多边形面积 -
同样,我们可以使用
$x和$y获取点坐标 -
如果我们想要获取一条线的起点或终点,可以使用
xat(0)和yat(0)或xat(-1)和yat(-1)![编辑属性]()
重投影和转换矢量及栅格数据
在第二章中,我们讨论了 CRS 以及 QGIS 如何提供即时重投影以显示存储在不同 CRS 中的空间数据集,这些数据集在同一个地图中显示。尽管如此,在某些情况下,我们可能希望永久性地重投影数据集,例如稍后进行地理处理。
在 QGIS 中,通过简单地保存图层为新的 CRS 来重投影矢量或栅格图层。我们可以通过图层 | 另存为...或图层名称上下文菜单中的另存为…来保存图层。选择目标文件格式和文件名,然后点击 CRS 字段旁边的浏览按钮来选择新的 CRS。
除了更改 CRS 外,保存矢量/栅格图层对话框的主要用例是在不同文件格式之间进行转换。例如,我们可以加载 Shapefile 并将其导出为 GeoJSON、Mapinfo MIF、CSV 等,或者相反。
保存栅格图层对话框也是一个方便的裁剪/裁剪栅格的方法,因为我们可以指定我们想要保存的范围。
类似地,对于矢量图层,图层菜单和图层名称上下文菜单中都有保存选择为…,它将打开相同的对话框,但它只会保存所选要素。

小贴士
启用将保存的文件添加到地图中(目前仅在矢量对话框中可用)非常方便,因为它节省了我们保存文件后手动加载新文件的麻烦。
联接表格数据
在许多实际情况下,我们以电子表格或文本文件的形式获得额外的非空间数据。好消息是我们可以通过简单地从文件浏览器拖动它们到 QGIS 或使用 添加矢量图层 来加载 XLS 文件。不要被措辞误导!它真的可以在文件中没有几何数据的情况下工作。文件甚至可以包含不止一个表格。你会看到以下对话框,它允许你选择你想要加载的表格(s):

QGIS 将自动识别 XLS 表格中列的名称和数据类型。这很容易辨认,因为数值在属性表中是右对齐的,如下面的截图所示:

我们也可以从类似于我们在 第二章 中看到的,查看空间数据,当我们从一个分隔符文本文件加载点图层时,加载来自分隔符文本文件的表格数据。要加载仅包含表格数据而不包含几何信息的数据的分隔符文本文件,我们只需启用 无几何(仅属性表)选项。
在从电子表格或文本文件加载表格数据后,我们可以继续将此非空间数据连接到矢量层。为此,我们转到矢量 图层属性 | 连接 选项卡。在那里,我们可以通过按绿色加号按钮添加一个新的连接。我们只需选择表格的 连接层 和 连接字段 字段(表格层的字段),这些字段应包含与矢量层的 目标字段 字段(的值)匹配的值。页面将类似于下面的截图。
注意
QGIS 中连接的工作方式是,连接层的属性被附加到原始层的属性表中。原始层的要素数量不会改变。每当连接和目标字段之间有匹配时,属性值将被填充;否则,你会看到 NULL 条目。

一旦添加了连接,我们就可以看到扩展的属性表,并可以使用新附加的属性进行样式和标签化。
小贴士
您可以永久保存连接层。只需使用 另存为… 创建新文件。
摘要
在本章中,我们介绍了从头创建新图层的方法。我们使用了不同的工具以不同的方式创建和编辑要素几何形状。然后,我们进入了编辑单个要素的属性、要素选择和整个图层的属性。接下来,我们重新投影了矢量和栅格图层,并学习了如何在不同文件格式之间进行转换。最后,我们通过介绍表格数据、如何将其加载到 QGIS 以及如何将其连接到我们的空间数据来结束本章关于图层创建和编辑的内容。
在下一章中,我们将把我们的数据用于实际用途,并学习如何在矢量和栅格数据上执行不同类型的空间分析。
第四章. 空间分析
在本章中,我们将从栅格处理和分析任务开始,例如裁剪和地形分析。我们将介绍栅格和矢量格式之间的转换基本知识,然后继续介绍常见的矢量地理处理任务,例如生成热图和计算区域内面积份额。我们将以介绍使用 QGIS 处理模型器自动地理处理工作流程结束本章。
裁剪栅格
在栅格处理中,一个常见的任务是使用多边形裁剪栅格。这个任务由位于栅格 | 提取 | 裁剪器的 Clipper 工具很好地处理。此工具支持裁剪到指定范围或使用多边形掩膜层裁剪,如下所示:
-
范围可以手动设置,也可以通过在地图中选择来设置。为此,我们只需在 QGIS 主窗口的地形区域拖动一个矩形即可。
-
掩膜层可以是项目中当前加载的任何多边形图层,或者任何其他多边形图层,可以使用选择…指定。
小贴士
如果我们只想将栅格裁剪到一定范围(当前地图视图范围或其他),我们也可以使用栅格另存为...,如第三章中所述的数据创建和编辑。
为了快速练习,我们将使用阿拉斯加 Shapefile(均来自我们的样本数据)作为掩膜层来裁剪阴影栅格。在窗口底部,我们可以看到 QGIS 用于裁剪栅格的gdalwarp命令。如果你也想学习如何使用 GDAL,这将非常有用。
默认的无数据值是0,但在必要时我们可以覆盖它。另一个好选项是创建输出 alpha 波段,这将设置掩膜外的所有区域为透明,如下面的截图所示:

由于我们启用了完成时加载到画布选项,结果图层将自动加载。QGIS 还应自动识别我们创建的 alpha 图层,并且位于阿拉斯加陆地之外的区域应该是透明的。如果由于某种原因,QGIS 未能自动识别 alpha 图层,我们可以通过在栅格图层属性的透明度部分使用透明度波段选项手动启用它。此对话框也是指定任何我们想要使用的无数据值的正确位置,如下面的截图所示:

分析高程/地形数据
栅格地形分析可用于计算坡度、方位、阴影、崎岖度指数和从高程栅格中提取的起伏,如下面的截图所示。这些工具通过栅格 | 地形分析插件提供,该插件是 QGIS 默认提供的,但我们必须在插件管理器中启用它。

地形分析包括以下工具:
-
坡度:此工具计算每个单元格的坡度角度(基于一阶导数估计),单位为度
-
坡向:此工具计算坡向(逆时针度数,从北方的 0 度开始)
-
阴影图:此工具创建一个基本的阴影图栅格,包含光照区域和阴影
-
地形图:此工具创建一个具有不同高程范围不同颜色的阴影地形图
-
崎岖度指数:此工具通过总结 3 x 3 单元格网格内的海拔变化来计算每个单元格的崎岖度指数
当然,要使用这些地形分析工具之一,我们需要一个高程栅格。如果您手头没有,您可以从 dwtkns.com/srtm/ 或其他 SRTM 下载服务中简单地下载一个数据集。
注意
如果您想精确复制以下练习的结果,请获取名为 srtm_05_01.zip 的数据集,它覆盖了阿拉斯加的一小部分。
在所有地形分析工具中,Z 因子是一个重要元素。当 x/y 单位与 z(高程)单位不同时,会使用 z 因子。例如,如果我们尝试从 x/y 为度数、z 为米的高程数据创建地形图,结果的地形图看起来会极度夸张。z 因子的值如下:
-
如果 x/y 和 z 都在米或英尺中,请使用默认的 z 因子 1.0
-
如果 x/y 在度数中,而 z 在英尺中,请使用 z 因子 370,400
-
如果 x/y 在度数中,而 z 在米中,请使用 z 因子 111,120
由于 SRTM 栅格数据提供的是 WGS84 EPSG:4326,我们在练习中需要使用 Z 因子 111120。让我们创建一个地形图!该工具可以自动计算地形颜色范围;我们只需点击 自动创建,如图下所示。当然,我们仍然可以编辑高程范围的上下限以及颜色。

虽然地形图是三色栅格,主要用于可视化目的,但坡度栅格是空间分析工作流程中的常见中间步骤。我们现在将创建一个坡度栅格,我们可以在以下章节的示例工作流程中使用它。生成的坡度栅格将自动以灰度形式加载,如图下所示:

栅格计算器
通过访问 栅格 | 栅格计算器,我们可以根据当前 QGIS 项目中加载的一个或多个栅格中的值创建一个新的栅格图层。所有可用的栅格波段以列表形式显示在对话框的左上角,形式为 raster_name@band_number,如图下所示。
在我们之前的练习中,我们创建了一个坡度栅格,我们可以使用以下表达式找到海拔超过 1,000 米且坡度小于 5 度的区域(你可能需要根据你使用的数据集调整值):
srtm_05_01@1 > 1000 AND slope_05_01@1 < 5
满足高海拔和均匀性两个条件的单元格将在结果栅格中被赋予值 1,而未满足条件的单元格将被设置为 0。只有南部较大的区域具有值 1。

另一个典型用例是对栅格进行重新分类。例如,我们可能希望将样本数据中的土地覆盖栅格重新分类,使得所有土地覆盖类别从 1 到 5 的区域得到值 100,从 6 到 10 的区域得到值 101,而超过 11 的区域得到新的值 102。我们将使用以下代码来完成这项工作:
( landcover@1 > 0 AND landcover@1 <= 6 ) * 100
+ ( landcover@1 >= 7 AND landcover@1 <= 10 ) * 101
+ ( landcover@1 >= 11 ) * 102
之前的栅格计算器表达式由三部分组成,包括一个检查和一个乘法。对于每个单元格,只有三个检查中的一个可以是真实的,真实用 1 表示。因此,如果一个土地覆盖单元格的值为 4,第一个检查将是真实的,表达式计算为1*100 + 0*101 + 0*102 = 100。
在栅格和矢量之间转换
在栅格 | 转换中提供了在栅格和矢量格式之间转换的工具,它们被称为栅格化和多边形化。与之前使用的栅格裁剪工具类似,这个工具也是基于 GDAL,并在对话框底部显示命令。
多边形化将栅格转换为多边形图层;根据栅格的大小,转换可能需要一些时间。当过程完成后,QGIS 将通过弹出窗口通知我们。例如,为了快速测试,我们可以将重新分类的土地覆盖栅格转换为多边形。结果矢量多边形图层包含多个具有单个属性lc的多边形要素,该属性取决于原始栅格值,如下面的屏幕截图所示:

栅格化工具与多边形化工具非常相似。唯一的区别是我们可以指定结果栅格的像素/单元格大小。我们还可以指定属性字段,这将提供输入给栅格单元格值。我们alaska.shp数据集的cat属性相当没有意义,但你可以从下面的屏幕截图中了解工具的工作原理:

访问栅格和矢量图层统计信息
每当我们得到一个新的数据集时,检查图层统计信息以了解数据的感觉是有用的。栅格图层统计信息在图层属性对话框中很容易获得,特别是在以下标签页中:
-
元数据显示了最小和最大单元格值以及平均值和标准差
-
直方图展示了栅格值的分布
-
对于矢量图层,我们可以使用矢量 | 分析工具中的两个工具来获取摘要统计信息:
-
基本统计对于数值字段非常有用。它计算诸如平均值和中位数、最小值和最大值、特征计数 n 以及唯一值的数量等参数,对于图层上的所有特征或仅对于选定的特征。
-
列出唯一值有助于获取某个字段的全部唯一值。
-
在这两个工具中,我们可以轻松地使用 Ctrl + C 复制结果,并将它们粘贴到文本文件或电子表格中。以下屏幕截图展示了探索我们机场样本数据集内容的示例:

从点创建热力图
热力图非常适合可视化点的分布。要创建它们,QGIS 提供了一个简单易用的热力图插件,我们需在插件管理器中激活它,然后可以通过访问栅格 | 热力图 | 热力图来使用它。该插件提供了不同的核形状供选择,并允许我们控制栅格大小(以单元格为单位)以及单元格大小。热力图插件的外观如下所示:

使用 Processing 进行矢量地理处理
最全面的空間分析工具集可通过 Processing 插件访问,我们也可以在插件管理器中启用它。当插件启用时,我们会发现一个分析菜单,其中我们可以激活工具箱,如下面的屏幕截图所示。在工具箱中,由于顶部动态搜索框的存在,很容易通过名称找到空间分析工具。这使得在工具箱中查找工具比在矢量或栅格菜单中更容易。习惯于 Processing 工具的另一个优点是,它们可以用 Python 和地理处理模型自动化。

注意,前面的屏幕截图显示了工具箱的高级界面。您可以使用工具箱底部的下拉按钮从简化界面切换到高级界面。我更喜欢使用高级版本,因为它显示了所有可用的算法,并清楚地显示了各个工具如何与不同的组件(如 GDAL/OGR 或 GRASS)相关联。
在以下章节中,我们将介绍一些可用的地理处理工具,并查看我们如何使用模型器来自动化我们的任务。
识别其他特征附近的特征
一个常见的空间分析任务是识别某些其他特征附近的特征。一个例子就是找到所有靠近河流的机场。使用我们样本数据中的airports.shp和majrivers.shp,我们可以使用固定距离缓冲区和按位置选择工具的组合,在距离河流 5,000 英尺内的机场进行查找,如下面的屏幕截图所示:

在缓冲机场点位置后,按位置选择选项选择与河流相交的所有机场缓冲区。结果,76 个机场中有 14 个被选中。此信息显示在 QGIS 主窗口底部的信息区域中,如下面的截图所示:

小贴士
如果你忘记了曾经使用的设置,或者需要检查是否使用了正确的输入图层,你可以转到分析 | 历史和日志。算法部分列出了我们运行的所有算法以及使用的设置。这也是查找警告部分错误消息的正确地方,如下面的截图所示:

算法下列出的命令也可以通过转到插件 | Python 控制台从 QGIS Python 控制台调用 Processing 工具。以下截图所示的 Python 命令运行了缓冲区算法并将结果加载到地图中:

在点位置进行栅格采样
另一个常见任务是在特定点位置采样栅格。使用 Processing,我们可以通过一个名为 v.sample 的 GRASS 工具来解决这个问题。要使用 GRASS 工具,请确保 GRASS 已安装,并且 Processing 在分析 | 选项和配置中配置正确。在 OSGeo4W 默认系统上,配置将类似于以下截图:

对于这个练习,让我们假设我们想要在我们的样本数据中采样机场位置的覆盖层。我们只需指定包含样本点的矢量图层和应采样的栅格图层。在这个例子中,我们可以将所有其他设置保留为默认值。该工具不仅会采样栅格,还会比较点属性与采样栅格值,但我们在当前示例中不需要这种比较。
对话框将类似于以下截图:

使用六边形网格映射密度
使用六边形网格映射点密度已成为创建热图的一种相当流行的替代方法。处理功能为我们提供了快速创建此类分析的方法。已经有一个预先制作的脚本称为从图层边界创建六边形网格,我们可以使用它首先创建一个覆盖输入图层中所有点的六边形网格。人口地点数据集popp.shp是本练习的一个很好的示例数据集。一旦网格准备就绪,我们可以运行在多边形中计数点来计算统计数据。如果你看不到结果图层,请转到图层属性 | 常规选项卡,并确保CRS字段设置为NAD 27 / 阿拉斯加阿尔伯斯。工具对话框将类似于以下截图:

在区域内计算面积份额
另一个我们经常遇到的空间分析任务是计算一定区域内的面积份额,例如,沿特定河流的植被份额。使用majrivers.shp和trees.shp,我们可以计算沿Susitna 河的 5,000 英尺土地带中林地份额。我们首先通过选择河流并对其进行缓冲来定义分析区域。请注意,溶解结果选项应设置为是,以确保缓冲结果是一个连续的多边形,如图所示。
注意
QGIS 处理功能只会将缓冲区应用于输入图层中选定的要素。这种默认行为可以在分析 | 选项和配置中通过禁用仅使用选定要素选项来更改。

接下来,我们计算河流周围土地带的大小。这可以使用导出/添加几何列工具来完成,该工具将面积和参数添加到属性表中。然后我们可以计算河流沿线区域与trees.shp中的林地之间的交集字段,如图所示:

使用溶解工具,我们可以将交集中所有区域重新组合成一个大的多边形,代表河流周围的总体林地面积。最后,我们可以使用高级 Python 字段计算器来计算林地面积的最后份额。公式value = $geom.area()/<area>将最终多边形的面积($geom.area())除以“面积”属性中的值(<area>),这是我们通过运行导出/添加几何列在之前步骤中创建的。工具将显示如下截图:

此计算结果为落叶树木的木材份额为 0.31601,混合树木为 0.09666。因此,我们可以得出结论,在Susitna 河沿岸,总共 41.27%的土地是林地。
使用图形模型器进行自动地理处理
使用图形模型器,我们可以将整个地理处理和分析工作流程转换为自动化模型。要创建模型,我们转到分析 | 图形模型器以打开模型器,在那里我们可以为我们的模型选择不同的输入和算法。
让我们创建一个自动化创建六边形热图的模型!通过双击输入列表中的矢量图层条目,我们可以为点图层添加一个输入字段。使用描述性参数名称是一个好主意,这样我们就可以识别模型中哪个输入是第一个,哪个是后来的。在适当的情况下,限制形状类型字段也是有用的。在我们的示例中,我们将输入限制为点。这将使处理能够预先过滤可用的图层,并只向我们展示正确类型的图层。我们需要第二个输入是一个数字字段,用于指定所需的六边形单元格大小。工具将类似于以下截图:

添加输入后,我们现在可以继续创建模型,通过组装算法。在算法部分,我们可以使用顶部的过滤器来缩小我们对正确算法的搜索范围。要将算法添加到模型中,我们只需双击算法列表中的条目。这会打开算法对话框,在那里我们必须指定输入和进一步的算法特定参数。
在我们的示例中,我们希望使用点矢量图层作为输入图层,并将数字输入六边形单元格大小作为单元格大小参数。我们可以通过下拉列表访问可用的输入。或者,也可以硬编码参数,如单元格大小。

在添加以下算法时,根据前面的处理步骤始终选择正确的输入图层非常重要。我们可以使用模型器自动绘制的模型图中的箭头连接来验证正确的流程。工具将类似于以下截图:

要完成模型,我们应该输入一个模型名称(例如,创建六边形热图)和一个组名称(例如,我的模型)。处理过程将使用组名称来组织我们创建的所有模型。一旦我们选择了名称和组,我们就可以保存模型并运行它。关闭模型器后,我们可以像使用任何其他工具一样从工具箱中运行保存的模型。甚至可以将一个模型作为另一个模型的构建块使用。
另一个有用的功能是,我们可以指定一个图层样式,该样式将自动应用于处理结果。此默认样式可以通过在工具箱中创建的模型的上下文菜单中的编辑输出渲染样式来设置,如下面的截图所示:

摘要
在本章中,我们介绍了各种栅格和矢量地理处理和分析工具,以及如何将它们应用于常见任务。我们看到了如何使用处理工具箱运行单个工具,以及如何使用模型器从多个工具创建复杂的地理处理模型。使用模型器,我们可以自动化我们的工作流程并提高我们的生产力,尤其是在处理重复性任务方面。
在下一章中,我们将学习如何将所有知识结合起来,使用高级样式和地图组合功能创建美丽的地图。
第五章。创建出色地图
在本章中,我们将介绍使我们能够创建出色地图的重要功能。我们首先将深入了解高级矢量样式,基于我们在第二章,“查看空间数据”中学到的知识。然后,我们将通过点标签的示例以及带有道路标志图形的更高级道路标签来学习如何标注要素。我们还将介绍如何手动调整标签。最后,我们将了解打印作曲家以及如何使用它来创建可打印的地图和地图集。
高级矢量样式
本节介绍了更高级的矢量样式功能,基于我们在第二章,“查看空间数据”中看到的基础知识。我们将看到如何使用渐变样式、分类样式和基于规则的样式。
使用尺寸缩放创建渐变风格
渐变风格非常适合在等值图中或类似地图中可视化数值分布。在我们的样本数据中,有一个climate.shp文件,其中包含位置和平均温度值,我们可以通过简单地选择列字段中的值T_F_MEAN并点击分类来使用渐变风格进行可视化。我们可以选择现有的颜色渐变字段,或者通过滚动列表到新建颜色渐变…条目来创建一个新的。渐变风格在不同的分类模式中可用,如下所示:
-
等间隔:此模式通过在指定列中找到的最大值和最小值之间的等间隔来创建类
-
分位数(等计数):此模式创建类,使得每个类包含相等数量的要素
-
自然断点(Jenks):此模式使用 Jenks 自然断点算法,通过考虑值的分布来创建类
-
标准差:此模式使用列值的标准差来创建类
-
漂亮的断点:此模式是唯一不严格创建指定数量的类的分类,而是试图找到漂亮的类断点
除了使用颜色区分不同的温度值外,我们还可以使用大小。通过在高级选项卡中将尺寸比例****字段设置为T_F_MEAN,如图下截图所示,所有点符号都将按比例缩放,使得平均温度较高的位置以更大的符号显示。
小贴士
使用尺寸比例字段,我们可以使点符号的大小或线符号的宽度响应于某个属性值。请注意,我们可以根据值的性质选择缩放点符号的面积或直径。同样,还有一个旋转字段选项,允许我们旋转点符号。预期的输入是从 0 到 360 度的度数,0 指向北方。

以下截图显示了使用渐变渲染器选项的结果,其中包含四个类别,使用漂亮断点分类模式和大小缩放字段选项,如前一个截图所示:

使用分类样式
正如渐变样式对于可视化数值非常有用一样,分类样式非常适合文本值,或者更普遍地说,对于名义尺度上的所有类型的值。这种数据的良好示例可以在我们的样本数据中的trees.shp文件中找到。对于每个区域,都有一个VEGDESC值,它描述了那里发现的森林类型。使用分类样式,我们可以非常容易地生成一个样式,其中每个唯一的VEGDESC列值都有一个符号,如以下截图所示。
当然,每个符号都是可编辑的,并且可以自定义。只需双击符号预览以打开符号选择对话框,它允许我们选择和组合不同的符号。

一旦我们点击确定,样式就会应用到我们的树木层上,以可视化该区域不同树种的分布。地图将看起来像以下截图:

为道路层创建基于规则的样式
使用基于规则的样式,我们可以创建一个具有规则层次结构的层样式。规则可以考虑到任何东西,从属性值到比例和几何属性,如面积或长度。以下截图显示了来自 Natural Earth 的ne_10m_roads.shp文件的一个基于规则的渲染器示例(您可以从www.naturalearthdata.com/downloads/10m-cultural-vectors/roads/下载它)。在规则的第一个级别上,我们区分了"type" = 'Major Highway'的道路和"type" = 'Secondary Highway'的道路。下一级别的规则处理比例依赖性。要添加这个第二层规则,我们可以使用细化当前规则按钮并选择向规则添加比例。我们只需输入一个或多个我们希望规则分割的比例值。
小贴士
第一规则级别上没有指定任何符号。如果我们也在第一级别指定了符号,渲染器会在每个符号上绘制两个符号。虽然这在某些情况下可能很有用,但我们现在不希望有这种效果。可以在规则属性中禁用符号,这些属性可以通过双击规则或单击规则树视图下方的编辑按钮(位于加号和减号按钮之间)访问。

在以下截图中,我们可以看到比例规则在起作用。左侧显示了一个简化版本,次要公路用细灰色线条表示,而右侧版本显示了更宽的白色道路和灰色轮廓。

小贴士
您可以通过访问设置 | 样式管理器 | 共享 | 导入来下载此样式使用的符号。URL 是raw.github.com/anitagraser/QGIS-resources/master/symbols/osm_symbols.xml。将 URL 粘贴到位置文本框中,点击获取符号,然后点击全选,最后点击导入。对话框将类似于以下截图:

标签
我们可以通过访问图层属性 | 标签,勾选使用以下标签标记此图层,并选择我们想要用于标签的属性字段来激活标签。这就是我们显示默认设置标签所需做的全部。虽然默认标签对于快速预览很好,但如果我们为报告或独立地图创建可视化,我们通常希望自定义标签。
使用表达式(位于属性下拉列表右侧的按钮),我们可以格式化标签文本以满足我们的需求。例如,我们样本airports.shp文件中的NAME字段包含大写文本。为了以混合大小写显示机场名称,我们可以设置表达式title(NAME),这将重新格式化名称文本为标题大小写。我们还可以使用多个字段来创建标签,例如,使用连接运算符||将名称和海拔高度在括号中结合,如下所示:
title(NAME) || ' (' || "ELEV" || ')'
注意文本周围的简单引号,如' (',以及字段名周围的双引号,如"ELEV"。对话框将类似于以下截图:

对话框顶部的大预览区域,标题为文本/缓冲区样本,显示了当前设置的预览。背景颜色可以调整以测试在不同背景上的可读性。在预览区域下方,我们可以找到以下不同的标签设置:
-
文本:除了更改字体样式、大小、颜色和透明度外,我们还可以修改字母和单词间距以及混合模式,这与我们在第二章中介绍的图层混合模式类似,即查看空间数据。注意每个设置右侧的按钮列。点击这些按钮允许我们创建所谓的“数据定义覆盖”。例如,我们可以使用这些覆盖来定义不同的标签颜色或根据单个要素的属性值或表达式来改变标签大小。
-
Formatting: 在这里,我们可以通过指定哪些字符要换行来启用多行标签。此外,我们可以控制 line height 和 alignment。我们还可以将表示线条数字化方向的符号添加到标签中。最后,Formatted numbers 选项提供了一个快捷方式,可以将数值格式化为特定的小数位数。
-
Buffer: 我们可以调整缓冲区大小、颜色和透明度,以及笔尖连接样式和混合模式。通过透明度和混合,我们可以在不过多遮挡底层地图的情况下提高标签的可读性。
-
Background: 这允许我们添加矩形、正方形、圆形、椭球体或 SVG 形式的背景形状。SVG 背景非常适合创建如高速公路标志等效果。
-
Shadow: 这使得为标签添加阴影成为可能。我们可以控制从阴影方向到颜色、模糊度、大小和透明度的所有内容。
-
Placement: 可用的自动标签放置选项取决于图层几何类型。对于点图层,我们可以选择以下选项:
-
灵活的 Around point 选项试图通过在点周围分布标签来找到最佳位置,避免重叠。正如您在下面的屏幕截图中所见,一些标签被放置在其点符号的右上角,而其他标签则出现在左下角的不同位置(例如,Anchorage Intl (129))或右下角(例如,Merrill Fld (123))。
-
Offset from point 选项强制所有标签到某个位置;例如,所有标签都可以放置在其点符号上方。
以下屏幕截图显示了使用 Around point 和 Label distance 为 1 mm 放置的带有 50% 透明 Buffer 和 Drop Shadow 的机场标签:
![Labeling]()
对于线图层,我们可以选择以下选项:
-
Parallel 用于根据线条方向旋转的直行标签
-
Curved 用于跟随线条形状的标签
-
Horizontal 用于保持水平方向的标签,无论线条方向如何
为了进一步微调,我们可以定义标签是否应放置在 Above line、One line 或 Below line,以及使用 Label distance 的上下距离。
以下示例显示了带有道路标志的标签。您可以从
upload.wikimedia.org/wikipedia/commons/c/c3/Blank_shield.svg下载空白道路标志 SVG。注意只有 Interstate 被标记。这可以通过以下标签表达式实现:CASE WHEN "level" = 'Interstate' THEN name END标签使用水平选项进行定位。此外,合并连接的线以避免重复标签(在渲染部分)和抑制小于以下特征大小的标签化被激活;例如,5 毫米有助于避免在当前比例下标签化长度小于 5 毫米的路段,从而避免杂乱。
![标签化]()
要设置道路标志,请转到背景部分,并从您下载到的文件夹中选择空白盾牌 SVG。为了确保标签能够很好地位于盾牌内部,我们另外指定了大小类型字段为带有大小为 1 毫米的缓冲区,这使得盾牌比包含的标签略大。
如果您现在点击应用,您会注意到标签并没有完美地居中在盾牌内。为了解决这个问题,我们在盾牌位置应用了一个小的Y 方向偏移,如图下所示。此外,我建议禁用标签缓冲,因为它往往会遮挡盾牌的一部分,而我们实际上也不需要它。
![标签化]()
对于多边形图层,选项如下:
-
从质心偏移,它使用多边形质心作为锚点,对于点图层来说,它的工作方式类似于从点偏移。
-
围绕质心的工作方式类似于围绕点。
-
水平将水平标签放置在多边形内的某个位置,独立于质心。
-
自由选项将自由旋转的标签放置在多边形内。
-
使用周长将标签放置在多边形轮廓上。
以下截图显示了使用多行功能在空格字符上环绕的湖泊标签(
lakes.shp),并使用自由选项定位:![标签化]()
提示
默认情况下,QGIS 会避免标签重叠,但出于调试目的,使用渲染部分中的选项强制显示所有标签(包括碰撞的标签)可能很有用。
除了自动标签定位外,我们还可以选择使用数据定义定位来精确放置标签。在标签工具栏中,我们可以找到手动移动和旋转标签的工具。它们仅在至少设置了 X 和 Y 坐标的数据定义定位的图层上激活和可用。要开始使用这些工具,我们可以在例如
airports.shp文件中简单地添加三个新列,label_x、label_y和label_rot。然后,我们可以通过按下偏移 X, Y和旋转旁边的按钮来在数据定义设置中指定这些列。现在我们不需要在属性表中输入任何值。标签引擎将检查值,如果它发现属性字段为空,它将简单地自动放置标签。通过指定数据定义定位,标签工具栏的工具现在可用(注意编辑模式必须开启),我们可以使用这些工具来移动和旋转地图上的任何标签。更改将写回属性表。尝试移动一些标签,特别是它们放置得很近的地方,并观察自动放置的标签如何适应你的更改。 -
-
渲染:这允许我们定义基于比例的可见性限制,以在特定比例下显示标签,以及基于像素大小的可见性来隐藏小特征上的标签。在这里,我们还可以告诉标签引擎显示冲突标签,这些标签默认情况下通常会被隐藏。
设计打印地图
在 QGIS 中,打印地图是在打印布局中设计的。一个 QGIS 项目可以包含多个布局,因此选择描述性的名称是有意义的。布局在保存项目时自动保存。要查看项目中所有可用布局的列表,请转到项目 | 布局管理器。
我们可以通过转到项目 | 新建打印布局或使用Ctrl + P来打开一个新的布局。布局窗口包括以下内容:
-
一个用于显示空白页的地图布局预览区域
-
配置布局、项属性、图集生成的面板,以及一个用于快速撤销和重做的命令历史面板
-
用于管理、保存和导出布局的工具栏,在预览区域中导航,以及添加和排列不同的布局项
布局面板让我们可以访问纸张选项,如大小、方向和页数。这也是配置吸附行为和输出分辨率的地点。
首先,我们通过点击添加新地图按钮,或者通过转到布局 | 添加地图并在纸上绘制地图矩形来将地图项添加到文档中。点击纸张,按住鼠标按钮,并拖动矩形打开。我们可以使用鼠标和选择/移动项工具来移动、调整大小和缩放地图。或者,也可以在项属性面板中配置所有地图设置。
项目属性面板的内容取决于当前选定的组合项。如果选择了地图项,我们可以调整地图的比例和范围,以及地图项本身的位置和大小工具。在比例为 10,000,000 时,我们可以在 A4 纸上大致放置阿拉斯加。要移动地图项内显示的区域,我们可以使用移动项目内容工具。
在地图看起来符合我们的要求后,我们可以使用添加新刻度尺按钮或通过转到布局 | 添加刻度尺并点击地图来添加刻度尺。现在,项目属性面板显示刻度尺的属性,类似于以下截图所示。由于我们可以将多个地图项添加到一个组合中,因此指定哪个地图属于刻度尺很重要。第二个主要属性是刻度尺样式,它允许我们选择不同的刻度尺类型或用于简单文本表示(如 1:10,000,000)的数值类型。使用单位属性,我们可以将地图单位从英尺或米转换为更易于管理的单位,如英里或千米。
段属性控制刻度尺中段落数量和单个段落的尺寸。此外,这些属性还控制刻度尺的颜色、字体、背景等。
可以使用添加图像按钮或通过转到布局 | 添加图像并点击纸张来向组合中添加北箭头。在 QGIS 加载 SVG 文件夹中图像的预览时,项目属性面板可能需要一段时间才能更新。从 QGIS 附带图像列表中选择北箭头或选择自己的 SVG。还可以使用适当的工具栏按钮(如添加箭头、添加矩形等)添加进一步的地图装饰,如箭头或矩形、三角形和椭圆形形状。

显示近距离区域的地图通常伴随着第二张地图,告诉读者该区域在更大背景中的位置。要创建这样的概览图,我们添加第二个地图项并激活其概览选项。通过设置概览框架,我们可以定义应该突出显示哪个详细地图的范围。
小贴士
组合中的每个地图项都可以显示不同的图层组合。通常,作曲器中的地图项与主 QGIS 窗口中的地图同步。因此,如果我们关闭主窗口中的图层,它也会从打印作曲器地图中删除。但是,我们可以通过在地图项属性中启用锁定图层来停止这种自动同步。
其他常见的地图功能包括网格和坐标框架。可以为任何地图项目启用网格。我们可以在实心网格或十字之间进行选择。间隔和偏移值必须以地图单位指定。此外,我们可以激活条纹样式和绘制坐标在框架内部或外部,如下面的截图所示:

线条图是地图的另一个重要元素。我们可以使用添加新线条图按钮或转到布局 | 添加线条图来添加一个包含所有当前可见地图层条目的默认线条图。线条图条目可以在线条图项目属性中进行重新组织、编辑和删除。使用在选项,我们可以将长标签拆分为多行,如下面的截图所示。此外,本例中的线条图分为四列。默认情况下,QGIS 尝试将一个层的所有条目保持在单列中,但我们可以通过启用拆分图层来覆盖此行为。
要向地图添加文本,我们可以使用添加新标签按钮或转到布局 | 添加标签。简单标签使用相同的字体显示所有文本。通过启用渲染为 HTML,我们可以创建更复杂的标签,包括标题、列表、不同颜色以及使用正常 HTML 标记的加粗或斜体突出显示,例如:
<h1>Alaska</h1>
<p>The name <i>"Alaska"</i> means "the mainland"</p>
<ul><li>one list entry</li><li>another entry</li></ul>
标签还可以包含如下表达式:
-
[% $now %]在组合中插入当前时间戳 -
[% $page %] of [% $numpages %]在多页组合中插入页码
使用添加 HTML 框架按钮可以添加更高级的文本区域。我们可以将项目的 URL 引用指向我们本地机器或在线上的任何 HTML 页面,内容将在作曲页面上显示。

要向地图添加更多详细信息,作曲器还提供了使用添加属性表按钮或通过转到布局 | 添加属性表来添加属性表的可能性。通过启用仅显示可见要素,我们可以过滤表格并仅显示相关结果。通过属性…按钮可以进行列排序和重命名。
最后,图集生成面板使我们能够使用一个打印组合创建一系列地图。该工具将为图集配置中定义的覆盖层下拉列表中的每个要素创建一个地图。覆盖层中的要素可以像常规要素一样显示或通过启用隐藏覆盖层来隐藏。要素排序和要素过滤使我们可以进一步微调结果。
使用固定比例选项,所有地图都将使用相同的比例渲染。如果我们需要更灵活的输出,我们可以切换到边缘周围功能选项,该选项将缩放到每个覆盖层特征,并在指定的边缘周围区域渲染其外。输出字段可以是每个覆盖层特征的图像或 PDF,或者通过在进入作曲家 | 导出为 PDF之前启用单文件导出,可以生成多页 PDF。

摘要
在本章中,我们更深入地探讨了如何使用高级矢量图层样式,如分类样式或基于规则的样式来创建一些更复杂的地图。我们还介绍了 QGIS 中可用的自动和手动特征标签选项。本章还展示了如何使用打印作曲家创建可打印的地图,并介绍了用于创建地图集的 Atlas 功能。恭喜!在之前的章节中,你已经学习了如何安装和使用 QGIS 来创建、编辑、分析空间数据,以及如何有效地展示它。










浙公网安备 33010602011771号