本文共 1876 字,大约阅读时间需要 6 分钟。
ENNVIH-IDL技术在ENVISh平台上的应用,使得在地球工程平台(GEE)中实现了本原有的NDVI计算,这一过程在技术细节上有几个关键改动与思考。不同于传统方法,本文采用经过大气校正的地表反射率产品作为计算基础,这一改动在实践中确实带来了较小的差异性提升。
该项目基于Landsat-8的表面反照率和原始场景数据,通过算法实现了地表辐射传输方程的应用。需要特别注意的内容包括:
本项目采用分阶段的方法完成计算过程:
Land Surface Emissivity(地表辐射辐射率)计算
该过程基于表面反照率数据,通过分段计算各部分贡献率,最后综合计算出地表辐射辐射率值。Blackbody Radiance(黑体辐射)计算
利用优化后的辐射参数,结合地表辐射率值,计算出仅考虑温度变化的辐射强度Land Surface Temperature(地表表面温度)计算
通过辐射传输方程,结合上述agnostic radiance参数值,得到标准天气下地表表面温度数据代码核心部分基于以下函数实现:
// 获取地表辐射辐射率(LSE)function LSECalculation(SRImage) { var NDVI = SRImage.normalizedDifference(['B5','B4']); // 由于write-up过程中需自行替换44、45行内容,具体逻辑已在上述函数中实现 ... return lse;}// 获取镜辐射强度(BBR)function BBRCalculation(t, up, down, lse, rad) { var temp = (1 - lse).multiply(down).multiply(t); var bbrad = rad.subtract(temp).divide(lse.multiply(t)); return bbrad;}// 计算地表表面温度(LST)function LSTCalculation(bbrad) { var temp = bbrad.multiply(77489).divide(bbrad).subtract(bbrad).add(1).log(); var lst = temp.multiply(132108).divide(temp).subtract(273); return lst;}// 主算法var l8lsr = ee.Image('LANDSAT/LC08/C01/T1_SR/LC08_129038_20170501'), l8raw = ee.Image('LANDSAT/LC08/C01/T1/LC08_129038_20170501'), lse = LSECalculation(l8lsr), rad = ee.Algorithms.Landsat.calibratedRadiance(l8raw).select('B10');var t = 0.76, // 参数获取自NASA官方资料 up = 1.95, down = 3.2, bbrad = BBRCalculation(t, up, down, lse, rad), lst = LSTCalculation(bbrad);
作为从新接触GEE平台开发的初学者,本人在实现过程中遇到了一些特定难点,主要体现在以下几个方面:
image.divide
无法顺利执行的问题时,采取了间接的image.divide(image.multiply(image))
方式这一点需要进一步学习与改进。
本项目以辐射传输方程为理论基础,结合实际应用场景,对传统NDVI计算方法进行了优化。虽然在实现过程中遇到了不少技术挑战,但通过耐心调试与不断学习,最终实现了预期的效果。以后有条件的情况下,将进一步学习分裂窗算法,以进一步提升计算效率与精度。
转载地址:http://tbtvz.baihongyu.com/