news 2026/9/30 9:39:06

QGIS中DEM三维可视化完整流程:从数据下载到场景调优

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QGIS中DEM三维可视化完整流程:从数据下载到场景调优

看到不少人在群里问QGIS怎么把DEM变成三维看,其实这个问题我在项目里折腾过不少次。最开始做地形分析时,用ArcScene加载DEM搭场景,又重又慢,换个视角还会卡。后来换成QGIS自带的3D Map View,配合一点数据预处理,流畅度和效果都出乎意料。这篇文章就把我从数据下载、坐标系处理到三维场景参数调优的完整路径写清楚,顺便把我踩过的坑一并记录下来。

QGIS本身是个开源桌面GIS软件,支持栅格和矢量的常规分析,三维方面其实长期不算它的强项。但从2.18开始加入的3D Map View已经相当能打,搭配2.5D渲染和Qgis2threejs插件,基本能满足地形展示、坡度分析结果可视化、项目汇报这类需求。关键是它免费、跨平台、不需要额外的三维运行环境,这对很多做规划、地质、环境相关工作的朋友来说,省掉了申请商业软件许可的时间成本。

如果你手头只有一景DEM数据,想快速看山头走向、沟谷分布,或者要给别人演示某个区域的地形变化,这篇文章的思路应该是目前最省事的一种做法。就算你之前完全没接触过三维GIS,只要按步骤操作,也基本能在这个周末内做出可交互的三维地形场景。

1. 内容整体设计与思路拆解

1.1 先搞清楚DEM数据展示三维最核心的问题

DEM(数字高程模型)本质是一个单波段栅格,每个像元记录的是地面高程值。你在二维视图里看到一张灰不溜秋的图,视觉上只有灰度差异,很难直观感受地形的起伏。所谓三维展示,就是要把这个“高程值”映射到三维空间的Z轴上,再用颜色或光影叠加出立体感。这里最关键的不是渲染特效,而是坐标系统和Z轴拉伸比例这两个基础参数,它们决定了三维地形是否变形、是否符合实际尺度。

很多初学者一上来就把DEM丢进QGIS,然后打开3D Map View,发现地形是个平板或者被拉成一根刺,第一个反应是软件坏了,实际上就是投影坐标系和垂直拉伸没设置好。我自己的经验是:在做三维之前,一定要把数据统一到合适的投影坐标系(比如UTM),Z轴的单位和X、Y轴单位保持一致,否则三维还原必然失真。

1.2 三条技术路线能实现三维DEM展示

在QGIS里做三维DEM展示,主流有三条路:

实现方式操作难度交互程度适合场景
2.5D渲染(图层属性里直接选)极低只能静态看图快速出效果图、排版配合
3D Map View(自带三维地图视图)低可旋转、缩放、导航日常分析、动态演示
Qgis2threejs插件导出Web三维中导出的HTML可交互成果分享、报告附件、局域网展示

值得注意的是,2.5D渲染和3D Map View的逻辑完全不同。2.5D是把二维图层的每个要素按照高度拉伸,适合给建筑面、地块之类做假三维立起来看;而3D Map View是真正以DEM的栅格高程值生成地形表面,精度上更接近真实,这也是我下面第二、三部分重点展开的内容。

1.3 为什么我最终选择QGIS而不是其他三维软件

拿ArcGIS Pro做对比的话,Pro的Scene功能确实更强,能做地下体和垂直剖面,但正版许可不便宜,学习成本也高。用专门的游戏引擎(比如Unity)导入DEM再做地形,自由度大但是对于非计算机背景的人来说实在不友好。QGIS走的是“够用就好”的路线:你只需要一个交互式三维地形,用于看趋势、对方案、做汇报,那它在10分钟内就能解决问题。如果是要出出版级山体阴影图,那另说,那个重点不在三维,而在2D制图。

所以我的结论是:如果你只是想在GIS工作流里加一个地形的空间认知环节,QGIS的三维完全够用,不需要额外引入重型软件。

2. 数据准备:从哪下载DEM、怎么导入才不出问题

2.1 DEM获取渠道与分辨率取舍

做三维展示的第一步是拿到一块完整、干净的DEM数据。目前最常用的几个来源:

  • OpenTopography:这个网站可以直接在网页框选范围下载SRTM、ALOS等全球DEM,支持输出GeoTIFF格式。热搜词里被反复提及的“opentopography dem downloader”就是它。
  • 地理空间数据云:国内访问快,有ASTER GDEM 30米和部分12.5米数据,不过注册有时要等审核。
  • NASA Earthdata:原始数据源,但下载流程比较繁琐,新手容易在授权的环节卡住。

