【问题标题】:Using the akima bilinear function for interpolation使用 akima 双线性函数进行插值
【发布时间】:2019-08-14 20:16:56
【问题描述】:

我正在使用 akima 包和双线性函数将 z 值(温度)从粗坐标网格 (2.5° x 2.5°) 插入到更精细的网格 (0.5° x 0.5°)。双线性函数的工作原理如下:

用法

双线性(x, y, z, x0, y0)

参数

x 包含矩形数据网格的 x 坐标的向量。

y 包含矩形数据网格的 y 坐标的向量。

z 包含网格点 (x[i],y[j]) 的 z[i,j] 数据值的矩阵。

用于插值的 x 坐标的 x0 向量。

用于插值的 y 坐标的 y0 向量。

价值

这个函数产生一个插值点列表:

x 坐标的 x 向量。

y 坐标的 y 向量。

插值数据z的z向量。

给定以下数据:

# coarse grid longitudes     x -> c(0, 2.5, 5, 7.5, 10)
# coarse grid latitudes      y -> c(50, 55, 60, 65, 70)
# temperatures               z -> c(10.5, 11.1, 12.4, 9.8, 10.6)
# fine grid longitudes       x0 -> c(0, 0.5, 1, 1.5, 2)
# fine grid latitudes        y0 -> c(50, 50.5, 51, 51.5, 52)

我试过这个功能:

bilinear -> (x=x, y=y, z=z, x0=x0, y0=y0)

但我得到以下信息:

Error in if (dim(z)[1] != nx) stop("dim(z)[1] and length of x differs!") : 
argument is of length zero

我显然不完全理解这个功能是如何工作的,如果有人知道我做错了什么,我真的很感激任何建议?我也对使用不同包的替代解决方案持开放态度。

【问题讨论】:

    标签: r


    【解决方案1】:

    仔细阅读函数的描述,z需要是一个矩阵,维度为x,y:

    library(akima)
    x <- c(0, 2.5, 5, 7.5, 10)
    y <- c(50, 55, 60, 65, 70)
    z <- matrix(rnorm(25), 5, 5)
    x0 <- seq(0, 10, .5)
    y0 <- seq(50, 70, length = length(x0))
    
    > bilinear(x, y, z, x0, y0)
    $x
    [1]  0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0
    [16]  7.5  8.0  8.5  9.0  9.5 10.0
    
    $y
    [1] 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
    
    $z
    [1]  1.14880762  1.08789150  0.88252672  0.53271328  0.03845118 -0.60025959
    [7] -0.13758256  0.17947029  0.35089894  0.37670342  0.25688371 -0.06736752
    [13] -0.42197570 -0.80694083 -1.22226291 -1.66794194 -1.38940279 -1.08889523
    [19] -0.76641923 -0.42197481 -0.05556197
    

    【讨论】:

    • 感谢您的评论卡洛斯。我仍在努力适应我的情况。我有 5760 个 x 值(经度)和 5760 个 y 值(纬度),那么为什么我的 z 值不仅仅是对应于 xy 坐标的 5760 个数据点(在这种情况下为温度)?我似乎真的不明白 z 在这里是什么,并且发现任何文档都更令人困惑。
    • 您正在处理空间数据,即分布在曲面中的数据 (z)(两个线性坐标 - x 和 y)。即使您的数据对应于一条线(例如来自样带的样本),您仍然在处理关于插值的 2D 网格:双线性插值将考虑四个相邻点。看看这里,它可能会有所帮助:gisgeography.com/raster-resampling
    猜你喜欢
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多