Как пакетно импортировать файлы netCDF в R и создать RasterStack - PullRequest
1 голос
/ 13 февраля 2020

У меня> 1000 файлов netCDF в папке «data» моего рабочего каталога. Это растры, показывающие ежедневную протяженность снежного покрова, с датой (ггггммдд), записанной в имени файла.

nhtsd25e2_20120501_v01r01.nc
nhtsd25e2_20120502_v01r01.nc
nhtsd25e2_20120503_v01r01.nc
nhtsd25e2_20120504_v01r01.nc
nhtsd25e2_20120506_v01r01.nc
nhtsd25e2_20120507_v01r01.nc
nhtsd25e2_20120518_v01r01.nc
nhtsd25e2_20120520_v01r01.nc
nhtsd25e2_20120521_v01r01.nc
nhtsd25e2_20120522_v01r01.nc

Когда я открываю отдельный файл, я нахожу, что имя поля данных 'Merged.Snow.Cover.Extent'

library(raster)
snow <- raster("./data/nhtsd25e2_20120522_v01r01.nc")
view(snow)

Что я хотел бы сделать (и я не имею ни малейшего представления о том, с чего начать) - это пакетный импорт файлов netCDF из моей папки «data» и создание RasterStack.

Предостережение заключается в том, что я хочу импортировать только файлы netCDF для снежный покров между 1 февраля и 1 июля каждого года (так, где месяц-день> = "0201", но <= "0701" и где год не имеет значения. </p>

Любая помощь очень ценится.

1 Ответ

1 голос
/ 14 февраля 2020

Получите имена файлов с list.files

ff <- list.files(pattern="\\.nc$")

Вот ваши файлы примеров

ff <- c("nhtsd25e2_20120501_v01r01.nc", "nhtsd25e2_20120502_v01r01.nc", "nhtsd25e2_20120503_v01r01.nc", "nhtsd25e2_20120504_v01r01.nc", "nhtsd25e2_20120506_v01r01.nc", "nhtsd25e2_20120507_v01r01.nc", "nhtsd25e2_20120518_v01r01.nc", "nhtsd25e2_20120520_v01r01.nc", "nhtsd25e2_20120521_v01r01.nc", "nhtsd25e2_20120522_v01r01.nc")

Извлечение дат / месяцев

dates <- substr(ff, 11, 18)
months <- as.integer(substr(dates, 5, 6))

Подмножество февраля до Июнь (вы можете добавить 1 июля обратно, если хотите)

 f <- ff[months > 1 & months < 7]

Создать RasterStack

 x <- stack(f)

Или

 x <- lapply(f, raster)
 x <- stack(f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...