3

我对 R 编程非常陌生,有人告诉我如何读取与 landsat 卫星数据一起存档的 MTL 文件。

4

3 回答 3

3

对于从EarthExplorerGlovis服务获得的 Landsat 场景提供的标准 MTL 文件,您可以简单地执行以下操作:

mtl <- read.delim('L71181068_06820100518_MTL.txt', sep = '=', stringsAsFactors = F)

所以,对于这样开始的事情:

GROUP = L1_METADATA_FILE  GROUP = METADATA_FILE_INFO...

你可以使用这个:

> mtl[grep("LMAX",mtl$GROUP),]
                  GROUP L1_METADATA_FILE
64          LMAX_BAND1           293.700
66          LMAX_BAND2           300.900
68          LMAX_BAND3           234.400
70          LMAX_BAND4           241.100
72          LMAX_BAND5            47.570
74         LMAX_BAND61            17.040
76         LMAX_BAND62            12.650
78          LMAX_BAND7            16.540
80          LMAX_BAND8           243.100
84       QCALMAX_BAND1             255.0
86       QCALMAX_BAND2             255.0
88       QCALMAX_BAND3             255.0
90       QCALMAX_BAND4             255.0
92       QCALMAX_BAND5             255.0
94      QCALMAX_BAND61             255.0
96      QCALMAX_BAND62             255.0
98       QCALMAX_BAND7             255.0
100      QCALMAX_BAND8             255.0

每个服务都提供字典,可在此处此处找到。

来自 MTL 的信息可能对应用大气和辐射校正至关重要。顺便说一句,landsat包允许您使用DOS()radiocorr()功能运行一些更典型的校正。

您还需要Chander 等人提供的标准校准值。(2009 年)

对于更复杂的方法,这可能是一个好的开始。

于 2013-04-07T16:15:30.110 回答
1

MTL 文件仅包含元数据(我希望您知道 :-))并且是纯文本文件,因此您可以将其读入并根据需要进行解析。如果你相当熟悉 Matlab,你可以移植这个工具 http://www.mathworks.com/matlabcentral/fileexchange/39073 ,把它转换成R代码。

编辑:我无法从您的评论中看出您真正需要什么。这是我从网上下载的一个示例 MTL.txt 文件:http: //landsat.usgs.gov/images/squares/processing_level_of_the_Landsat_scene_I_have_downloaded1.jpg

如果您查看它,您可以看到数据项的名称和值。如果这些是你想要的,也许最简单的方法是运行命令

mtl.values <- read.table('filename.txt' , sep='=')  

这将为您提供一个 2 列数据框,第一列中包含名称,第二列中包含值。

于 2013-02-07T12:37:53.773 回答
0

要读取 Mtl 文件以及图像(堆栈图像),您可以执行以下操作:

  1. 给你 Mtl 文件的目录。例如

    mtlFile<- "\\LE07_L1TP_165035_20090803_20161220_01_T1_MTL.txt"
    
  2. 读取元数据

      metaData <- readMeta(mtlFile)
      metaData
    
  3. 根据元数据文件加载栅格

     lsat <- (stackMeta(mtlFile, quantity = "all", category = "image", 
     + allResolutions = FALSE))
     lsat
     plot(lsat)
    
于 2018-05-12T15:42:07.307 回答