30_使用表达式进行基础过滤与样式设置 QGIS3
原文链接:https://www.qgistutorials.com/en/docs/3/vector_styling_expressions.html
使用表达式进行基础过滤与样式设置 (QGIS3)¶
贡献者: Steven Kim
表达式提供了一种强大的方式,可以动态地操作属性值、几何图形和变量,从而即时修改地图要素。本教程将介绍一些常用表达式及其在地图制作中的应用。
任务概述¶
我们将使用表达式从 Natural Earth 国家数据层中根据属性过滤要素,然后对它们进行样式设置,以创建一幅东南亚地图,其中每个国家都用不同的绿色色调表示。
获取数据¶
- Natural Earth 提供了国家的行政矢量数据。在下载页面,请在
Medium scale data下查找 Cultural 选项。
- 下载
Admin 0 - Countriesshapefile 文件。你会看到下载了ne_50m_admin_0_countries.zip文件,本教程将使用此文件。
为方便起见,您可以直接从下方下载上述数据层的副本:
数据来源 [NATURALEARTH]
操作步骤¶
- 在 QGIS 浏览器中定位
Natural_Earth_quick_start.zip文件并将其展开。选择ne_50m_admin_0_countries.shp文件并将其拖到画布上。
- 现在,一个新的数据层
ne_50m_admin_0_countries将加载到 QGIS 中,你应该能看到一幅世界地图。点击打开图层样式面板。
- 将样式从“单一符号”切换到“基于规则”。
- 双击默认规则,进入“编辑规则”对话框。
- 要使用表达式进行过滤,请点击过滤器按钮 ε。
- 你已进入“表达式构建器”对话框。此对话框提供了编写表达式的主要界面,可以通过多种方式访问。它包含左侧的输入框、中间的函数列表和右侧的帮助框。
- 从中间列表中,展开“字段和值”,以探索
ne_50m_admin_0_countries数据层中的字段。
- 点击选择
SUBREGION字段,然后在右侧面板中点击“所有唯一值”以查看所有唯一的子区域值。
- 查看后,选择左侧的表达式输入框,输入以下表达式,然后点击确定。
bash "SUBREGION" = 'South-Eastern Asia'
- 你应该能看到东南亚地区。在你的地图窗口中将视图平移到该区域并缩放居中。
- 现在我们已经使用了表达式来过滤要素,让我们使用表达式根据
MAPCOLOR7字段为每个国家着色。在样式面板中向下滚动到“符号”选项,选择“简单填充”,这将显示填充颜色、线条颜色等样式选项。点击“填充颜色”旁边的“由数据定义覆盖”按钮,并在菜单中选择“编辑…”。
- 这将打开用于填充颜色的“表达式构建器”对话框。输入以下表达式:
bash set_color_part(ramp_color('Greens',scale_linear("MAPCOLOR7",1,7,0.2,1)),'alpha',100)
这个表达式包含多个函数:set_color_part() 用于设置 alpha 值或透明度,ramp_color() 用于应用颜色渐变,scale_linear() 用于使用 MAPCOLOR7 字段为每个国家设置颜色。在此示例中,我们使用绿色调,将 alpha 值设置为 255 中的 100,并将 MAPCOLOR7 从其原始范围 1-7 缩放至 0.2-1,这样与 ramp_color 配合会显得很好看。
注意
Natural Earth 数据层有几个名为 MAPCOLOR7、MAPCOLOR8 等的字段。这些字段包含用于为地图着色的数值,以便相邻的多边形不使用相同颜色。有 7、8、9 或 13 种颜色的版本。
- 点击确定退出对话框。在“编辑规则”对话框中,将“描边样式”更改为“无笔划”。你现在应该看到绿色的国家了。点击应用。
- 我们仅通过使用表达式对数据层进行过滤并应用颜色渐变,就创建了一幅样式精美的地图。
如果你想提供反馈或分享学习本教程的经验,请在下方留言。(需要 GitHub 账户)
















