欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > Google Earth Engine 中地形晕渲图(Hillshade)的实现与应用

Google Earth Engine 中地形晕渲图(Hillshade)的实现与应用

2025/4/29 10:34:05 来源:https://blog.csdn.net/lestatlu/article/details/147598057  浏览:    关键词:Google Earth Engine 中地形晕渲图(Hillshade)的实现与应用

引言

在地理信息科学和遥感领域,地形晕渲图(Hillshade)是一种非常有用的可视化工具,它能够通过模拟光照效果,突出显示地形的起伏和地貌特征,帮助我们更直观地理解地形数据。Google Earth Engine(GEE)作为一个强大的地理空间数据分析平台,提供了丰富的工具和方法来处理和可视化地形数据。本文将详细介绍如何在 GEE 中利用 SRTM 数字高程模型(DEM)数据计算并可视化不同太阳方位角下的地形晕渲图。

一、代码实现步骤详解

1.1 角度转换函数定义

// 定义一个将角度从度转换为弧度的函数
function radians(img) {return img.toFloat().multiply(Math.PI).divide(180);
}

这个函数的作用是将输入的图像数据(表示角度,单位为度)转换为弧度制。在后续的计算中,三角函数(如正弦、余弦)需要使用弧度制的角度值,因此这个转换是必要的。

1.2 地形晕渲图计算函数定义

// 定义一个根据地形数据计算地形晕渲图的函数,输入为太阳方位角、太阳天顶角、坡度和坡向
function hillshade(az, ze, slope, aspect) {// 将角度转换为弧度var azimuth = radians(ee.Image(az));var zenith = radians(ee.Image(ze));// 注意,对图像进行计算时需要使用图像对象的方法。// 即 JavaScript 中的运算符(如 +、-、/、*)不能直接用于图像。// 以下实现了:// 地形晕渲值 = cos(太阳方位角 - 坡向) * sin(坡度) * sin(太阳天顶角) +//             cos(太阳天顶角) * cos(坡度)return azimuth.subtract(aspect).cos().multiply(slope.sin()).multiply(zenith.sin()).add(zenith.cos().multiply(slope.cos()));
}

该函数根据给定的太阳方位角(az)、太阳天顶角(ze)、坡度(slope)和坡向(aspect)数据,按照特定的公式计算地形晕渲值。通过将角度转换为弧度,并使用 GEE 中图像对象的方法进行数学运算,最终得到表示地形晕渲效果的图像。

1.3 地形数据获取与处理

// 从 SRTM90_V4 数据集中获取地形数据并计算地形指标
var terrain = ee.Algorithms.Terrain(ee.Image('CGIAR/SRTM90_V4'));
var slope = radians(terrain.select('slope'));
var aspect = radians(terrain.select('aspect'));

这里使用 ee.Algorithms.Terrain 方法从 CGIAR/SRTM90_V4 数据集中获取地形数据,并计算出坡度(slope)和坡向(aspect)。然后,将坡度和坡向数据从度转换为弧度,以便后续在 hillshade 函数中使用。

1.4 地形晕渲图可视化

// 设置地图中心位置
Map.setCenter(-121.767, 46.852, 11);
// 循环遍历不同的太阳方位角,计算并添加地形晕渲图图层到地图上
for (var i = 0; i < 360; i += 60) {Map.addLayer(hillshade(i, 60, slope, aspect), {}, i + ' deg');
}

首先,使用 Map.setCenter 方法设置地图的中心位置为经度 -121.767,纬度 46.852,缩放级别为 11。然后,通过一个 for 循环,以 60 度为间隔,遍历从 0 度到 360 度的太阳方位角。对于每个方位角,调用 hillshade 函数计算对应的地形晕渲图,并使用 Map.addLayer 方法将其添加到地图上,图层名称为当前的太阳方位角(单位为度)。

二、结果展示与分析

通过上述代码的运行,我们可以在 GEE 的地图界面上看到不同太阳方位角(0 度、60 度、120 度、180 度、240 度、300 度)下的地形晕渲图。这些晕渲图通过模拟不同方向的光照,突出了地形的起伏和地貌特征。例如,当太阳方位角与地形的坡向一致时,该坡面会显得更亮;而当太阳方位角与坡向相反时,坡面则会显得更暗。这种可视化效果有助于我们更直观地理解地形的形态和结构。

三、总结与拓展

本文详细介绍了在 Google Earth Engine 中计算和可视化地形晕渲图的方法。通过定义角度转换函数、地形晕渲图计算函数,获取和处理地形数据,并进行可视化,我们成功地展示了不同太阳方位角下的地形晕渲效果。在实际应用中,我们可以进一步拓展这些方法,例如结合不同的 DEM 数据集、调整太阳天顶角、分析不同区域的地形特征等。希望本文能够为地理信息科学和遥感领域的研究人员和爱好者提供有益的参考,帮助他们更好地利用 GEE 进行地形数据分析和可视化。

如果你在使用 GEE 进行地形晕渲图计算和可视化的过程中遇到任何问题,或者有其他相关的想法和经验,欢迎在评论区留言交流!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词