【问题标题】:Interpolating Gridded 3D Data to a finer scale将网格化 3D 数据插值到更精细的比例
【发布时间】:2015-05-29 18:48:38
【问题描述】:

我有一个概率表面的 NetCDF 文件。它是一个 30x30 网格,间隔为 0.25 度纬度/经度,概率表面在 z 维度中描述。我可以轻松地将其导入到 NetCDF 查看器 Panoply:

然后轻而易举(选中一个框)将原始数据插入/平滑到更精细的网格大小:

但是,我不仅想可视化数据,还想在 R 中将其与测深和点数据一起绘制。这一切都没有问题,但我还没有找到在 R 中插入网格数据的直接方法。这是我用来导入和绘制数据的代码:

library(RNetCDF)

nc <- open.nc("132235-1.nc")
print.nc(nc)
tmp <- read.nc(nc)
probs<-tmp$likelihoods

xran <- range(tmp$longitude)
yran <- range(tmp$latitude)
zran <- range(probs,na.rm=T)
lon <- tmp$longitude
lat <- tmp$latitude[30:1]

z <- array(probs, dim=dim(probs))

z <- z[,rev(seq(ncol(z)))]
z <- z[,seq(ncol(z))]



prob.pal<-colorRampPalette(
  c("#C1FFC1","#8FBC8F","#2F4F4F")
)

zbreaks <- seq(0.0001, 0.063, by=0.001)

cols<- c(prob.pal(length(zbreaks)-1))

png("ProbTest.png", width=7.5, height=6, units="in", res=200)
layout(matrix(1:2, 1,2), widths=c(6,1.5), heights=c(6))

par(mar=c(2,2,1,1), ps=10)
image(lon, lat, z=z, col=cols, breaks=zbreaks, useRaster=TRUE, ylim=c(13,28), xlim=c(-115,-100))

dev.off()

我最终得到了这个,这与使用 Panoply 相同,但颜色方案不同:

有没有一种直接的方法来插值/平滑这些数据?我知道如何使用点数据创建内核利用率密度等,但不使用网格数据。

非常感谢您的帮助!

【问题讨论】:

  • 我会使用 raster 包首先使用 raster()brick() 读取 NetCDF 文件,然后使用将数据平滑到更精细的分辨率resample().

标签: r interpolation spatial grid-layout netcdf


【解决方案1】:

这是我认为您正在寻找的解决方案,它使用双线性重采样。然而,这不是进行这种插值的唯一方法,您可能需要证明不使用更复杂的方法(例如地统计、样条曲线等):

library(raster)
set.seed(2002)

##  Create an extent boundary:
ex <- extent(c(0, 20, 0, 20))

##  Simulate a coarse raster:
r.small <- raster(ex, vals=rnorm(10*10, mean=5, sd=1), nrow=10, ncol=10)

##  Simulate the grid of a finer-scale raster:
r.big <- raster(ncol=200, nrow=200, ext=ex)

##  Resample the coarser raster to match finer grid:
r.res <- resample(x=r.small, y=r.big, method="bilinear")

plot(r.small)
plot(r.res)

粗略:

很好:

【讨论】:

  • 嗨,Forrest — 这无疑起到了作用,并解决了我遇到的许多其他问题,因为我没有意识到 raster 可以读取 NetCDF 文件。非常感谢您的解决方案!
  • 不客气,但我要感谢 Robert Hijmans 和 raster 包的其他贡献者,因为他们的辛勤工作使这种事情在 R 中变得非常容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
  • 2014-03-26
相关资源
最近更新 更多