如何从R中的栅格中提取单个像素值

时间:2020-07-13 20:47:45

标签: r

我有一个栅格,以及气象站的位置。这样我想从栅格中提取与气象站位置相对应的单个像素值。我尝试了不同的方法,但是在与ArcMap进行交叉检查时,我没有获得确切的像素值。有人可以帮忙获取准确的像素值吗? 谢谢

1 个答案:

答案 0 :(得分:0)

问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 

关于您的后续问题(您应该问一个新问题)“如何从该位置提取周围的9像素平均值?”

获取相邻细胞并提取

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