gpt4 book ai didi

R:更改空间点重叠的栅格值

转载 作者:行者123 更新时间:2023-12-04 00:02:33 24 4
gpt4 key购买 nike

考虑以下数据:

library(sp)  
library(raster)

# create raster
r <- matrix(c(1.8, 1.2, 1.8, 1.2, 2.5, 2.7, 8.5, 7, 2), 3,3)

r <- raster(r)
extent(r) <- c(45,46,54,55)
projection(r) <- "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs"

# create points
coords <- data.frame(x = c(45.6, 45.2),
y = c(54.8, 54.2))

data <- data.frame(a = c(20,22), b = c(1.5, 2.5))
p <- SpatialPointsDataFrame(coords = coords,
data = data,
proj4string = crs(r))

plot(r)
plot(p, add=TRUE)

我有 2 个点覆盖 2 个栅格单元。我想用 SpatialPointsDataFrame pa 值替换这些栅格像元值。因此,我将 SpatialPointsDataFrame 转换为栅格:

p_ras <- rasterize(x = p, y = r, field = "a")

如何使用 p_ras 的值更新 r 的值,其中 p_ras 具有非空单元格值并通过分配值r 的位置?

最佳答案

您的示例数据

library(raster)
r <- raster(ncol=3, nrow=3, ext=extent(c(45,46,54,55)), crs = "+proj=utm +zone=33 +ellps=GRS80 +units=m")
values(r) <- c(1.8, 1.2, 1.8, 1.2, 2.5, 2.7, 8.5, 7, 2)
coords <- data.frame(x = c(45.6, 45.2), y = c(54.8, 54.2))
data <- data.frame(a = c(20,22), b = c(1.5, 2.5))
p <- SpatialPointsDataFrame(coords = coords, data = data, proj4string = crs(r))

rasterize 让您走上了正确的道路。只需添加参数 update=TRUE

x <- rasterize(p, r, field="a", update=TRUE)

相当于

p_ras <- rasterize(p, r, field = "a")
p_ras <- cover(p_ras, r)

这应该比overlay更清晰、更高效。 xyFromCell 的方法对于大型对象来说是有风险的,因为它可能会强制所有值进入内存。

关于R:更改空间点重叠的栅格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57511013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com