【问题标题】:Projection error with autoKrige functionautoKrige 函数的投影误差
【发布时间】:2013-07-19 01:12:39
【问题描述】:

我的 autoKrig 函数有问题,我尝试在这里制作一个可重现的示例:

library(automap)
library(raster)
library(dismo)

bio <- getData("worldclim", var="bio", res=10)

bio1 <- raster(bio, layer=1)
bio12 <- raster(bio, layer=12)
predictors <- stack(bio1, bio12)

bg <- randomPoints(bio1, 50)

data <- extract(predictors, bg)
data <- cbind(bg,data)
data <- data.frame(data)

coordinates(data)=~x+y
proj4string(data) = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
kg <- autoKrige(bio1~bio12, data, new_data=predictors)

这将导致:

Error in autoKrige(bio1 ~ bio12, data, new_data = predictors) : 
  Either input_data or new_data is in LongLat, please reproject.
   input_data:  +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
   new_data:    +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

我的原始数据出现同样的错误。感谢您的帮助。

【问题讨论】:

    标签: r automap


    【解决方案1】:

    如果您阅读帮助文件,它会告诉您为什么会抛出该错误。

    autoKrige 对 input_data 的坐标系进行一些检查 和新数据。如果一个或两个都是 NA,则分配给它的投影 另一个。如果它们有不同的预测,则会引发错误。 如果一个或两个具有非投影系统(即纬度-经度),则会引发错误。引发此错误是因为 'gstat 确实使用 然而,当数据在地理坐标中时,球面距离 通常的变异函数模型通常不是非负定的 球体,并且没有合适的模型可用”(Edzer Pebesma on r-sig-geo)。

    看来您需要在调用 autoKrige 之前投影您的数据。

    【讨论】:

    • 谢谢,但由于错误显示我的输入和输出具有相同的投影。
    • @N16 您的数据在longlat 投影中,帮助文件详细说明为“非投影系统(即纬度-经度)”。
    • 那么在这种情况下你有什么推荐的呢?我的数据集是全球性的。
    • 抱歉,我只有使用克里金法解决非常基本问题的经验。您可以在致电autoKrige 之前尝试投影您的数据。例如,您可以通过调用projectRaster(bio1, crs=CRS("+proj=robin")) 来尝试 Robinson 投影,但我怀疑这可能需要一些时间。
    • @Ialm 是对的,您需要将数据从 latlon 投影到投影系统。
    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    相关资源
    最近更新 更多