library(raster)
Я работаю над относительно сложной задачей и нуждаюсь в советах по ее выполнению.RasterStack/Brick для нескольких переменных из нескольких файлов в нескольких папках R
Мои данные представляют собой растровые временные ряды с 1910-2000 по суточной шкале времени.
Каждый растровый файл (
.asc
) представляет собой временной шаг.Данные хранятся в папках с каждой папкой, содержащей данные за 1 год (всего 91 папка). В каждой папке имеется 1095 файлов. Из этих 1095 файлов, Tmin = 365, Tmax = 365 и отрезка = 365, что соответствует 365 дням в году. Все годы отформатированы как високосные годы с 29 днями февраля и юлианским днем 60 отсутствуют в течение не-високосных годов.
В каждой папке, три переменных (Tmin, Tmax, осадки) помечены как
max1910_1.asc,min1910_1.asc, precip1910_1.asc
и т.д. вплоть до 365.
ЗАДАЧ:
1) Я хотел бы импортировать все файлы в R. Я могу получить путь к файлам с помощью:
files <- dir("C:/data//, recursive=TRUE, full.names=TRUE, pattern="\\.asc$")#
2) Сделать rasterstack/кирпич для каждой переменной, т.е. TminStack, TmaxStack и PrecipStack.
В каждом из трех отдельных растровых стежков layer1 должен быть январем-01-1910, а последний слой - данными для Dec-31-2000.
3) Наконец, у меня будет 3 растровых ранга серии времени, соответствующих Tmax, Tmin и осадке. Я могу установить ось времени в три rasterstacks с помощью:
dates=seq(as.POSIXct("1910-01-01"), as.POSIXct("2000-12-31"), by="day")
TminStack <- setZ(TminStack,dates)
TmaxStack <- setZ(TmaxStack,dates)
precipStack <- setZ(precipStack,dates)
Я не мог поставить воспроизводимый пример, потому что файлы большие и хранятся в отдельных папках для каждого года.
Большое спасибо,
Sam.
В каждой папке, имена файлов для трех переменных помечены как 'max1910_1.asc, min1910_1.asc, precip1910_1.asc 'поэтому, если я запустил:' TminStack <- list.files (path = ".", pattern = paste (min, ". *. asc", sep = ""), all.files = FALSE, full.names = TRUE , рекурсивный = TRUE), '; Я получаю ошибку 'Ошибка в пасте (min,". *. Asc ", sep =" "): не может принуждать тип 'builtin' к вектору типа 'character''. В задаче 1 в вопросе я могу прочитать все пути к файлу. Проблема заключается в том, как извлекать пути с помощью min, max и end и формировать отдельные растровые стопки? – code123
'min 'должно быть в кавычках. –
код работал отлично, за исключением того, что имена файлов не сортируются хорошо, что означает, что 'растер :: стек' не будет правильно складывать временные ряды, кроме случаев, когда' stack' сортирует имена файлов внутри. Это то, что я получил:> 'head (TminStack) [1]" ./canada_daily1950/1950/min1950_1.asc "" ./canada_daily1950/1950/min1950_10.asc " [3]" ./canada_daily1950/1950/min1950_100 .asc "" ./canada_daily1950/1950/min1950_101.asc " [5]" ./canada_daily1950/1950/min1950_102.asc ""./canada_daily1950/1950/min1950_103.asc ", но используя' require (gtools) TmnStack = mixedsort (TminStack) 'дает правильный порядок файлов. – code123