首页 > 编程问答 >将原始 DN(数字编号)转换为物理单位

将原始 DN(数字编号)转换为物理单位

时间:2024-06-07 14:48:29浏览次数:21  
标签:google-earth-engine

本文 中的代码是关于数组排序(和还原)的。我的疑问是关于在热带中添加 149.0 以执行缩放因子。

特定代码片段:

 // 将缩放因子应用到相应的波段。
  var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);

当然,特别选择 149.0 的原因是基于科学研究提供的校准系数,以准确反映原始传感器读数与它们所代表的物理属性之间的关系 但是 为什么是 149?MTL 文档中的 RADIANCE_ADD_BAND_10/11 显示的数字不是 149,而是通常的 0.1。甚至 RADIANCE_MULT_BAND_10/11 的值也是 0.00341802,而不是 0.000341。

能否给我提供任何论文链接,说明和计算更改 149 和 0.0003 等文档值背后的原因?


是对的,Landsat 8 级 1 产品的 MTL 文件中的热波段辐射定标系数通常显示 RADIANCE_ADD_BAND_10 RADIANCE_ADD_BAND_11 约为 0.1, RADIANCE_MULT_BAND_10 RADIANCE_MULT_BAND_11 约为 0.003418。

代码片段中使用的公式(乘以 0.00341802 并加上 149.0)似乎 用于直接将热红外 (TIR) 波段的数字数 (DN) 转换为光谱辐射率。相反,它看起来像将 DN 转换为 摄氏度 (°C) 的公式。

以下是该细分的说明:

  1. 将 DN 转换为光谱辐射率: MTL 文件中提供的系数用于将 TIR 波段的 DN 转换为光谱辐射率。此转换的公式为:

Radiance = (RADIANCE_MULT_BAND * DN) + RADIANCE_ADD_BAND

  1. 将光谱辐射率转换为摄氏温度: 进行此转换需要使用热常数 K1 和 K2,这些常数在 Landsat 8 MTL 文件中以 K1_CONSTANT_BAND_10/11 K2_CONSTANT_BAND_10/11 的形式提供。然后使用以下公式将光谱辐射率转换为亮度温度(以开尔文为单位):

Brightness Temperature (K) = K2_CONSTANT / ln((K1_CONSTANT / Radiance) + 1)

  1. 将开尔文转换为摄氏度: 最后,通过从开尔文温度中减去 273.15,将亮度温度从开尔文转换为摄氏度:

Celsius = Kelvin - 273.15

提供的代码片段中的公式(乘以 0.00341802 并加上 149.0)似乎是 步骤 1 和 2 的简化组合 ,可能针对特定的 Landsat 8 场景或数据集进行了校准。 149.0 的加数可能是通过将 K1 和 K2 常数合并到单个值中得到的近似值,从而可以直接从 DN 转换为摄氏度。

遗憾的是,如果没有有关使用此特定公式的更多上下文或参考资料,就很难提供 149.0 值的确切推导。 可能是 Google Earth Engine 中使用的简化方法或基于特定数据集的校准。

若要找到更准确的解释,我建议执行以下操作:

  • 查看 Google Earth Engine 文档: 检查是否有关于 Landsat 8 热波段处理的特定文档或教程,这些文档或教程可以阐明所使用的公式。
  • 搜索 Google Earth Engine 论坛: 其他人可能遇到过类似的问题,或者开发人员可能在论坛上提供了见解。
  • 检查代码存储库或脚本: 如果此代码片段来自更广泛的项目或分析,请查看是否有任何随附的文档或注释可以提供上下文信息。

请记住,直接使用 MTL 文件中提供的系数和方程式将始终是将 Landsat 8 热波段的 DN 转换为光谱辐射率或温度的最准确和最可靠的方法。

标签:google-earth-engine
From: 78590299

相关文章