赞
踩
本文分享利用数字高程模型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'); }
代码运行结果如下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。