33_在 QGIS3 中为等高线设置三维样式
原文链接: https://www.qgistutorials.com/en/docs/3/contour_3d_styling.html
为等高线设置三维样式 (QGIS3)¶
贡献者: Steven Kim
在上一教程 使用表达式为河网设置样式 (QGIS3) 中,我们使用表达式来过滤和设置河网的样式。在本教程中,我们将处理一个等高线数据集,并使用表达式为其设置样式以产生三维效果。
任务概述¶
我们将使用几何生成器符号层动态地对等高线应用偏移,然后应用色带来创建三维地图的外观。
获取数据¶
国家地图 是美国地质调查局 (USGS) 与其他合作伙伴之间的一项协作努力,旨在改进和提供全国的地形信息。我们将从国家地图下载器中下载一个等高线数据集。
- 访问 TNM Download v2。浏览到您感兴趣的区域。本教程将下载德克萨斯州奥斯汀附近区域的等高线。
- 在下载器中,查找
Elevation Products(3DEP)数据集,并勾选复选框以查看所有子类别。仅选择Contours (1:24,000-scale)类别。在“文件格式”下,选择GeoPackage。
- 点击蓝色的“Search Products”按钮以查看匹配文件列表。
- 在结果中,您将找到
USGS NED 1/3 arc-second Contours for Austin E, Texas文件。点击“Download Link(ZIP)”下载压缩的 GeoPackage 文件ELEV_Austin_E_TX_1X1_GPKG.zip。
您可以直接通过 ELEV_Austin_E_TX_1X1_GPKG.zip 下载该 zip 文件。
数据来源 [USGS]
注意
您也可以从任何 DEM 图层生成等高线并替代此处使用的等高线。有关逐步说明,请参考我们的教程 处理地形数据 (QGIS3)。
操作步骤¶
- 在计算机上解压
ELEV_Austin_E_TX_1X1_GPKG.zip文件。在 QGIS 浏览器中找到解压后的ELEV_Austin_E_TX_1X1_GPKG.gpkg文件并展开它。选择Elev_Contour图层并将其拖拽到画布上。
- 一个新的
Elev_Contour图层现在被加载,您应该能看到等高线。
- 右键点击
Elev_Contour图层并选择“打开属性表”。您会注意到contourelevation字段包含每条等高线的高程值。这个字段名称很重要,将在后续步骤的表达式中使用。
- 我们现在可以开始设置等高线样式。在继续之前,必须先添加一个适合为高程着色的色带。如果您已经在前面的教程 创建块状世界地图 (QGIS3) 中添加了 wiki-1.02 色带,可以跳过第 9 步。点击菜单栏中的“设置”,然后选择“样式管理器”。
- 点击底部的加号“添加项目”,然后选择“目录: cpt-city…”。
- 向下滚动色带列表,直到找到 wiki-1.02。可能有几个同名的,只需点击其中一个并点击“确定”。
- 在“保存新色带”窗口中,输入值
wiki-1.02作为名称。
- 点击“保存”退出窗口,然后点击“关闭”退出样式管理器。现在,wiki-1.02 色带可在您的项目中使用。
- 现在我们可以设置等高线样式了。选择
Elev_Contour图层,然后点击“打开图层样式面板”按钮。选择“简单线(Simple Line)”以访问其属性。
- 将符号层类型从“简单线(Simple Line)”切换到“几何生成器(Geometry Generator)”。此符号层允许我们使用表达式动态更改图层中要素的几何形状。
- 在输入框中,输入此表达式以根据每个等高线的高程值沿 y 轴平移每条等高线。我们使用
minimum()和maximum()函数查找 contourelevation 列中的值范围,并使用scale_linear()函数将高程从最小值到最大值线性缩放到所需的 y 轴偏移范围(0 到 0.2 度)。如果您的等高线图层使用的坐标参考系单位不是度,请确保适当调整这些值。输入表达式并点击“确定”。
bash translate($geometry,0,scale_linear("contourelevation", minimum("contourelevation"),maximum("contourelevation"),0,0.2))
- 在符号窗口的“几何生成器”下方,选择“简单线(Simple Line)”图层以访问其属性。点击“颜色”的“数据定义覆盖”按钮并选择“编辑”菜单。
- 这将打开线颜色的“表达式构建器”对话框。输入此表达式,根据 contourelevation 值,使用 wiki-1.02 色带为等高线着色。我们需要将高程值映射到色带预期的范围(0 到 1)。与之前使用的
scale_linear函数不同,这里我们使用scale_polynomial函数以非线性方式缩放值。输入表达式后,点击“确定”。
bash ramp_color('wiki-1.02',scale_polynomial("contourelevation", minimum("contourelevation"),maximum("contourelevation"), 0,1,0.5))
- 您应该能看到根据高程着色的等高线的三维表示。尝试调整着色和缩放表达式,以呈现不同的景观艺术表现形式。
如果您想提供反馈或分享您对本教程的经验,请在下方评论。(需要 GitHub 账户)


















