当前位置: 首页 > ai >正文

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 进行地形晕渲图计算和可视化的过程中遇到任何问题,或者有其他相关的想法和经验,欢迎在评论区留言交流!

http://www.xdnf.cn/news/2556.html

相关文章:

  • Java SE(4)——方法详解
  • Rust 学习笔记:关于切片的两个练习题
  • 复现:Mamba-UNet:降水临近预报的创新解决方案
  • LBS服务(基于位置的服务)与LLM(大型语言模型)交互功能分析
  • Vue+Echarts 3D地图效果
  • 配置扩展ACL
  • 前端连接websocket服务报错 Unexpected response code: 301
  • GTC2025全球流量大会:领驭科技以AI云端之力,助力中国企业出海破浪前行
  • Typecho博客使用阿里云cdn和oss:handsome主题进阶版
  • Vue 中局部指令(directives)的用法详解
  • STM32 RTC配置
  • JavaScript 中的类(Class)语法
  • Vue 组件通信方式总览
  • OpenCV 图形API(70)图像与通道拼接函数-----创建一个图像或矩阵(GMat)的副本的操作函数copy()
  • Maven多模块工程版本管理:flatten-maven-plugin扁平化POM
  • 打火机检测数据集VOC+YOLO格式925张1类别
  • 使用POI和EasyExcel使用导入
  • 实战指南:搭建AIRIOT全场景智慧养老管理平台系统全流程解析
  • 2025系统架构师---基于规则的系统架构风格‌
  • 【硬件系统架构】哈佛架构
  • Linux 内核网络协议栈中的关键数据结构:inet_skb_parm 与 ip_options
  • 媒体查询使用
  • 《Go 语言高并发爬虫开发:淘宝商品 API 实时采集与 ETL 数据处理管道》
  • 无刷空心杯电机及机器人灵巧手的技术解析与发展趋势
  • 关系型数据库的SQL语句
  • Paramiko 完全指南
  • 2. 第一个网页:前端基础入门
  • MySQL 表的约束(二)
  • 数据结构*栈
  • 微信小程序连续多个特殊字符自动换行解决方法