Как извлечь значение одного пикселя из растра в R - PullRequest
0 голосов
/ 13 июля 2020

У меня один растр, и расположение метеостанции. Итак, я хочу извлечь значение одного пикселя из моего растра, соответствующего местоположению метеостанции. Я пробовал разные способы, но не получаю точного значения в пикселях при перекрестной проверке с помощью ArcMap. Может кто-нибудь помочь, как получить точное значение пикселя? Спасибо

1 Ответ

0 голосов
/ 14 июля 2020

Задавая вопрос R, пожалуйста, укажите некоторые данные и код, чтобы показать, что вы пробовали и какие пакеты вы используете.

Примеры данных

library(raster)
f <- system.file("external/test.grd", package="raster")
r <- raster(f)

Если вы хотите получить значение (я) для определенного местоположения, которое вы можете сделать

station <- cbind(179735, 331230)
extract(r, station)
# 259.9123 

Или сначала вычислить номер (я) ячейки и использовать его как индекс

i <- cellFromXY(r, station)
i
#[1] 5554
r[i]
# 259.9123 

Как на следующий вопрос (вы должны были задать новый вопрос) «Как я могу извлечь окружающие средние значения в девять пикселей из этого места?»

Получить соседние ячейки и извлечь

j <- adjacent(r, i, 8, pairs=F, include=T)
j
#[1] 5554 5473 5553 5633 5475 5555 5635 5474 5634
r[j]
#[1] 259.9123 273.5190 267.6167 218.8983 273.3555 252.1958 217.1910 274.5584
#[9] 223.2197

Если у вас много местоположений

stations <- rbind(cbind(179735, 331230), cbind(179061, 330212))
cells <- cellFromXY(r, stations)
# get adjacent values but set "pairs" to TRUE
adj <- adjacent(r, cells, 8, pairs=TRUE, include=TRUE, sorted=TRUE)
vadj <- r[ adj[,2] ]

Теперь используйте tapply или агрегирование, чтобы получить среднее значение

v <- tapply(vadj, adj[,1], mean)
v
#    5554     7537 
#251.1630 412.0748 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...