分辨率选择上,12.5米数据(比如ALOS PALSAR)放在中小尺度区域做三维已经非常细腻,30米数据做全国范围或省级范围足够,太高分辨率(比如1米LiDAR)对于QGIS三维展示反而会带来极大的渲染负担。建议先下载大范围低分辨率的DEM做底,确定区域后再考虑加密。

2.2 导入QGIS前必须处理的三个细节

第一步是坐标系。国内用户经常拿到的是WGS84地理坐标(经纬度),直接做三维会出现一个严重问题:X、Y单位是度,Z单位是米,系统强制拉伸后地形会严重变形。我的做法是先用QGIS的“重投影”工具,把DEM转到当前区域的UTM投影坐标系(比如北半球中纬度用UTM 50N之类的带号)。操作路径在工具箱搜索Warp (Reproject),输出设置里选好目标CRS即可。

第二步是检查数据范围和空值。DEM数据经常在边界处有大片黑边(NoData区域),这些NoData在三维场景里会被渲染成窟窿,很难看。可以用栅格计算器将NoData赋成一个统一值,或者在三维场景里通过设置透明度过滤掉。实操中发现很多人在这一步栽跟头:明明三维场景有地形,但边界洞洞坑坑,就是NoData没处理干净。

第三步是数据预处理中的分割与合并。热搜词里有“gis中dem如何分割”,实际意思是如果一个市域范围DEM太大,一次加载内存吃不消,需要按行政区划或研究区裁剪。QGIS的Clip Raster by Extent或者Clip Raster by Mask Layer都可以,裁剪后用Build Virtual Raster把多块DEM虚拟合并成一个,并不需要实际拼接大文件。

2.3 DSM和DEM不要混用

热搜词里反复出现“dsm生成dem”,这是另一个常见误区。DEM是地表高程模型,纯地形;DSM是表面高程模型,包括树木、建筑。如果你用DSM做三维展示,山谷可能被树顶抬高、城市地块比实际地形突出几十米,会误导判断。如果生产项目里只有DSM,需要先做滤波处理生成DEM,再用DEM做三维。优先级上,DEM永远比DSM更适合做地形三维底图。

3. 实操:QGIS里把DEM变成三维的完整流程

3.1 快速出图:2.5D渲染的使用场景

如果你只是想在报告里放一张“假三维”的静态图,2.5D渲染是效率最高的方案。

在图层上右键打开图层属性,选择“符号系统”,渲染类型从“单波段假彩色”切换到“2.5 D”。这里需要设置高程属性为栅格值本身,在“Height”里选择DEM波段。给一个适当的垂直拉伸比例,比如50%,意思是Z方向拉伸为实际比例的50%,视觉效果会更夸张,适合表达平坦地区微小的地形变化。再把颜色用色带渲染(如高程分级色带)叠加一下,立体感和色彩层次就都出来了。

但2.5D的局限是它本质上是把栅格按高度拉伸成的“柱状物”,渲染出来其实更像一块实心蛋糕,并不是真实的地形曲面。适合快速出效果图,不适合做精细分析。要真正的三维表面,还需要往下看。

3.2 核心功能:3D Map View生成交互三维地形

QGIS的3D Map View是我目前常用的主力方案,步骤不复杂:

  1. 点击菜单“视图(View)”→“新建三维地图视图(New 3D Map View)”。会弹出一个新的三维面板。
  2. 在三维面板左侧工具栏上找到“配置”按钮(齿轮图标),进入地形参数设置。
  3. 在“地形(Terrain)”选项卡中,把“类型(Type)”选择为DEM (Raster Layer),然后在下面选择你的DEM图层。
  4. 关键参数“高程精度(Elevation)”建议设置为0.0,也就是直接用原始像元分辨率,不做抽稀,保证显示精度。如果数据量巨大,可以适当增大这个值,让渲染更快。
  5. “垂直拉伸比例(Vertical scale)”先设成1.0,看地形平缓就逐步调到2.0甚至4.0。

完成上述设置后,三维面板就会生成一个立体的地形表面,鼠标左键旋转视角,右键平移,滚轮缩放。此时如果觉得地表颜色太素,可以把DEM图层在普通二维视图中用山体阴影渲染,这样三维面板也会实时联动显示山体阴影效果。

