博客
关于我
Earth Engine下地表温度反演
阅读量:570 次
发布时间:2019-03-11

本文共 1876 字,大约阅读时间需要 6 分钟。

地表反射率与NDVI计算的优化方案

ENNVIH-IDL技术在ENVISh平台上的应用,使得在地球工程平台(GEE)中实现了本原有的NDVI计算,这一过程在技术细节上有几个关键改动与思考。不同于传统方法,本文采用经过大气校正的地表反射率产品作为计算基础,这一改动在实践中确实带来了较小的差异性提升。

项目背景

该项目基于Landsat-8的表面反照率和原始场景数据,通过算法实现了地表辐射传输方程的应用。需要特别注意的内容包括:

  • 代码中第44行与第45行需要自行替换,校验过程中可以通过过滤功能找到对应内容
  • 过程中涉及到的三个参数需要根据需求从NASA获取,中心经纬度可通过地图编辑功能获取

计算方法

本项目采用分阶段的方法完成计算过程:

  • 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平台开发的初学者,本人在实现过程中遇到了一些特定难点,主要体现在以下几个方面:

    • JavaScript编程习惯尚未完全培养,代码规范性有待提高
    • 初始阶段未能完全理解GEE平台上某些核心函数的内部机制
    • 解决image.divide无法顺利执行的问题时,采取了间接的image.divide(image.multiply(image))方式

    这一点需要进一步学习与改进。

    整体思路总结

    本项目以辐射传输方程为理论基础,结合实际应用场景,对传统NDVI计算方法进行了优化。虽然在实现过程中遇到了不少技术挑战,但通过耐心调试与不断学习,最终实现了预期的效果。以后有条件的情况下,将进一步学习分裂窗算法,以进一步提升计算效率与精度。

    यह也是我在GEE平台初次独立开发项目的成果,包含一些技术实现与个人成长的心路历程。

    转载地址:http://tbtvz.baihongyu.com/

    你可能感兴趣的文章
    nginx上配置phpmyadmin
    查看>>
    HustOJ二次开发之修改数据库连接池
    查看>>
    redis集群报错:(error) CLUSTERDOWN Hash slot not served
    查看>>
    一个JAVA应用启动缓慢问题排查 --来自jdk securerandom 的问候
    查看>>
    spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
    查看>>
    httprunner学习23-加解密
    查看>>
    有道云笔记 同步到我的博客园
    查看>>
    阿里云“网红"运维工程师白金:做一个平凡的圆梦人
    查看>>
    李笑来必读书籍整理
    查看>>
    http头部 Expect
    查看>>
    Hadoop(十六)之使用Combiner优化MapReduce
    查看>>
    《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
    查看>>
    CoreCLR源码探索(八) JIT的工作原理(详解篇)
    查看>>
    IOS开发Swift笔记16-错误处理
    查看>>
    flume使用中的一些常见错误解决办法 (地址已经使用)
    查看>>
    andriod 开发错误记录
    查看>>
    C语言编译错误列表
    查看>>
    看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
    查看>>
    张一鸣:创业7年,我经历的5件事
    查看>>
    SQL基础语法
    查看>>