0

我正在尝试应用克里金法来插值空气污染浓度(目标变量)当我运行如下克里格函数时,R 返回错误。

RSPAVE 是目标变量;air 是包含 RSPAVE 的数据集;TPU 是 shapefile

k.o <- krige(RSPAVE ~1, locations=air, newdata=TPU, model=m.RSPAVE.f)

Error in predict.gstat(g, newdata = newdata, block = block, nsim = nsim, :
  gstat: value not allowed for: block kriging for long-lat data undefined

这可能是因为我的网格数据是一个 shapefile。但我不想阻止克里金法,如何将多边形转为点,并应用普通克里金法?

非常感谢!

4

2 回答 2

0

假设RSPAVE是一个 SpatialPolygonsDataFrame` 并且您想根据地理质心进行克里格计算,这应该可以:

Rpoint <- SpatialPointsDataFrame(coordinates(RSPAVE), data = RSPAVE@data, proj4string = CRS(proj4string(RSPAVE)))

这会将其转换为点图层。

然后和之前一样:

k.o <- krige(Rpoint ~1, locations=air, newdata=TPU, model=m.RSPAVE.f)
于 2014-11-28T05:05:52.990 回答
0

你说你的 TPU 网格是一个 shapefile,但它是什么数据类?如果 TPU 不是SpatialGridDataFramekrige可能不知道如何预测它并默认为block.

spsample要对 TPU进行网格化,我建议使用类似于gridded()follow 的方法在多边形上叠加一个网格,尺寸为SomeDimension.

grid.TPU = spsample(TPU, type = "regular", cellsize = c(SomeDimension, SomeDimension))

gridded(grid.TPU) = TRUE

然后

k.o <- krige(RSPAVE ~1, locations=air, newdata=grid.TPU, model=m.RSPAVE.f)
于 2015-07-28T22:34:04.237 回答