03_使用属性 QGIS3
原文链接: https://www.qgistutorials.com/en/docs/3/working_with_attributes.html
使用属性 (QGIS3)¶
GIS数据包含两部分——要素(features)和属性(attributes)。属性是关于每个要素的结构化数据。本教程将展示如何在QGIS中查看GIS矢量图层的属性并对其执行基础查询。
任务概述¶
本教程使用的数据集包含全球居民点信息。任务是通过查询,找出世界上所有人口超过100万的首都城市,并将结果子集保存为GeoJSON文件。
你将学到的其他技能¶
- 使用表达式从图层中选择要素。
- 使用属性工具栏。
- 导出图层中选定的要素。
获取数据¶
Natural Earth 提供了 居民点 (Populated Places) 数据集。下载 简化版(字段较少)数据集。
为方便起见,你也可以通过下面的链接直接下载该数据集的副本:
ne_10m_populated_places_simple.zip
数据来源 [NATURALEARTH]
操作步骤¶
- 在 QGIS 浏览器中定位
ne_10m_populated_places_simple.zip文件并展开它。选择ne_10m_populated_places_simple.shp文件并将其拖拽到画布上。
- 新图层
ne_10m_populated_places_simple现在将加载到 QGIS 中,你会看到代表世界居民点的许多点。QGIS画布的默认视图显示GIS图层的几何图形。每个点也有相关联的属性。让我们查看一下。定位到属性工具栏。此工具栏包含许多用于检查、查看、选择和修改图层属性的实用工具。
注意
如果你看不到该工具栏,可以通过 视图 ‣ 工具栏 ‣ 属性工具栏 来启用它。
- 点击属性工具栏上的识别按钮。选中该工具后,点击画布上的任意点。与该点关联的属性将显示在新的“识别结果”面板中。查看完不同点的属性后,可以点击关闭按钮。
- 与其一次查看一个要素的属性,我们可以将它们以表格形式一起查看。点击属性工具栏上的打开属性表按钮。你也可以右键单击
ne_10m_populated_places_simple图层并选择打开属性表。
- 你可以水平滚动并找到 pop_max 列。此字段包含相关地点的人口数量。你可以双击字段标题以对该列进行降序排序。
- 现在我们可以对这些属性进行查询了。QGIS使用类似SQL的表达式来执行查询。点击使用表达式选择要素按钮。
- 在“按表达式选择”窗口中,展开字段和值部分并双击
pop_max标签。你会注意到它被添加到了底部的表达式部分。如果你不确定字段的值,可以点击“全部唯一”按钮查看数据集中存在的属性值。对于本练习,我们要找出所有人口超过100万的要素。因此,如下所示完成表达式,然后点击选择要素,再点击关闭。
bash "pop_max" > 1000000
注意
在QGIS表达式引擎中,双引号内的文本指代字段,单引号内的文本指代字符串值。
- 你会注意到属性表中现在有一些行被选中。标签窗口也会变化并显示选定要素的数量。
- 关闭属性表窗口,返回到QGIS主窗口。你会注意到现在有一部分点以黄色呈现。这是我们查询的结果,被选中的点就是那些
pop_max属性值大于1000000的点。
- 让我们更新查询,增加一个条件,即该地点除了人口超过100万外,还应是首都。为了快速进入表达式编辑器,你可以使用属性工具栏中的“按表达式选择要素”按钮。
- 包含首都信息的字段是 adm0cap。值
1表示该地点是首都。我们可以使用 and 运算符将此条件添加到之前的表达式中。输入如下表达式,点击选择要素,然后点击关闭。
bash "pop_max" > 1000000 and "adm0cap" = 1
- 返回到QGIS主窗口。现在你将看到被选中的点是一个更小的子集。这是第二个查询的结果,显示了数据集中所有既是国家首都又拥有超过100万人口的地点。
- 现在我们将把选定的要素导出为一个新图层。右键单击
ne_10m_populated_places_simple图层,然后转到 导出 ‣ 将所选要素另存为...
- 你可以选择任意你喜欢的格式作为格式。对于本练习,我们将选择
GeoJSON。GeoJSON是一种广泛应用于网络地图的基于文本的格式。点击文件名字段旁边的 … 按钮,输入populated_capitals.geojson作为输出文件名。
- 输入数据有很多列。你可以只选择原始列的一个子集进行导出。展开选择要导出的字段及其导出选项部分。点击取消全选,然后勾选
name和pop_max列。点击确定。
- 一个新图层
populated_capitals将被加载到QGIS中。你可以取消勾选ne_10m_populated_places_simple图层以隐藏它,并查看新导出图层的点。
如果你想提供反馈或分享学习此教程的体验,请在下方留言。(需要 GitHub 账户)















