我对Automap包有疑问。
我已经尝试了普通的克里金法,没有我的数据问题,并且工作正常。但是当我尝试使用Universal Kriging时,得到了一条我无法理解的错误信息。
我认为这可能很简单,但我不知道为什么函数找不到'silt_clay'。
谢谢。
高于我的代码:
library(automap)
data_interpol<-read.table("merge_guaiba_ceco2.txt", header=T)
head(data_interpol)
long lat depth silt_clay avgran pcsand om
1 471699 6680184 1.9 51.626 0.6683944 48.313 11.50
2 473777 6679430 1.8 57.810 0.6669483 42.186 8.80
3 471931 6679087 2.4 54.625 0.6718675 45.370 9.30
4 471337 6678456 1.9 2.887 0.4128039 97.113 0.00
5 472936 6678421 2.5 49.136 0.6344626 50.864 9.90
6 473945 6678482 1.9 99.614 0.9984355 0.386 9.45
coordinates(data_interpol)<- ~long+lat
kriging_om = autoKrige(om~ 1, data_interpol, grid4)# works fine
kriging_om_Universal= autoKrige(om~ silt_clay + avgran + pcsand, data_interpol, grid4)
Error in eval(expr, envir, enclos) : object 'silt_clay' not found # my error
####code to obtain grid4:
grid <- raster( )
grid <- raster(ncol=1544, nrow=1056, xmn=468318.3, xmx=499998.3, ymn=6634918, ymx=6681238) projection (grid) <- '+proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs ‘
res(grid) <- 30
grid4 <- as(grid, ‘SpatialPoints’)
编辑以讨论错误。在更改网格后,错误仍然存在:
d_margin_xyz
是我的新网格。
str(d_margin_xyz)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
..@ data :'data.frame': 1628352 obs. of 1 variable:
.. ..$ DIST_MARGIN: num [1:1628352] 0 0 0 0 0 0 0 0 0 0 ...
..@ coords.nrs : int [1:2] 1 2
..@ coords : num [1:1628352, 1:2] 468333 468363 468393 468423 468453 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : NULL
.. .. ..$ : chr [1:2] "x" "y"
..@ bbox : num [1:2, 1:2] 468333 6634963 499983 6681193
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:2] "x" "y"
.. .. ..$ : chr [1:2] "min" "max"
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
.. .. ..@ projargs: chr NA
再次尝试使用包含Universal Kriging预测器的新网格,错误再次出现。任何线索?
kriging_om_Universal= autoKrige(om~ DIST_MARGIN, data_interpol, d_margin_xyz)
Error in eval(expr, envir, enclos) : object 'DIST_MARGIN' not found
答案 0 :(得分:0)
问题是您的预测对象grid4
只是一个没有属性的SpatialGrid
对象。为了能够使用通用克里金法进行预测,您需要预测位置上的所有预测变量(即silt_clay
,avgran
等)的值,即作为grid4
的属性。您的错误是由silt_clay
不属于某个属性引起的。
要解决此问题,您需要将属性添加到grid4
。为此,您需要有一些覆盖silt_clay
地图和其他预测变量的区域。您可以将此地图转换为包含属性的SpatialGrid
对象,也可以从此地图中提取grid4
位置的值。