计算栅格数据的变差函数与R中的NA(Calculate variogram of raster da

2019-09-17 11:46发布

摘要:我有一个栅格数据集包含NA值,并且要计算它的变差,忽略港定居。 我怎样才能做到这一点?

我有我所使用加载成R图像readGDAL功能,存储为im 。 为了使这个重复性,结果dput的图像可在https://gist.github.com/2780792 。 我试图显示此数据的变差和我在努力。 我会去通过什么我试过到目前为止:

我试过gstat包,但也似乎并没有得到一个函数调用,将工作。 我收集了,基本上我需要的是数据值本身( im@data$band1 )和坐标( coordinates(im) 我试着像各种命令:

> variogram(locations=coordinates(im), y = im@data$band1)
Error in is.list(object) : 'object' is missing

> variogram(coordinates(im), im@data$band1)
Error in variogram.default(coordinates(im), im@data$band1) : 
  argument object and locations should be lists

我在做什么错在这里?

由于这似乎没有工作,我尝试了geoR包,我使用一个名为:

> variog(coords=coordinates(im), data=im@data$band1)
variog: computing omnidirectional variogram
Error in FUN(X[[1L]], ...) : NA/NaN/Inf in foreign function call (arg 4)

错误看起来是用具有它的NAS数据做的,所以我尝试使用删除它们na.omit ,但还有所有的NAS在那里。 这有点儿是有意义的光栅文件必须在每个方格的东西。 有没有办法以某种方式除去NAS或至少使variog命令忽略它们?

任何帮助将非常感激。

Answer 1:

如果数据对象传递给gstat:variogram是一个空间对象(你的数据是SpatialGridDataFrame ),那么你就不需要指定位置,因为这些都包含在数据中。

然而,很明显的NA值引起的,所以如果我们迫使网格对象是一个SpatialPointsDataFrame ,这将删除的NA

im包含数据https://gist.github.com/2780792

library(gstat)
point_data <- as(im, 'SpatialPointsDataFrame')
gstat_variogram <- variogram(band1 ~ 1, data = point_data)

要使用geoR

library(geoR)
geor_variogram <- variog(coords = coordinates(point_data), 
                          data = point_data@data$band1)

甚至更简单(如geoR可与类的对象, geodata ,并包含功能as.geodata从转换SpatialPointsDataFramegeodata对象

geor_variogram <- variog(as.geodata(point_data))


文章来源: Calculate variogram of raster data with NAs in R