0

我在 R 中很新,所以我希望你们能帮助我完成这一步,因为我很卡住。

我有一张表,上面有监测点(坐标)和每个监测点的水质指数。我正在尝试使用 rasterize 函数从该表创建一个栅格:

rasterize(x, raster, field, fun=mean, backgroud=0, update=TRUE)

x =带坐标的数据框

raster=使用来自参考栅格的范围、nrows、ncols 等创建。

field=使用水质指数数据创建的向量。每个值都属于 x 表中的一个点。

fun=mean=我需要同一个单元格中所有点的平均值。

background=0以完成没有从字段派生的值的单元格。

update=TRUE因此单元格中的值会使用向量值进行更新

运行此程序后,我得到了一张带有正确扩展但没有数据(全为空白)和下一个摘要的地图(有时我得到的是 NA 或 2 而不是 5,不知道为什么):

Min.            5
1st Qu.         5
Median          5
3rd Qu.         5
Max.            5
NA's    215695154

我认为问题在于功能,但我不确定。我尝试按如下方式更改功能,但结果相同。

na.rm=mean(na.omit(v))
raster.wq=rasterize(xy, raster, v, fun=function(v,na.rm)mean(v), backgroud=0, update=TRUE)

非常感谢您提前。干杯。

4

1 回答 1

1

下一次包括一个最小的可重现示例。但是,您必须...在函数中包含参数,如rasterize文档中所述:

如果 x 代表点,则 fun 必须接受 na.rm 参数,无论是显式还是通过“点”。

所以你可以做这样的事情:

library(raster)

#generate data
r <- raster(ncols=36, nrows=18)
n <- 1000
set.seed(123)
x <- runif(n) * 360 - 180
y <- runif(n) * 180 - 90
z <- sample(1:1000,n)
xy <- cbind(x, y)

#rasterize
s <- rasterize(xy, r, z, fun=function(x,...)mean(x,na.rm=T), backgroud=0, update=TRUE)
plot(s)
于 2021-04-24T08:38:04.383 回答