3.3 垂直夸张值:理解Z因子为什么重要

很多人不理解为什么三维地形显示出来跟想象中不一样,其实问题多半出在垂直拉伸这个参数上。这里的原理涉及单位匹配:如果DEM是UTM投影坐标,X、Y单位是米,而高程单位也是米,那么垂直比例1.0代表一个完全真实、毫无夸张的地形。但真实地形在平缓地区(比如海拔高差只有两三百米)的起伏用肉眼看并不明显,所以视觉上需要放大Z轴。

我的经验数据:在平原地区(高差小于200米)展示地形时,垂直拉伸设为3.0效果比较好;在丘陵地区(高差200-1000米)设为1.5左右;在高山地区(高差超过1500米)就保持1.0或0.8,否则峡谷会被拉得过于深邃,影像观看。

注意,Qgis2threejs插件里也有一个类似的“Vertical Exaggeration”(垂直夸大)参数,它和三维地图面板里的垂直拉伸是一个概念。这里没有固定的标准答案,建议用三维面板反复拖动数值,找到视觉上最舒服的比例即可。重要提醒:如果你要把三维场景导出保存或者统计数据,这样的夸张比例仅用于可视化,不能用于定量测量,这一点需要在报告里注明。

3.4 用Qgis2threejs导出Web三维场景

如果你需要把三维场景发给没装GIS软件的同事或客户,Qgis2threejs插件是首选。它是QGIS的官方插件之一,功能是把当前QGIS的二维和三维内容导出成一个独立的HTML文件,浏览器打开即可交互查看。

安装方法很简单:菜单“插件”→“管理和安装插件”,搜索Qgis2threejs,点击安装。装好后在“网页”菜单中会多出一个“Qgis2threejs”入口。

操作要点:

  1. 先加载DEM,并设置好符号颜色。该插件在导出时会把当前图层的外观带进Web三维场景,所以在二维视图里把颜色渲染好很重要。
  2. 在Qgis2threejs界面中,把DEM图层勾选为“对于侧面显示(Side)”或“作为地形(DEM)”的模式。这个选择决定DEM是作为地面被贴图,还是作为生成的块状要素。
  3. 设置“垂直夸大值”,参考上面3.3的选择逻辑。
  4. 点击“导出”按钮,指定输出HTML文件位置。导出完成后用浏览器(Chrome、Edge)打开验证。实测下来场景加载速度与文件大小挂钩,一个县域30米DEM导出的HTML通常在20-80MB之间,浏览器打开时最好用本地文件,不要拖进在线网盘直接预览。

如果导出后看不到线条或颜色,先在QGIS主界面重新把项目保存一次,再重新导出。另外,这个插件对中文路径有时候会出现兼容问题,建议导出路径不要包含中文和空格。

3.5 二三维联动:把二维分析结果叠加到三维场景

三维DEM不一定只放裸地形,你还可以叠加上等高线、坡度分级、土地利用等矢量或栅格分析结果。比较实用的操作是:先在二维视图中把坡度图做好,然后让三维场景也显示这个坡度图层(只需在图层列表中勾选可见性)。

操作上,三维地图面板默认会同步显示主画布中所有勾选的矢量图层。所以只要在二维视图把需要展示的要素加上颜色标注,三维面板就会自动叠加显示,不需要手动一个个添加。这里有个小技巧:如果你加了标注文字,三维里文字的朝向不一定跟随地图方向,视觉上会乱,建议在展示时把标注先关掉。

4. 常见问题与排查技巧实录

4.1 DEM加载后三维面板里显示成一块平板

很多人第一次打开三维地图视图,发现地形完全没起伏,就是一整块色块。这个问题的原因通常是:地形类型没有选择DEM,还是默认的“平面(Flat)”。需要到三维配置面板的“地形”选项卡里,把类型从Flat切换成DEM (Raster Layer),再选中对应的DEM栅格图层。这不是软件bug,纯属操作不熟。

另外一种可能是你选择的DEM分辨率太大、数据范围太大,QGIS自动做了抽稀,导致细节丢失。检查“高程精度”参数,如果值大于10,就把它调成0.0,让每个像元都参与渲染。

4.2 三维场景出现黑洞或破碎面

