从R中的LANDSAT8图像名称(扩展名)中提取日期

时间:2016-10-29 10:18:28

标签: r string filenames paste

我想从LANDSAT8文件夹名称中提取日期(YYDDD格式),并在为多个图像计算的植被索引中使用它(52)。

这是我到目前为止所做的:

setwd('E:/Landsat8')
folders <- list.dirs(full.names=FALSE, recursive = FALSE)

for(scene in folders){
  NIR <- raster(paste(scene,'/',scene,'_B5.TIF', sep=''))
  SWIR1 <- raster(paste(scene,'/',scene,'_B6.TIF', sep=''))
  LSWI <- overlay(x=NIR, y=SWIR1, fun=calcIndex)     #calculates LSWI 
  writeRaster(LSWI, filename=paste(scene,'/',scene,'_LSWI.TIF', sep=''), format='GTiff', datatype='FLT4S', overwrite=TRUE) 
  }

LANDSAT8影像的文件名格式如下:LC81730382014069LGN00

我想将文件安全为2014_069_LSWI.TIF。目前它将其保存为LC81730382014069LGN00_LSWI.TIF 我找不到解决方案只从名称字符串中间提取日期。希望有人有个主意!

1 个答案:

答案 0 :(得分:1)

如果没有记错,Landsat文件名中的年份和年份子串总是处于相同的位置。因此,应该这样做:

#Sample image name
nm <- "LC81730382014069LGN00"

#Extract year
yr <- substr(nm, start=10, stop=13)

#Extract day of year
dy <- substr(nm, start=14, stop=16)

#Make name
nm2 <- paste(yr, dy, "LSWI.TIF", sep="_")

然后您可以在writeRaster期间传递nm2作为文件名,如下所示。请注意paste0; - )

的用法
writeRaster(LSWI, filename=paste0(scene,'/', nm2), format='GTiff', datatype='FLT4S', overwrite=T)