gpt4 book ai didi

r - 使用 R 中的 NA 计算栅格数据的变异函数

转载 作者:行者123 更新时间:2023-12-04 19:14:58 26 4
gpt4 key购买 nike

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

我有一个图像,我使用 readGDAL 加载到 R 中函数,存储为 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)

该错误似乎与其中包含 NA 的数据有关,因此我尝试使用 na.omit 删除它们。 ,但这会将所有 NA 留在那里。这是有道理的,因为光栅文件必须在每个网格方块中都有一些东西。有没有办法以某种方式删除 NA,或者至少制作 variog命令忽略它们?

任何帮助将非常感激。

最佳答案

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

然而,显然NA值导致了问题,因此如果我们强制网格对象为 SpatialPointsDataFrame ,这将删除 NA值(value)观
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 以从 SpatialPointsDataFrame 转换为 geodata 对象
geor_variogram <- variog(as.geodata(point_data))

关于r - 使用 R 中的 NA 计算栅格数据的变异函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com