【问题标题】:Resampling between raster objects with multiple variables (columns)在具有多个变量(列)的栅格对象之间重新采样
【发布时间】:2019-12-21 20:03:04
【问题描述】:

我正在尝试从分辨率为 2.5° x 2.5°(5760 坐标 - 行)的栅格数据集 (REF) 到分辨率为 0.5° x 0.5°(61143 坐标 - 行)的另一个栅格数据集 (OBS) 创建双线性插值)。

每个数据集的列(总共 9862 列)包含 27 年的每日温度。

REF    Large SpatialPixelsDataFrame (5760 elements, 435.1 Mb)
 ..@ data :'data.frame': 5760 obs. of 9862 variables
 ...... ..$ 1979.01.01.: num [1:5760] -0.568 -0.166 -0.172 ...
 ...... ..$ 1979.01.02.: num [1:5760] -1.606 -0.915 -0.702 ...
 ...... ..$ 1979.01.03.: num [1:5760] -0.856 -0.037 -0.339 ...

OBS    Large SpatialPixelsDataFrame (61143 elements, 4.5 Gb)
 ..@ data :'data.frame': 61143 obs. of 9862 variables
 ...... ..$ 1979.01.01.: num [1:61143] -10.4 -10.6 -10.7 ...
 ...... ..$ 1979.01.02.: num [1:61143] -7.76 -7.99 -8.25 ...
 ...... ..$ 1979.01.03.: num [1:61143] -7.35 -7.52 -7.72 ...

我尝试了以下方法:

coordinates(OBS) = ~ X.x. + X.y.
gridded(OBS) = TRUE
OBS.R = raster(OBS)

coordinates(REF) = ~ X.x. + X.y.
gridded(REF) = TRUE
REF.R = raster(REF)

RS = resample(REF.R, OBS.R, method = "bilinear")

这会产生所需的输出,但仅适用于第一个变量(即 9862 天记录的第一天)。如何调整上述内容以生成整个 27 年记录的插值栅格数据集?

【问题讨论】:

    标签: r


    【解决方案1】:

    将来请创建一个最小的可重现示例。

    如果您已经拥有 SpatialPixels* 对象,则不需要此部分。

    #coordinates(REF) = ~ X.x. + X.y.
    #gridded(REF) = TRUE
    

    我确实想知道你是如何得到它们的(也就是说,如果它们来自文件,这可能是一个不必要的中间步骤)

    无论如何,你需要使用brick而不是raster来获取所有层

    OBS.R <- brick(OBS)
    REF.R <- brick(REF)
    RS <- resample(REF.R, OBS.R, method = "bilinear")
    

    【讨论】:

    • 非常感谢@Robert Hijmans - 一个简单的改变,应该会有所作为。我已经将它设置为运行,现在它仍在运行近一个小时,但我想这只是一个巨大的数据集。我认为没有更快的方法?
    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多