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

Extract date from LANDSAT8 image name (extention) in R

我想从 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 我找不到只从名称字符串中间提取日期的解决方案。希望有人有想法!

如果没记错的话,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)