我对R编程非常陌生,请有人告诉我如何阅读使用landsat卫星数据存档的MTL文件。
答案 0 :(得分:2)
对于从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)提供的标准校准值。
对于更复杂的方法,this可能是一个良好的开端。
答案 1 :(得分:1)
MTL文件只包含元数据(我希望您知道:-))并且是纯文本文件,因此您可以根据需要读取并解析。如果您对Matlab非常熟悉,可以移植此工具http://www.mathworks.com/matlabcentral/fileexchange/39073,将其转换为R
代码。
如果查看它,您可以看到数据项的名称和值。如果这些是您想要的,也许获得它们的最简单方法是运行命令
mtl.values <- read.table('filename.txt' , sep='=')
这将为您提供一个2列数据框,名称在第一列,值在第二列。
答案 2 :(得分:0)
用于读取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)