2016-01-14 2 views
0

У меня есть растровый стек/кирпич с 84 слоями, каждый из которых соответствует месяцу данных о осадках с ноября 1999 года по октябрь 2006 года. У меня также есть кадр данных, в котором каждая строка содержит (среди прочего) пространственных координат и значений для года и месяца.Именование слоев в стеке растра и извлечение данных

Я хочу извлечь значение осадков для каждой строки в моем кадре данных. Для этого мне нужно использовать значения года и месяца, чтобы выбрать соответствующий слой в стеке растра, а затем пространственные координаты, чтобы выбрать соответствующее значение из этого слоя. Мой вопрос состоит из двух частей:

1) В моей фрейме данных я присоединился год и месяц колонны вместе, как так:

data$date <- paste0(data$year, data$month) 

теперь у меня есть один столбец значений, которые сказать мне сроки эта точка данных, например Июль 2001 года будет «20017». Я хочу назвать слои в моем стеке растра таким же образом, как «199911», «200610». Я мог бы набрать все 84 из них эти и затем использовать что-то вроде:

names(rainfall) <- c("199911" ... "200610") 

Но должно быть более эффективный способ сделать это?

2) Сделав это, как использовать столбец даты в своем кадре данных, чтобы выбрать соответствующий слой из моего растрового стека, а затем пространственные координаты, чтобы выбрать местоположение? Если бы это был один слой, я мог бы использовать:

data.sp <- data 
coordinates(data.sp) <- ~ x + y  
rain.points <- over(data.sp, rainfall) 
data$rain <- (rain.points) 

Любая помощь была бы принята с благодарностью!

ответ

3

Вопрос 1: сделать что-то вроде этого

names(rainfall) <- paste0(rep(1999:2006, each=12), 1:12)[11:94] 

Вопрос 2:

Вы можете сделать

pnt <- cbind(0,0) 
s <- rainfall[["200111"]] 
extract(s, pnt)  

но вы можете сделать что-то вроде того, что обсуждается here)