博客
关于我
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/

    你可能感兴趣的文章
    PDF.js —— vue项目中使用pdf.js显示pdf文件(流)
    查看>>
    我用wxPython搭建GUI量化系统之最小架构的运行
    查看>>
    我用wxPython搭建GUI量化系统之Sizer布局管理与页面切换
    查看>>
    我用wxPython搭建GUI量化系统之多只股票走势对比界面
    查看>>
    我用wxPython搭建GUI量化系统之财务选股工具添加日历和排序
    查看>>
    selenium+python之切换窗口
    查看>>
    重载和重写的区别:
    查看>>
    搭建Vue项目步骤
    查看>>
    linux 编译出现的错误
    查看>>
    账号转账演示事务
    查看>>
    idea创建工程时错误提醒的是architectCatalog=internal
    查看>>
    SpringBoot找不到@EnableRety注解
    查看>>
    简易计算器案例
    查看>>
    在Vue中使用样式——使用内联样式
    查看>>
    Find Familiar Service Features in Lightning Experience
    查看>>
    Explore Optimization
    查看>>
    Kali Linux 内网渗透教程 - ARP欺骗攻击 | 超详细
    查看>>
    2020Java程序设计基础(华东交通大学)章节测试免费满分答案
    查看>>
    OpenCV-未定义符号:hb_font_funcs_set_variation_glyph_func
    查看>>
    小程序之wx:request(转)
    查看>>