0

我想对高度数据的不规则网格执行双线性插值。草图粗略地显示了我的网格一个示例 x,y 对。我只有米色数据点,并希望在两者之间插入所有内容。插值

我的 y 值范围为 1 - 10,我的 x 值范围为 70-290。对的 z 在 4880 和 5000 之间变化,在较小的 x 值上具有最低值。到目前为止,我只使用线性方程进行插值(这次不可能),所以我不太确定如何解决这个问题。我正在考虑用 Python 或 R 来做。

在此处输入图像描述

编辑: 一些示例数据:

v1 = (85,1,4880); v2 = (284,1,5008); v3 = (91,10,4883); 
v4 = (288,10,5008); v5 = (79,3,4879); v6 = (275,3,4995)
4

1 回答 1

0

在 R 中,您可以使用函数interp()from ,它使用Akima, H. (1978)akima中提出的双线性插值算法。

library(akima)

v1 = c(85,1,4880); v2 = c(284,1,5008); v3 = c(91,10,4883); 
v4 = c(288,10,5008); v5 = c(79,3,4879); v6 = c(275,3,4995)

dat <- as.data.frame(rbind(v1, v2, v3, v4, v5, v6))
colnames(dat) <- c("x", "y", "z")

ip <- with(dat, akima::interp(x, y, z))
with(ip, filled.contour(x, y, z))

在此处输入图像描述


转换为Raster对象并导出

ip.r <- raster(ip$z)
extent(ip.r) <- extent(ip[1:2])
ip.r <- t(ip.r)

writeRaster(ip.r, "bilinear.tif")

ip.r_norm <- ip.r-minValue(ip.r)
ip.r_norm <- ip.r_norm/maxValue(ip.r_norm)

writeRaster(ip.r_norm, "bilinear_norm.tif")
于 2018-07-15T11:00:17.223 回答