Ранжирование растровых временных рядов - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть растровые временные ряды, и я хотел бы ранжировать значения одного пикселя в соответствии с положением в TS. Например: значения временных рядов (5 лет): 3,5,2,8,7, поэтому год 1 равен 4, год 2 равен 3, год 3 равен 5 и так далее. Выходными данными будет стек, который будет иметь для каждого года значение пикселя, рассчитанное, как указано выше

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

library(raster)
r <- raster(ncol=10, nrow=10)
r <- stack(lapply(1:5, function(i) setValues(r, runif(100, -0, 1000))))
names(r)<-c(1:nlayers((r)))
plot(r)


r_ord <- calc(r, fun=function(x,na.rm) x[order(x,decreasing=T)])
r_ord
plot(r_ord)

Есть предложения? Спасибо

1 Ответ

1 голос
/ 04 мая 2020

Исходные значения пикселей возвращаются, когда вы используете порядок для индексации исходных значений пикселей здесь x[order(x,decreasing=T)], что фактически является функцией, возвращаемой функцией sort. Используйте этот код для возврата заказа:

library(raster)
r <- raster(ncol=10, nrow=10)
r <- stack(lapply(1:5, function(i) setValues(r, runif(100, -0, 1000))))
names(r)<-c(1:nlayers((r)))
plot(r)

res <- calc(r,function(x) order(x,decreasing=T))
plot(res)

enter image description here

...