首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从R中的栅格中提取单像素值

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

Stack Overflow用户
提问于 2020-07-14 04:47:45
回答 1查看 261关注 0票数 2

我有一个栅格和气象站的位置。所以我想从我的栅格中提取对应于气象站位置的单像素值。我尝试了不同的方法,但当我与ArcMap交叉检查时,我无法获得确切的像素值。有没有人能帮我找出准确的像素值?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-14 10:51:38

在提出R问题时,请包含一些数据和代码,以显示您尝试过的内容和正在使用的软件包。

示例数据

代码语言:javascript
复制
library(raster)
f <- system.file("external/test.grd", package="raster")
r <- raster(f)

如果要获取特定位置的值,可以执行以下操作

代码语言:javascript
复制
station <- cbind(179735, 331230)
extract(r, station)
# 259.9123 

或者首先计算单元格编号,并将其用作索引

代码语言:javascript
复制
i <- cellFromXY(r, station)
i
#[1] 5554
r[i]
# 259.9123 

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

获取相邻单元格并提取

代码语言:javascript
复制
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

如果你有很多地方

代码语言:javascript
复制
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或aggregate来获得平均值

代码语言:javascript
复制
v <- tapply(vadj, adj[,1], mean)
v
#    5554     7537 
#251.1630 412.0748 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62884009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档