我是一名地质学家,需要在具有不同 xyz 数据集的项目中创建数百个一致的等高线图。
轮廓化不规则 xyz 数据点涉及在均匀 xy 网格处创建内插(外推)z 值的“网格”。在 R 之外 - 此步骤称为“网格化”。我对 R 比较陌生,并试图设置一个强大的工作流程来网格化大量不规则数据点。我在挣扎!
在经典的等高线绘图软件和工作流程上,步骤是:
- 读取 xyz 数据
- 确定最终地图的感兴趣区域 (AOI)。XMIN、XMAX、YMIN、YMAX
- 确定网格间隔 (XINT, YINT) - 将行数和列数设置为“网格”(NROW, NCOL)
- 应用所需的插值器之一 - 在常规网格/网格处创建“z”(常用插值器有:反距离、反平方距离、加权平均、多项式、克里金法、样条曲线等)
- 轮廓生成的“网格”
我正在尝试编写 R 脚本以完全遵循上述步骤顺序,以便在整个分析过程中实现灵活性和控制。
df 是由示例数据集组成的数据框。
wellid property z x y
060010 1 0.008849558 756994.5 2637732
009410 1 0.260162602 760190.9 2622262
009910 1 0.115044248 760898.7 2637466
051110 1 0.109243697 761690.2 2630985
065610 1 0.066666667 763064.1 2620929
011010 1 0.000000000 763089.3 2630888
035210 1 0.022556391 765942.4 2625944
052510 1 0.157894737 767058.1 2650034
006610 1 0.045045045 768265.0 2645318
009010 1 0.378151261 768471.8 2636731
011210 1 0.028776978 771393.8 2629001
064810 1 0.428571429 771394.1 2650776
009110 1 0.064220183 775332.6 2648531
011410 1 0.148760331 778324.8 2633905
065010 1 0.514851485 780480.9 2654874
052410 1 0.173913043 780961.0 2637571
064110 1 0.019417476 781001.5 2650994
009310 1 0.037383178 783904.7 2641130
010810 1 0.041237113 786200.6 2652417
052610 1 0.150537634 788007.5 2654005
感兴趣区域由以下研究区域确定:
xmin <- signif(min(wellcoords$x),4) - 1000
xmax <- signif(max(wellcoords$x),4) +1000
ymin <- signif(min(wellcoords$y),5) - 1000
ymax <- signif(max(wellcoords$y),5) +1000
xrange <- xmax-xmin
yrange <- ymax-ymin
gridint <- 500 # grid interval is set same for xint and yint
值分别为:754700、791500、26196000、2658600、36800、39000、500。
经过大量失败的试验 - 从包中获得 interp() 函数 - akima 进行所需的插值。感谢“在不规则网格上绘制轮廓”下的回答
fld<- with(df, interp(x=df$x, y=df$y, z=df$z, xo=xcoord, yo=ycoord, linear = FALSE, extrap = TRUE))
这不允许我根据需要指定 AOI 控件。我尝试使用包 MBA,但仍致力于创建 xy.est 参数(网格网格)作为所需的输入。
如果生成了适当的“网格”,ggplot2 和其他显示功能就足够强大了。
是否有适当的“网格化”包或“步骤”。提前致谢。