地形投射阴影
根据高程栅格和指定太阳位置计算地形投射阴影。
功能说明
可直接填写太阳高度角和方位角,也可使用日期、时间及时区,通过 SOLPOS 算法计算太阳位置,再根据地形生成阴影掩膜。两种方式择一使用。结果描述指定时刻地形遮挡太阳直射光的区域,不直接表示辐射强度或累计日照时数。
参数说明
| 参数 | 说明 | 必填 | 默认值 |
|---|---|---|---|
| 输入高程栅格 | 计算地形遮挡的高程栅格。 | 是 | 空 |
| 观测点矢量 | 日期时间方式使用的参考点,仅允许一个有效点;留空使用计算区域中心。 | 否 | 空 |
| 太阳高度角 | 直接指定太阳位置时与方位角一起填写,表示太阳相对地平面的高度,单位度;GRASS 范围为 0–89.999°。 | 条件必填 | 空 |
| 太阳方位角 | 从北顺时针计量,单位度;与高度角一起填写,范围为 0–360°。 | 条件必填 | 空 |
| 年份 | 日期时间方式填写,1950–2050。 | 条件必填 | 空 |
| 月份 | 日期时间方式填写。 | 条件必填 | 空 |
| 日期 | 日期时间方式填写。 | 条件必填 | 空 |
| 小时 | 日期时间方式填写,零点可填 0。 | 条件必填 | 空 |
| 分钟 | 日期时间方式填写,可填 0。 | 条件必填 | 空 |
| 秒 | 日期时间方式使用。 | 否 | 0 |
| 时区 | 日期时间方式填写,相对 GMT 东为正;北京时间填 8。 | 条件必填 | 空 |
| 包含零高程值 | 启用后不忽略零高程。 | 否 | 关闭 |
| 输出太阳阴影掩膜栅格 | 结果保存位置。 | 是 | 空 |
输出结果
生成地形阴影掩膜栅格。GRASS GIS 原生 r.sunmask 输出使用以下约定,并不是普通的 0/1 二值栅格:
| 像元值 | 原生含义 |
|---|---|
1 | 被地形遮挡的阴影区。 |
| NULL | 未标记为地形阴影的区域。 |
昕图输出的 NoData 还可能涉及输入高程无效区域,不能仅凭输出 NoData 断定对应像元有效且未受遮挡。分析时应结合原始高程栅格的有效区域。
如需用于统计或栅格叠加,可在后续栅格计算中以原始 DEM 的有效范围为掩膜:DEM 无效处保留 NoData,DEM 有效且阴影掩膜为 NoData 的位置设为 0,阴影值 1 保持为 1。这是后处理思路,不是本工具已提供的输出选项;应先核实结果与输入有效区域的一致性。
使用步骤
- 打开【计算工具箱】→【GRASS GIS】→【栅格工具】→【太阳分析】→【栅格计算(SUNMASK)】。
- 选择高程栅格,填写一组太阳角度或日期时间参数,设置输出并运行。
使用示例
示例项目 grass-栅格计算(SUNMASK) 选择 aoi_15km_dem_30m.tif,设置太阳高度角 30°、方位角 180°,其余保持默认。结果 aoi_15km_dem_30m_grass_r_sunmask_6时.tif 为 EPSG:3857、470 × 417 像元的栅格;项目统计中的有效值为 1,NoData 为 255。

注意事项
- 方位角从北顺时针计算:东为 90°,南为 180°。
- 高程数据范围和缺失区域可能影响遮挡判断;区域外的地形不会自动补充。
- 根据日期计算时,请正确设置时区,并考虑当地夏令时。
- 结果由输入高程表面决定;普通地形 DEM 不包含的建筑物、树木遮挡不会被单独计算。
- 太阳高度角和方位角变化会改变阴影位置;低太阳高度角下,区域边缘和范围外地形对结果的影响尤其值得关注。
相关工具
- 地形地平线角计算:计算指定方向上的地形遮挡角。
- 栅格计算(VIEWSHED):分析指定观察点的可见区域。
- 栅格计算(SUN):计算太阳入射角及辐射相关栅格。
技术参考
GRASS GIS 原生模块 r.sunmask。