我有一个(X,Y,Z)形式的不规则点网格,其中(X,Y)是平面上的坐标(可以是地理经度/纬度),Z是在点之间插值的一些属性。我akima
在 R 中使用插值包。数据集可以包含缺失值,而 akima 包不喜欢它。这可以通过complete.cases()
重新组织数据集的指令来解决。但是有以下问题。某些点不包含任何数据,因为那里不存在内插质量(R 中的 NA)。作为最接近的例子,Z 是地层间隔的深度,例如第四纪沉积物。在这些地方我需要在插值网格中有一个“洞”,表明这里没有这一层;同时,该算法只是在可用数据点之间进行插值。
#small extract from data
mydf<-read.csv(text="lon, lat, Q
411,362,1300
377,395.5,1425
427,370,1800
435.5,352,
428,357,
390,423,1700")
library("akima")
bbb<-data.frame(lon=mydf$lon,lat=mydf$lat,H=mydf$Q)
ccc<-bbb[complete.cases(bbb),]
Q.int<-interp(ccc$lon,ccc$lat,ccc$H,linear=TRUE,
extrap=FALSE,nx=240,ny=240,duplicate="mean")
然后可以将其可视化,例如,使用image.plot()
from fields
package
library("fields")
image.plot(Q.int)
在这个数据集中,缺少点 4,5。这可能是 1) 缺乏关于这些点的数据,或 2) 表明这里没有存款。我可以在数据集中明确指出它,例如,使用 NA 符号。但我需要插值,它区分这两种情况。我的解决方案是“按原样”插值,然后使用一个技巧:声明属性 Z 在网格 <30 米上的所有插值实际上都是 NA,然后绘制它:
Q.int$z.cut<-ifelse(Q.int$z<30,NA,Q.int$z)
这可以反映地质情况,因为厚度减小的层确实“淡出”,并且可以在地图上剥离,但是否可以将这个问题安排在更优雅的解决方案中?