如果你看到地形表面局部像被挖掉一块,大概率是原始DEM里有NoData空洞。这种空洞往往发生在水域、传感器遮挡区域或地形陡峭的雷达阴影区域。解决思路有两个:第一,用栅格计算器把NoData区域赋值为周围平均高程;第二,更简单——在图层属性透明度里,把NoData的颜色设置为完全透明,这样至少视觉上不是黑色的坑。我建议项目精度要求不高时用第二个方案,省时。

4.3 三维显示非常卡顿,拖动视角一帧一帧的

DEM数据量太大是首要原因。一个省域范围30米DEM,像元数量可能在几千万甚至上亿级别,单纯让CPU实时构建整个网格很吃力。解决办法通常有这几条:

  • 在三维配置中把“最大屏幕误差(Maximum allowed screen error)”从默认值调大,比如调到2.0或4.0。QGIS会自动在放大时加载高细节、缩小时加载低细节,流畅度提升明显。
  • 先把DEM按研究区裁剪缩小范围,再加载进三维场景。
  • 关闭三维面板的“高质量显示(High quality)”选项,在演示时可以牺牲一些画质换流畅操作。

4.4 三维场景颜色非常灰暗,不立体

这个需要区分是渲染问题还是视觉问题。如果DEM用的渐变色带类别太少,比如只有5个分类,颜色过渡会有断层感,看起来就不立体。建议用“单波段假彩色”渲染,色带选择Spectral或Terrain,类别至少分10段以上。如果觉得还不够立体,可以在DEM下方叠加一个半透明的山体阴影图层,三维面板里会形成“彩色叠加阴影”的效果,视觉上立刻有了起伏感。

4.5 导出Qgis2threejs的HTML打开以后不能缩放

不要慌,这是浏览器安全策略的问题。如果你的HTML文件存放在某个云盘中,通过在线链接打开,有些浏览器会限制本地文件权限,导致交互事件被阻止。正确做法是把HTML下载到本地,或者在服务器上部署为静态页面。如果在本地打开没有问题,那就说明场景文件本身是好的,问题出在在线预览方式。

4.6 常见问题速查表

现象可能原因快速修复
三维面板平板一块地形类型未选DEM配置→地形→类型选DEM(Raster Layer)
地形边界破洞原始数据NoData未处理设置NoData为透明,或补值
地形严重失真、像刺一样投影坐标未处理为投影系重投影到UTM坐标系后再展示
平缓区域看不出地形起伏垂直拉伸比例太小把垂直拉伸调到2.0-3.0
拖拽视角卡顿数据分辨率过高/范围过大增大最大屏幕误差或裁切数据范围
导出的HTML在浏览器打不开文件路径含中文/云盘访问权限保存到本地纯英文路径,用浏览器打开
DEM加载后全黑渲染拉伸方式不对在图层属性中改为“单波段假彩色”,选择“线性拉伸”

5. 数据配色、场景优化的进阶技巧

5.1 善用山体阴影叠加提升三维质感

裸DEM三维显示如果用单一色带,看久了感觉像塑料模型。要想在三维里呈现“立体光影”的效果,最简单的方式是在二维视图中给DEM叠加一个山体阴影图层,然后把山体阴影图层设为半透明(比如透明度50%)。三维面板会同步显示这个半透明阴影,地形表面的山脊线、沟壑走向会变得非常明显。这个技巧我几乎每次出地形图都会用,效果立竿见影,而且不增加任何额外计算负担。

具体操作:在工具箱搜索Hillshade(山体阴影),参数里的光源高度因子设置为45度,方位角默认315度即可。生成后把山体阴影图层放在DEM上方,右键图层“属性”里调透明度。三维面板里能看到透明阴影和彩色DEM叠加的最终效果。

5.2 矢量数据叠加进三维场景的“贴地”问题

实际上很多项目不仅需要展示DEM,还需要在三维地形上叠加道路、河流、建筑面等矢量信息。这部分我试过很多次,踩过不少坑。比较稳定的做法是把矢量图层叠放在DEM图层之上,但在三维可视化时,矢量要素默认是浮在地面之上的,需要勾选图层属性的“绘制要素在3D上”相关选项,否则线条会悬浮在半空中。

更稳妥的方案是通过Qgis2threejs插件导出前,先对矢量图层做“拉伸”处理。比如建筑面可以用数据定义的“高度”属性生成一个类似白色模型的效果,这就是热词里提到的“qgis建白模”的简化实现:把建筑底面根据楼层数拉伸成立方体,再叠加到DEM三维地形上,就能生成一个城市级的三维场景。虽然精细度不如专业三维软件,但胜在操作简单、数据量轻、还能保持空间参考一致。

