跳到主要内容

地形投射阴影

根据高程栅格和指定太阳位置计算地形投射阴影。

功能说明​

可直接填写太阳高度角和方位角,也可使用日期、时间及时区,通过 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。这是后处理思路,不是本工具已提供的输出选项;应先核实结果与输入有效区域的一致性。

使用步骤​

  1. 打开【计算工具箱】→【GRASS GIS】→【栅格工具】→【太阳分析】→【栅格计算(SUNMASK)】。
  2. 选择高程栅格,填写一组太阳角度或日期时间参数,设置输出并运行。

使用示例​

示例项目 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。