跳转至

33_在 QGIS3 中为等高线设置三维样式

原文链接: https://www.qgistutorials.com/en/docs/3/contour_3d_styling.html

为等高线设置三维样式 (QGIS3)

贡献者: Steven Kim

在上一教程 使用表达式为河网设置样式 (QGIS3) 中,我们使用表达式来过滤和设置河网的样式。在本教程中,我们将处理一个等高线数据集,并使用表达式为其设置样式以产生三维效果。

任务概述

我们将使用几何生成器符号层动态地对等高线应用偏移,然后应用色带来创建三维地图的外观。

../../_images/output2.png

获取数据

国家地图 是美国地质调查局 (USGS) 与其他合作伙伴之间的一项协作努力,旨在改进和提供全国的地形信息。我们将从国家地图下载器中下载一个等高线数据集。

  1. 访问 TNM Download v2。浏览到您感兴趣的区域。本教程将下载德克萨斯州奥斯汀附近区域的等高线。

../../_images/data110.png

  1. 在下载器中,查找 Elevation Products(3DEP) 数据集,并勾选复选框以查看所有子类别。仅选择 Contours (1:24,000-scale) 类别。在“文件格式”下,选择 GeoPackage

../../_images/data24.png

  1. 点击蓝色的“Search Products”按钮以查看匹配文件列表。

../../_images/data34.png

  1. 在结果中,您将找到 USGS NED 1/3 arc-second Contours for Austin E, Texas 文件。点击“Download Link(ZIP)”下载压缩的 GeoPackage 文件 ELEV_Austin_E_TX_1X1_GPKG.zip

../../_images/data44.png

您可以直接通过 ELEV_Austin_E_TX_1X1_GPKG.zip 下载该 zip 文件。

数据来源 [USGS]

注意

您也可以从任何 DEM 图层生成等高线并替代此处使用的等高线。有关逐步说明,请参考我们的教程 处理地形数据 (QGIS3)

操作步骤

  1. 在计算机上解压 ELEV_Austin_E_TX_1X1_GPKG.zip 文件。在 QGIS 浏览器中找到解压后的 ELEV_Austin_E_TX_1X1_GPKG.gpkg 文件并展开它。选择 Elev_Contour 图层并将其拖拽到画布上。

../../_images/160.png

  1. 一个新的 Elev_Contour 图层现在被加载,您应该能看到等高线。

../../_images/230.png

  1. 右键点击 Elev_Contour 图层并选择“打开属性表”。您会注意到 contourelevation 字段包含每条等高线的高程值。这个字段名称很重要,将在后续步骤的表达式中使用。

../../_images/325.png

  1. 我们现在可以开始设置等高线样式。在继续之前,必须先添加一个适合为高程着色的色带。如果您已经在前面的教程 创建块状世界地图 (QGIS3) 中添加了 wiki-1.02 色带,可以跳过第 9 步。点击菜单栏中的“设置”,然后选择“样式管理器”。

../../_images/410.png

  1. 点击底部的加号“添加项目”,然后选择“目录: cpt-city…”。

../../_images/510.png

  1. 向下滚动色带列表,直到找到 wiki-1.02。可能有几个同名的,只需点击其中一个并点击“确定”。

../../_images/610.png

  1. 在“保存新色带”窗口中,输入值 wiki-1.02 作为名称。

../../_images/710.png

  1. 点击“保存”退出窗口,然后点击“关闭”退出样式管理器。现在,wiki-1.02 色带可在您的项目中使用。

../../_images/810.png

  1. 现在我们可以设置等高线样式了。选择 Elev_Contour 图层,然后点击“打开图层样式面板”按钮。选择“简单线(Simple Line)”以访问其属性。

../../_images/910.png

  1. 将符号层类型从“简单线(Simple Line)”切换到“几何生成器(Geometry Generator)”。此符号层允许我们使用表达式动态更改图层中要素的几何形状。

../../_images/1014.png

  1. 在输入框中,输入此表达式以根据每个等高线的高程值沿 y 轴平移每条等高线。我们使用 minimum()maximum() 函数查找 contourelevation 列中的值范围,并使用 scale_linear() 函数将高程从最小值到最大值线性缩放到所需的 y 轴偏移范围(0 到 0.2 度)。如果您的等高线图层使用的坐标参考系单位不是度,请确保适当调整这些值。输入表达式并点击“确定”。

bash translate($geometry,0,scale_linear("contourelevation", minimum("contourelevation"),maximum("contourelevation"),0,0.2))

../../_images/1117.png

  1. 在符号窗口的“几何生成器”下方,选择“简单线(Simple Line)”图层以访问其属性。点击“颜色”的“数据定义覆盖”按钮并选择“编辑”菜单。

../../_images/1215.png

  1. 这将打开线颜色的“表达式构建器”对话框。输入此表达式,根据 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))

../../_images/1313.png

  1. 您应该能看到根据高程着色的等高线的三维表示。尝试调整着色和缩放表达式,以呈现不同的景观艺术表现形式。

../../_images/1412.png


如果您想提供反馈或分享您对本教程的经验,请在下方评论。(需要 GitHub 账户)