山体阴影
· 阅读需 5 分钟
什么是山体阴影
“山体阴影”(Hillshade,也叫地形阴影或地形晕渲)是地理信息系统(GIS)中一种常见的地形可视化技术,用于根据数字高程模型(DEM)模拟太阳照射下的地形明暗效果,让地形起伏更直观。
核心原理简述
山体阴影的生成,本质上是**光照模型(Lighting Model)**在数字高程模型(DEM)上的应用。 整个计算链如下:
DEM(高程栅格) → 局部坡度/坡向 → 法向量(Normal)→ 光线方向(Light Vector)→ 光照计算 → 灰度阴影值
即通过模拟光线与地形表面的角度关系,求出每个像元的明暗程度。
最终的亮度计算可概括为:
其中:
- :单位法向量(由DEM梯度计算)
- :单位光线方向向量(由太阳方位角、太阳高度角定义)
- :二者的点积,表示光线与坡面的夹角余弦,决定明暗
- 其余参数控制不同的物理尺度或视觉表现
参数简介
LightDirection (太阳方位角) & ZenithAngle(太阳高度角)
这两者决定了光线方向向量 。
光线向量分量:
- LightDirection(Azimuth):控制光从哪边照来(如西北315°、东90°)。
- ZenithAngle(Altitude):控制光线与地面的夹角(0°=地平线,90°=正顶)。
👉 对应效果:
- 方位角:改变阴影朝向;
- 高度角:改变阴影长度、立体感强弱。
AmbientIntensity(环境光强度) 与 LightIntensity(直射光强度)
两者共同定义光照方程的亮度组成。
基本形式(朗伯光照模型):
- AmbientIntensity:无方向的柔光,防止背光区全黑;
- LightIntensity:有方向的直射光,决定明暗对比度。
ElevationFactor(高程–平面换算因子)
DEM 的高程单位(Z轴)可能与水平坐标(X/Y轴)单位不一致(尤其经纬度 DEM)。
- 若坐标为经纬度(°),需将高程(m)换算成角度尺度;
- 若坐标为米制(如UTM、Web Mercator),可设为 1。
这是为了保持在计算法向量时,地形坡度的几何比例真实。 否则山体会被“压扁”或“过度夸张”。
Extrusion(拉伸因子)**
这实际上是对 Z 值的视觉夸张因子,用于强调地形起伏。 在计算法向量时,Z 值会乘以:
效果:
- 小比例尺 DEM(分辨率粗):适当放大(如 5~8)以增强立体感;
- 高精度 DEM(如 10m):值可设 1~2。
参数汇总表
| 参数 | 中文名称 | 常见取值* | 作用机理 | 调整效果 & 建议 |
|---|---|---|---|---|
| LightDirection | 太阳方位角(°,顺时针自北) | 0 – 360(默认 315° = 西北) | 太阳方位角,决定光从哪边照来,控制“阴影朝向”。 | - 早晨效果:90°(东)- 中午偏南:180°- 常见“北西向光”凸显南坡:315° |
| ZenithAngle | 太阳高度角(°,0=地平线,90=正顶) | 0 – 90(默认 45°) | 太阳高度角 | - 低角度(10°):阴影拉长,立体感强,但山谷易过暗。- 高角度(60°+):阴影短,效果柔和,堆叠阴影少。 |
| LightIntensity | 直射光强度 | 0 – 1(默认 0.7 ~ 1.0) | 朗伯项的系数,越大明暗差越大。 | - 与 AmbientIntensity 的相对比例才重要。一般 LightIntensity + Ambient ≈ 1。- 若想突出山脊,可把 LightIntensity 提到 1.2,并适当降低 Ambient。 |
| AmbientIntensity | 环境光强度 | 0 – 1(默认 0.6 ~ 0.9) | 在朗伯光照模型中加入一条“到处都有的柔光”,公式:I = N·L × LightIntensity + Ambient。 | - 提高可见暗部细节,防止背光区域完全黑。- 过高:阴影发灰、立体感削弱;过低:对比度过强、细节丢失。- 若想表现“夕阳侧光”可把 Ambient 设低一些(≈ 0.3)。 |
| ElevationFactor | 海拔因子 / 高程–平面换算因子 | 取决于坐标系- 经纬度 DEM:1 / (地球周长×度数) ≈ 1/(111 km);- 同单位平面坐标:1 | 把 Z 高程转换到与 X/Y 相同量纲,否则在 3D 叉积中比例失真。 | - 如果 DEM 单位已是米而坐标系是 Web Mercator/UTM 的米,可以直接设 1。- 如果是经纬度(°)+ 高程(m),需乘约 0.000009(即 1 m ≈ 9e-6°)。 |
| Extrusion | 拉伸因子 | 0 – 10(默认 1 ~ 5) | 与 ElevationFactor 相乘后用于 夸张地形起伏。 | - 数值越大,山峰越尖锐、沟谷越深;0 表示完全平坦阴影。- 大比例尺(10 m DEM)通常 1 ~ 2;小比例尺(90 m DEM)可放大到 5 ~ 8。 |
四种预设效果
为了方便用户使用,XinGEO预设了四种模式
| 预设 | LightDirection(°,顺时针自北) | ZenithAngle(°,光源高度) | LightIntensity | AmbientIntensity | Extrusion* | 适用场景与视觉效果 |
|---|---|---|---|---|---|---|
| 晨光 | 90°(正东) | 20 – 30° | 0.85 | 0.4 | 2 | 长阴影、对比强,强调山脊朝西侧投影;适合凸显晨曦氛围。 |
| 正午 | 180°(正南) | 70 – 80° | 0.6 | 0.55 | 1.5 | 阴影最短,立体感柔和;适合作底图与叠加图层共用时不抢视觉焦点。 |
| 夕阳 | 270°(正西) | 15 – 25° | 0.9 | 0.35 | 2 | 与晨光对称但方向相反;夕照金黄、山谷朝东侧拉长阴影。 |
| 夜光(月光/微光) | 315°(西北,常见“斜上方月光”) | 60° | 0.3 | 0.7 | 1.5 | 几乎无强直射,靠高环境光呈现柔和暗调;可用于暗色系底图或夜景模式。 |
为地形数据增加山体阴影
在栅格数据使用分级填色时,可以使用山体阴影,这里以全球海陆地形栅格数据为例。

下面为四种效果,依次为晨光、正午、夕阳、夜光。



