QingDouHY 2024-04-20 21:04 采纳率: 33.3%
浏览 57
已结题

Landsat8计算LST没有大气透过率等参数

img


看了一些讲解回答,找不到这个文件

img


USGS的注册一直收不到邮件(谷歌邮箱)

img


这个文件是温度文件吗

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-20 21:04
    关注

    引自免费微信小程序:皆我百晓生

    要计算Landsat 8 的地表温度(LST),你需要Landsat 8 的辐射校正产品,通常是Level-2 Surface Temperature Bands。根据你的描述,你似乎已经访问了USGS EROS (Earth Resources Observation and Science Center) 网站,并找到了一些L1TP产品,这些是Level-1 Top of Atmosphere (TOA) 数据,它们尚未进行辐射校正和大气校正。

    为了得到LST,你需要下载的是经过辐射校正和大气校正的Level-2产品。在USGS EarthExplorer网站上,你应该选择Landsat Collection 2 Level-2 Thermal Infrared产品。如果你还没有收到确认邮件,可以尝试以下步骤:

    1. 检查垃圾邮件箱:有时候确认邮件可能被误分类到垃圾邮件。
    2. 等待一段时间:确认邮件可能因为网络延迟而稍有延迟。
    3. 重新请求确认邮件:如果长时间未收到,尝试重新注册或者联系客服( custserv@usgs.gov)询问情况。
    4. 使用其他邮箱:有时某些邮箱服务提供商可能会阻止来自特定域的邮件,试试使用不同的邮箱地址。

    一旦你能成功登录并下载了Level-2 Thermal Infrared产品,你将获得包含LST信息的 bands。对于Landsat 8,热红外波段通常为B10(10.6 µm)和B11(11.2 µm)。要计算LST,你需要使用像ENVI、QGIS、R或Python这样的地理空间软件,配合相应的库,例如rasterio、GDAL、xarray、numpy等。

    这里是一个简单的Python示例,使用rasterio和xarray来读取和处理Landsat 8的热红外数据,并计算LST。请注意,这只是一个基础示例,实际计算可能需要更复杂的算法和更多的输入参数(比如发射率和大气透过率等),但这里仅展示如何从数据集中提取数据。

    首先确保安装了所需的库:

    pip install rasterio xarray numpy
    

    然后使用以下代码加载数据并计算LST:

    import rasterio
    import xarray as xr
    import numpy as np
    
    # 读取B10和B11波段数据
    with rasterio.open("path_to_your/LC08_L1TP_124047_20211203_20211209_02_T1_B10.TIF") as b10_file:
        b10_data = b10_file.read()
    
    with rasterio.open("path_to_your/LC08_L1TP_124047_20211203_20211209_02_T1_B11.TIF") as b11_file:
        b11_data = b11_file.read()
    
    # 创建一个xarray Dataset
    ds = xr.Dataset(
        {
            "band10": (("y", "x"), b10_data),
            "band11": (("y", "x"), b11_data),
        },
        coords={
            "x": b10_file.transform[0] * b10_file.width * np.arange(b10_file.width) + b10_file.transform[2],
            "y": b10_file.transform[4] * b10_file.height * np.arange(b10_file.height) + b10_file.transform[5],
        },
    )
    
    # 定义常数
    lambda_b10 = 10.6e-6  # 波长 B10 (微米)
    lambda_b11 = 11.2e-6  # 波长 B11 (微米)
    c = 299792458  # 光速 (m/s)
    k = 1.380649e-23  # 布朗运动常数 (J/K)
    sigma = 5.670373e-8  # 斯特藩-玻尔兹曼常数 (W/m^2 K^4)
    
    # 计算LST
    lst = ((np.log((c**2 / (lambda_b10**5 * sigma)) / (ds.band10.values / ds.band11.values - 1))) * 1000) / k
    
    # 输出LST数组
    print(lst)
    

    这段代码仅用于演示如何读取和处理数据,实际的LST计算可能需要更精确的辐射传输模型和额外的参数。在执行此操作之前,请确保你已经获得了正确的Level-2 Thermal Infrared数据,并且熟悉所使用的算法。如果你对代码或算法有任何疑问,欢迎随时提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 已采纳回答 4月27日
  • 创建了问题 4月20日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见