Google Earth Engine(GEE)实例代码学习五——计算山体阴影(HillShade)

标题

本文分享利用数字高程模型SRTMS数据,模拟太阳方位角由0到360度变化的山体阴影。

首先引入计算山体阴影的计算公式
二、山体阴影计算方法
山体阴影的计算公式如下
(1) Hillshade = cos(Zenith) * cos(Slope)+cos(Azimuth - Aspect) * sin(Slope) * sin(Zenith)
其中,Zenith是太阳天顶角的的弧度数,Slope是某一点的坡度弧度数,Azimuth是指太阳方位角弧度数,Aspect是某一点的坡向弧度数。

实例代码如下

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

//定义计算山体阴影函数
function hillshade(az, ze, slope, aspect) {
  var azimuth = radians(ee.Image(az));//太阳方位角
  var zenith = radians(ee.Image(ze));//太阳天顶角
  //山体阴影计算公式如上
  return azimuth.subtract(aspect).cos()
    .multiply(slope.sin())
    .multiply(zenith.sin())
    .add(zenith.cos().multiply(slope.cos()));
}

//引入GEE自带计算数字高程模型的函数
//‘Terrain’计算得到影像的高程,坡度,坡向,山体阴影
var terrain = ee.Algorithms.Terrain(ee.Image('CGIAR/SRTM90_V4'));
var slope = radians(terrain.select('slope'));
var aspect = radians(terrain.select('aspect'));
//位置大概位于北京
Map.setCenter(116, 39.9, 11);
//模拟太阳方位角从0到360度分别显示
for (var i = 0; i < 360; i += 60) {
  Map.addLayer(hillshade(i, 60, slope, aspect), {}, i + ' deg');
}

代码运行结果如下
在这里插入图片描述

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值