0

我创建了一个克里金图,它是使用克里金包的 kriging() 和 image() 函数创建的(表格是带有坐标和值的数据):

krig <- kriging(table@coords[ ,1], table@coords[ ,2], response = table@data$Joined.l_8, model = "spherical", lags = 3, pixels = 100)
krig_raster <- image(krig, main = NULL, xlab = "X coords", ylab = "", col = heat.colors(100))

结果可以在附图中查看。

在此处输入图像描述

我的问题是我无法将此地图导出为栅格。使用光栅包的以下命令时:

writeRaster(krig_raster, "/home/stathis/Desktop/test.tif", format="Gtiff", overwrite = TRUE)

我收到以下错误:

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘writeRaster’ for signature ‘"NULL", "character"’
4

1 回答 1

3

当你这样做时:

 krig_raster <- image(krig, main = NULL, xlab = "X coords", ylab = "", col = heat.colors(100))

它绘制图像并返回 NULL,因此writeRaster尝试写入 NULL 并给您一个错误说明。您需要kriging先将输出从转换为栅格对象。阅读文档kriging告诉我输出预测在$map返回对象的一部分中,并且采用三列格式,应该可以输入raster::rasterFromXYZ. 如果我使用示例?kriging并使用对象执行此操作kriged

> r = rasterFromXYZ(kriged$map)
> plot(r)

我看到了美国栅格类对象的图,然后我可以使用writeRasterviawriteRaster(r, "usa.tif")

作为一个注释,我会警惕使用不返回预测方差的克里金函数,或者让您在继续之前先检查变异函数 - 查看gstat包以获得更彻底的克里金程序。

于 2018-09-08T11:26:34.393 回答