[英]Bilinear interpolation for irregular grid to fill data gaps
我想對高度數據的不規則網格執行雙線性插值。 草圖粗略地向我的網格顯示了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)
在R中,您可以使用來自akima
的函數akima
interp()
,該函數使用Akima,H.(1978)中介紹的雙線性插值算法。
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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.