如何使用此R函数拼接相同的HDF文件?

时间:2015-06-03 19:02:47

标签: r mosaic hdf

文件夹中有超过1,000张MODIS HDF图像:

M:\join

他们的名字告诉我们哪些文件必须拼凑在一起。

例如,在以下文件中, 2009090 表示必须将这三个图片拼接在一起:

MOD05_L2.A2009090.0420.051.2010336084010
MOD05_L2.A2009090.0555.051.2010336100338
MOD05_L2.A2009090.0600.051.2010336100514

或者这两个是同一天, 2009091

MOD05_L2.A2009091.0555.051.2010336162871
MOD05_L2.A2009091.0600.051.2010336842395

我将使用此函数(source of function)镶嵌它们:

mosaicHDF(hdfNames, filename, MRTpath, bands_subset, delete=FALSE)

我应该如何将我的HDF文件引入 hdfNames

我应该用文件名写什么?

我试图找到这个功能的手册,但没有任何东西。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

幸运的是,我确实找到了答案。谢谢你的帮助。

hdfs <- c('MOD05_L2.A2009090.0420.051.2010336084010.hdf',
          'MOD05_L2.A2009090.0555.051.2010336100338.hdf',
          'MOD05_L2.A2009090.0600.051.2010336100514.hdf')

mosaicHDF(hdfNames=hdfs, filename='newhdf.hdf', MRTpath='C:/MRT/bin',bands_subset="1 0 0 0", delete=FALSE) 

但我有一个新问题: - )

由于文件夹中有数千个HDF文件,

我怎么能写一个循环来将所有HDF文件引入函数?

仅供参考:我对R.很新。

答案 1 :(得分:0)

这个问题已经很老了,但我想我会发布加拿大2015年要求的R代码。 因此,对于2000年到2016年的循环,假设文件名仍具有A&lt;年> &LT; MONTH&gt; DAY&gt;。格式。此代码将所有图块拼接在一起,以生成每年存在的新文件。如果您必须在一年内拼接多个图块,则可以将pattern =参数更改为“.hdf”等常规图块。

for(i in 2000:2016){
  HDFs <- list.files(path = "F:/PATHTOFILES/HDFs/", pattern = paste("A",i,sep = ""))
  mosaicHDF(hdfNames = HDFs, filename = paste('newhdf',i,'.hdf',sep = ""), MRTpath = 'C:/MRT/bin',bands_subset="1 0 0 0", delete=FALSE)
}