我对 R 编程非常陌生,有人告诉我如何读取与 landsat 卫星数据一起存档的 MTL 文件。
3 回答
对于从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 等人提供的标准校准值。(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='=')
这将为您提供一个 2 列数据框,第一列中包含名称,第二列中包含值。
要读取 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)