我是R编程的新手,请问如何读取存档有Landsat卫星数据的MTL文件。
对于从EarthExplorer或Glovis服务获取的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 et al. (2009)提供的标准校准值。
对于更复杂的方法,这篇文章可能是一个很好的起点。
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='=')
这将给你一个两列的数据框,第一列是名称,第二列是值。
如果您想要读取 Mtl 文件以及图像(堆叠图像),您可以执行以下操作:
提供你的Mtl文件目录。例如:
mtlFile<- "\\LE07_L1TP_165035_20090803_20161220_01_T1_MTL.txt"
读取元数据
metaData <- readMeta(mtlFile)
metaData
根据元数据文件加载光栅图像
lsat <- (stackMeta(mtlFile, quantity = "all", category = "image",
+ allResolutions = FALSE))
lsat
plot(lsat)