在 R 中使用 idw 的空间插值误差

Reb*_*ca 4 interpolation spatial r-sp

我正在尝试按纬度和经度对海水 pH 值数据集进行空间插值:

\n
sample<-read.csv(file="Station locations 2016.csv", header=TRUE, sep=",", strip.white=T)\n\nhead(sample)    \n  Station       lat     long       pH\n1     B17 -23.49174 152.0718 8.222411\n2     B23 -23.49179 152.0718 8.199310\n3     B26 -23.49182 152.0717 8.140428\n4     B28 -23.49183 152.0717 8.100752\n5     B30 -23.49185 152.0717 8.068141\n6     B31 -23.49187 152.0717 8.048852\n
Run Code Online (Sandbox Code Playgroud)\n

我已经根据纬度/经度数据的现有范围创建了一个网格,并希望对 pH 值进行插值,以便生成颜色编码的 pH 值图。以下代码一直有效,直到使用 idw 进行空间积分步骤,此时我收到以下错误:

\n
library(ggplot2)\nlibrary(gstat)\nlibrary(sp)\n\nx.range <- range(sample$long)\ny.range <- range(sample$lat)\n\n\nx<-seq(x.range[1], x.range[2], length.out=20)\ny<-seq(y.range[1], y.range[2], length.out=20)\ngrd<-expand.grid(x,y)\n\n\ncoordinates(sample) = ~long+lat\ncoordinates(grd) <- ~ Var1+Var2\ngridded(grd) <- TRUE\n\nplot(grd, cex=1.5)\n\ndat.idw<-idw(formula=pH ~ 1, data=sample, newdata=grd, idp=2.0)\n
Run Code Online (Sandbox Code Playgroud)\n
\n

(function (classes, fdef, mtable) 中的错误:无法找到签名 \xe2\x80\x98"formula", "missing"\xe2\ 的函数 \xe2\x80\x98idw\xe2\x80\x99 的继承方法x80\x99

\n
\n

我也尝试过克里格并得到类似的错误。关于如何解决这个问题有什么建议吗?谢谢。

\n

Ege*_*bak 7

library(gstat)
library(sp)


lat <-  c(-23.49174, -23.49179, -23.49182, -23.49183, -23.49185, -23.49187)
long <- c(152.0718, 152.0718, 152.0717, 152.0717, 152.0717, 152.0717)
pH <- c(8.222411, 8.19931, 8.140428, 8.100752, 8.068141, 8.048852)
sample <- data.frame(lat, long, pH)


x.range <- range(sample$long)
y.range <- range(sample$lat)


x<-seq(x.range[1], x.range[2], length.out=20)
y<-seq(y.range[1], y.range[2], length.out=20)
grd<-expand.grid(x,y)


coordinates(sample) = ~long+lat
coordinates(grd) <- ~ Var1+Var2
gridded(grd) <- TRUE

proj4string(sample) <- CRS("+proj=longlat +datum=WGS84")
proj4string(grd) <- CRS("+proj=longlat +datum=WGS84")

plot(grd, cex=1.5)
Run Code Online (Sandbox Code Playgroud)

dat.idw <- idw(formula=pH ~ 1, locations = sample, newdata = grd, idp = 2.0)
#> [inverse distance weighted interpolation]

plot(dat.idw)
Run Code Online (Sandbox Code Playgroud)