5.3 大场景下用金字塔与缓存策略加速展示

当你需要展示整个流域或省域范围DEM时,即使裁剪过,数据量依然不小。我的做法是先在QGIS中把原始DEM生成“概览金字塔(Overviews)”,方法是图层属性→“金字塔”选项卡→点击生成。这样QGIS在三维场景缩小视野时,会自动调用低分辨率范围的概览,避免实时读取超大原始数据。生成金字塔后,三维漫游的流畅度会有质的提升。这个步骤很多人会忽略,实际上它比改任何三维参数都有效。

6. 关于QGIS三维DEM展示的个人心得

在实际项目里,我总结了一套适合自己的流程:先用OpenTopography下载小范围DEM,用QGIS重投影到UTM,顺手做好山体阴影和配色,然后用3D Map View做日常的判读和检查,最后用Qgis2threejs导出让同事在浏览器里复核。整个过程30分钟到一个小时基本能走通,比起以前用商业三维平台动辄半天的数据转换,效率提升不是一星半点。

最后想单独提一点:很多人在三维场景里纠结于颜色好不好看,花大量时间去调色带,实际上对于DEM三维展示来说,色调的准确性和地形细节的纹理清晰度远大于色调的鲜艳程度。你先保证数据准确、坐标正确、拉伸合理,再考虑视觉风格。如果你在做的过程中遇到新的奇怪问题,不妨先重启QGIS清一下缓存,再检查数据范围,大部分问题都能在数据层面找到原因。这套流程我现在已经形成肌肉记忆了,希望写出来对你也有参考价值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 9:39:02

猫情绪识别数据集:YOLO多标签标注与细粒度行为分析

1. 这不是一张“猫图”,而是一套能教会AI读懂猫脸的“情绪教科书” 你有没有试过盯着自家猫主子看它打哈欠、眯眼、甩尾巴——然后心里嘀咕:“它现在是生气?无聊?还是在盘算怎么半夜踹你脸?” 我们人类靠经验、直觉甚…

作者头像 李华
网站建设 2026/9/30 9:37:57

基于YOLO的猫情绪检测数据集实战:3200张图片训练与部署指南

1. 猫情绪检测数据集的项目缘起与整体设计思路做宠物行为识别这个方向的人,大概率都经历过一个尴尬阶段:模型在公开数据集上跑得挺漂亮,一换到自己拍的猫片就拉胯。原因不复杂——猫的情绪表达极其微妙,耳朵转15度、尾巴尖抖一下、…

作者头像 李华
网站建设 2026/9/30 9:37:52

校园操场航拍人体检测数据集:专治YOLO小目标漏检

1. 这不是一张“随便拍的操场照片”,而是一套专为YOLO航拍人体检测打磨的真实场景数据集你手头那张无人机飞到30米高空、俯拍整个校园操场的图,如果只是发朋友圈配个“阳光真好”,那它就只值3秒浏览;但如果你把它标注成带边界框的…

作者头像 李华
网站建设 2026/9/30 9:37:35

分布式对象存储实战:分桶索引与段文件调优

简介:2025华为软件精英挑战赛初赛任务书PDF,聚焦分布式对象存储系统的优化设计与实现,适合具备分布式存储基础的参赛选手与技术人员。文档从赛题背景、系统架构入手,完整覆盖对象冗余机制、对象标签、存储介质(硬盘&am…

作者头像 李华
网站建设 2026/9/30 9:36:45

SSD+MobileNet+KCF:地铁客流检测复现全指南

简介:基于深度学习的地铁客流实时监测PDF文档,面向轨道交通运营管理人员、智能交通从业者及深度学习目标检测方向的研究人员,针对传统人工统计、红外感应、三辊闸等客流监测方式精度低、影响通行等问题,提出以SSD算法为核心、Mobi…

作者头像 李华
网站建设 2026/9/30 9:36:38

基于YOLOv8与传统视觉的森林火灾双通道识别方案

简介:基于计算机视觉的森林火灾识别算法设计,面向计算机视觉、人工智能与森林防火交叉领域的学习者和研究人员。资源从图像获取、图像预处理、特征提取、火灾识别到火灾预警,系统梳理了一套完整的检测流程;其中对颜色、纹理、形状…

作者头像 李华