R 三维曲面插值

R 三维曲面插值,r,interpolation,rgl,R,Interpolation,Rgl,我有一个三列数据框,以纬度、经度和地下测量值作为列。我试图找出如何在我拥有的点(空间不规则)之间插值数据点,然后创建整个区域的平滑曲面图。我曾尝试在“rgl”包中使用“surface3d”函数,但结果看起来像一个巨大的尖峰。我已经能够用“PLOT3D”来绘制数据,但是我需要再向前一步,并用插值填充空白空间。有什么想法或建议吗?我也愿意使用其他软件包,rgl在当时似乎是最合适的 编辑:以下是我的数据摘录(含水层深度测量): 您可以使用deldir软件包获取点的Delaunay三角剖分,然后将其转换

我有一个三列数据框,以纬度、经度和地下测量值作为列。我试图找出如何在我拥有的点(空间不规则)之间插值数据点,然后创建整个区域的平滑曲面图。我曾尝试在“rgl”包中使用“surface3d”函数,但结果看起来像一个巨大的尖峰。我已经能够用“PLOT3D”来绘制数据,但是我需要再向前一步,并用插值填充空白空间。有什么想法或建议吗?我也愿意使用其他软件包,rgl在当时似乎是最合适的

编辑:以下是我的数据摘录(含水层深度测量):


您可以使用deldir软件包获取点的Delaunay三角剖分,然后将其转换为
Triangle3D
打印所需的数据形式。我不知道这在一个非常大的数据集上有多有效,但它似乎对100个点有效:

library(deldir)
library(rgl)
# Create some fake data
x <- rnorm(100)
y <- rnorm(100)
z <- x^2 + y^2

# Triangulate it in x and y
del <- deldir(x, y, z = z)
triangs <- do.call(rbind, triang.list(del))

# Plot the resulting surface
plot3d(x, y, z, type = "n")
triangles3d(triangs[, c("x", "y", "z")], col = "gray")
还有一个函数可以从
deldir()
输出中构造
mesh3d
对象。

只是为了添加有关插值的小但(可能)重要的注释

使用非常好的软件包“akima”,您可以轻松插入数据:

library(akima)
library(rgl)
# library(deldir)

# Create some fake data
x <- rnorm(100)
y <- rnorm(100)
z <- x^2 + y^2

# # Triangulate it in x and y
# del <- deldir(x, y, z = z)
# triangs <- do.call(rbind, triang.list(del))
# 
# # Plot the resulting surface
# plot3d(x, y, z, type = "n")
# triangles3d(triangs[, c("x", "y", "z")], col = "gray")

n_interpolation <- 200

spline_interpolated <- interp(x, y, z,
                              xo=seq(min(x), max(x), length = n_interpolation),
                              yo=seq(min(y), max(y), length = n_interpolation),
                              linear = FALSE, extrap = TRUE)

x.si <- spline_interpolated$x
y.si <- spline_interpolated$y
z.si <- spline_interpolated$z

persp3d(x.si, y.si, z.si, col = "gray")
库(akima)
图书馆(rgl)
#图书馆(deldir)
#制造一些假数据

x您可以使用
asbio
软件包中的
loash.surf
功能。如果您能提供您的数据,我们可以帮助您更好地使用克里格法(使用gstat软件包),这似乎是一种显而易见的技术,可以尝试对“3D曲面”进行各种解释。您是否试图根据
lat
long
在测量的
lev
值之间进行插值?(我将其称为嵌入三维的二维流形。如果是这样的话,那么RHS上包含两个变量的黄土(尽管在统计数据包中)的建议似乎是正确的,并且已经有了一个说明性的答案:也许你在
演示(persp)
中发现了一些有用的东西。
library(deldir)
library(rgl)
plot3d(deldir(x, y, z = z))
library(akima)
library(rgl)
# library(deldir)

# Create some fake data
x <- rnorm(100)
y <- rnorm(100)
z <- x^2 + y^2

# # Triangulate it in x and y
# del <- deldir(x, y, z = z)
# triangs <- do.call(rbind, triang.list(del))
# 
# # Plot the resulting surface
# plot3d(x, y, z, type = "n")
# triangles3d(triangs[, c("x", "y", "z")], col = "gray")

n_interpolation <- 200

spline_interpolated <- interp(x, y, z,
                              xo=seq(min(x), max(x), length = n_interpolation),
                              yo=seq(min(y), max(y), length = n_interpolation),
                              linear = FALSE, extrap = TRUE)

x.si <- spline_interpolated$x
y.si <- spline_interpolated$y
z.si <- spline_interpolated$z

persp3d(x.si, y.si, z.si, col = "gray")