LANDSAT8 LEVEL2 COLLECTION2如何在ENVI中正确打开

最近准备使用L8的L2级别产品进行一些研究,但是USGS中间对于数据进行了一定的升级,导致MTL文件发生了变化,如果使用ENVI直接读取MTL文件就会出现错误。

# 在中文网站有很多人介绍说将第一句,
# GROUP = LANDSAT_METADATA_FILE修改成GROUP = L1_METADATA_FILE,
# 并且将所有的GROUP字段都进行相应修改,
# 这种方法可能针对针对L1级别产品有效,但是对于L2级别的产品就会出现错误。

# 还有一种是单独将波段读取,然后使用layerstack进行波段叠加,

# 这个方法虽然是没有问题的,但是处理步骤稍显繁琐。

在网上搜了下,发现很多人都给出了一些处理步骤,但是都没有能很好的把这个问题解决。在YOUTUBE上看到一个视频把这个问题说明白了,把这个解决方案分享给大家。

下面是正确的处理流程:

  1. 仅将第一句进行修改为GROUP = L1_METADATA_FILE 
  2. 查找所包含的GROUP = LEVEL1***的节点,将其全部删除;
  3. 此时即可在ENVI里面读取MTL文件打开影像。

操作很简单,但是如果针对大量数据,就稍显费力了,有时间会写个批处理代码共享给大家。

# 作为一个怀旧份子,ENVI我一般都是使用经典版,但是这样修改对经典版是无效的,
# 还是需要针对MTL文件进行整体修改,后面确定了需要修改哪些字段后也会跟大家说明。

2022.4.7 updata

最近需要大量使用到L8数据,就需要对MTL文件更新,写了一个python代码,可以做到上述修改:

fpath = 'E:/bda/LC08_L2SP_124036_20211219_20211223_02_T1/LC08_L2SP_124036_20211219_20211223_02_T1_MTL.txt'
with open(fpath,'r')as file:
    conf_list=file.readlines()
file.close()   
index=[x for x in range(len(conf_list))if 'LEVEL1'in conf_list[x]]
fo = open(fpath, "w")
i = 1
conf_list[0] = 'GROUP = L1_METADATA_FILE\n'
for i in range(len(conf_list)):
    if (i < index[0]):
        fo.writelines(conf_list[i]) 
    elif (i > index[-1]):  
        fo.writelines(conf_list[i])         
    i=i+1  
fo.close()
    

评论 70
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值