r - 使用 raster::extract 从地图中提取值时,如何忽略/删除海洋中的点?
问题描述
我有一个记录的植物物种的坐标列表。
我正在从每个坐标的地图中提取年平均温度(使用raster::extract
)。
但我现在意识到,由于一些采样误差(例如,它们就在海岸附近),一些坐标位于海洋中,导致从地图中提取的值不准确,因为地图只提供有关陆地站点的信息。
有没有一种快速的方法可以从坐标列表中删除海洋坐标,或者在从地图中提取温度值时忽略海洋坐标?(我必须对许多物种和环境变量这样做)
谢谢
解决方案
提取值并检测s后,您可以使用na.omit
或类似的NA
示例数据:
library(raster)
set.seed(1)
r <- raster(ncol=36, nrow=18, vals=1:(18*36))
r[sample(ncell(r), 300)] = NA
s <- stack(r, r)
names(s) <- c('temperature', 'rain')
xy <- cbind(lon=-50, lat=seq(-80, 80, by=20))
sp <- data.frame(sp=rep(c('A', 'B', 'C'), 3), xy)
使用提取物
e <- extract(s, xy)
x <- data.frame(sp, e)
x
# sp lon lat temperature rain
#1 A -50 -80 NA NA
#2 B -50 -60 NA NA
#3 C -50 -40 482 482
#4 A -50 -20 NA NA
#5 B -50 0 338 338
#6 C -50 20 266 266
#7 A -50 40 NA NA
#8 B -50 60 122 122
#9 C -50 80 NA NA
y <- na.omit(x)
y
# sp lon lat temperature rain
#3 C -50 -40 482 482
#5 B -50 0 338 338
#6 C -50 20 266 266
#8 B -50 60 122 122
推荐阅读
- python - ModuleNotFoundError:没有名为“six.moves.url”的模块
- c# - 如何在 ASP.Net WebAPI 2.0 中通过基于令牌的身份验证使用 Swagger
- mysql - 数据库:如何对表进行数学运算
- ios - 应用宽高比约束时 UIImageView 消失
- python - django 克隆 repo 不工作
- python - 给定日期时间的 DataFrame,绘制年度用户访问
- javascript - Node.js API - 选择逗号分隔字符串中多个值的位置
- python - Pygame Sprites 在触摸之前“碰撞”
- python - 如何保存命令冷却时间?
- java - 我想从列表中删除已完成的订单