r - 在具有多个变量(列)的栅格对象之间重新采样
问题描述
我正在尝试从具有 2.5° x 2.5° 分辨率(5760 坐标 - 行)的栅格数据集(REF)到另一个具有 0.5° x 0.5° 分辨率(61143 坐标 - 行)的栅格数据集(OBS)创建双线性插值。
每个数据集包含跨列 27 年的每日温度(总共 9862 列)。
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 年记录的插值栅格数据集?
解决方案
如果您已经拥有 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")
推荐阅读
- python - 手动将造纸厂参数添加到笔记本
- serial-port - 您能解释一下如何将 sim800l 模块与 Arduino Nano 33 BLE 一起使用吗?
- php - 2FA - 如何正确存储登录凭据
- javascript - 在 populate.match mongoose 中丢弃带有 null 的文档
- php - 从 ACF 关系类型中获取相关的 ACF 字段
- apache-spark - 在正在运行的 EMR 集群上启动 Spark 作业需要多长时间?
- java - 在 Azure Function 中使用特定的 Java JRE 版本
- python - Pandas Dataframe GroupBy,如何获得所有内容分组的值?
- javascript - 无法使用地图渲染两级深层嵌套对象
- react-native - 反向图标使背景更大