首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从R中的LANDSAT8图像名(扩展)中提取数据

从R中的LANDSAT8图像名(扩展)中提取数据
EN

Stack Overflow用户
提问于 2016-10-29 10:18:27
回答 1查看 151关注 0票数 0

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

以下是我到目前为止所拥有的:

代码语言:javascript
复制
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,我无法找到解决方案,只能从名称字符串的中间提取日期。希望有人有个主意!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-29 12:12:51

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

代码语言:javascript
复制
#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="_")

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

代码语言:javascript
复制
writeRaster(LSWI, filename=paste0(scene,'/', nm2), format='GTiff', datatype='FLT4S', overwrite=T) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40318097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档