第 3 章 QGIS QGIS:探索 PyQGIS 和用于空间分析的本地算法
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在本章中,我们将继续关注 QGIS,让你的 Python 和 QGIS 技能更上一层楼。这些都是基础概念,学习它们对未来的地理空间分析技能(包括空间算法、数据工程、预测建模和预测以及机器学习)至关重要。
QGIS 与 Python 的集成被称为PyQGIS,它是一个 Python API,使用定义的协议和定制来实现工作流程自动化。在运行大型脚本或构建应用程序时,自动化非常重要。与 API 集成后,您可以访问大量数据集,进行探索和分析。您可以创建、修改和查询代表现实世界特征的数字对象。
PyQGIS 是对底层 C++ 库的封装。QgisInterface 的 C++ 版本实现的所有方法和类变量都可通过 Python 封装器使用。 PyQGIS类以QGIS 中的功能为目标。您不需要单独安装 Python,因为它已与 QGIS 一起直接安装到您的系统中。
Python 是一种面向对象的编程语言。您可以将对象看作是数据(属性)和行为(方法)的块。在 Python 中,对象还包括函数。属性可以是数据,也可以是函数。方法也是属性,这意味着您可以将它们存储在变量中,就像其他属性一样。Python 类 描述了如何改变对象的状态和对象属性的指令。
在本章后面简要探讨 Python 脚本模板时,我将重温这些概念,但在使用QgisInterface 类定义的方法或函数时,我也会强调这些概念。首先,我们将使用 PyQGIS 来浏览一个示例项目。您将上传数据图层,并学习如何使用 Python 控制台与它们交互。
探索 QGIS 工作区:旧金山的树木覆盖率和不平等现象
您在第 2 章中了解了城市热岛,我们将在这里进一步阐述。众所周知,树木覆盖较少的社区往往更热,这往往会增加健康风险。我们将在本章的第一个例子中探讨这一观点,因为它在美国的一个城市旧金山得到了验证,研究问题是:旧金山哪些社区的树木覆盖率较低?
图 3-1中的地图叠加了四层数据:一层划定了社区边界,一层提供了旧金山的树木覆盖数据,一层提供了收入水平和种族数据,还有一层是 OpenStreetMap 的位置背景。紫色线条表示以摘要特征类表示的社区边界。
最后,我们还需要一个低收入社区的替代或替身。是否有一种已经在使用的衡量标准可以告诉我们所需要知道的东西?事实上,有:公平战略街区。旧金山市政交通局(SFMTA)在实施公平政策时使用了这一衡量标准,试图解决交通绩效方面的差异。这些社区是根据其低收入家庭和公共住房的比例、居民使用私人车辆的情况、种族/族裔和残疾情况确定的。这可以作为低收入社区的代用指标。
有了这些图层,我们就可以考虑在哪些区域有足够的树木覆盖,并将它们与不同收入水平和种族构成的社区进行比较。
图 3-1.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access