【问题标题】:Extract 2 specific imagery bands from a list of landsat tar.gz从 landsat tar.gz 列表中提取 2 个特定影像波段
【发布时间】:2017-06-08 18:43:04
【问题描述】:

我有一份 Landsat 场景列表。 tar.gz 内部有多个波段。喜欢:

文件“LC08018051date.tar.gz

LC08_date_sr_band1.tif
LC08_date_sr_band2.tif
LC08_date_sr_band3.tif
LC08_date_sr_band4.tif
LC08_date_sr_band5.tif
LC08_date_sr_band6.tif
LC08_date_sr_band7.tif

我只需要提取LC08_date_sr_band3.tifLC08_date_sr_band4.tif 来计算索引。

此代码可以从所有文件中提取所有“波段”。

import tarfile
import os
import glob
files = glob.glob('L*.tar.gz')
for fileName in files:
    tfile = tarfile.open(fileName, 'r:gz')
    membersList = tfile.getmembers()
    namesList = tfile.getnames()
    bandsList = [x for x, y in zip(membersList, namesList) if "sr_band" in y]
    print("extracting...")
    tfile.extractall("Folder/",members=bandsList)
    print ("Done")

问题是我只需要提取 sr_band3 和 sr_band4

【问题讨论】:

  • 好问题。我还想知道。

标签: python windows python-2.7 extraction landsat


【解决方案1】:

不是最好的选择,但我要做的是:

import tarfile
import os
import glob
import re
files = glob.glob('L*.tar.gz')
if not files: 
   raise Exception('No se han encontrado archivos a procesar')
for fileName in files:
    tfile = tarfile.open(fileName, 'r:gz')
    membersList = tfile.getmembers()
    namesList = tfile.getnames()
    bandsList = [x for x, y in zip(membersList, namesList) if "sr_band3" in y]
    print("extracting...")
    tfile.extractall("bands/",members=bandsList)
    print ("Done")
for fileName in files:
    tfile = tarfile.open(fileName, 'r:gz')
    membersList = tfile.getmembers()
    namesList = tfile.getnames()
    bandsList = [x for x, y in zip(membersList, namesList) if "sr_band4" in y]
    print("extracting...")
    tfile.extractall("bands/",members=bandsList)
    print ("Done")

代码每次都输入到文件中,所以不是最快的方式。

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 1970-01-01
    • 2016-01-24
    • 2013-10-24
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多