具有空间数据的3D交互式曲面图

时间:2018-10-11 08:32:38

标签: r 3d gis plotly rgl

我想创建一个交互式的3D湖泊深度图,最好使用plotlyrgl库。我已从SpatialLinesDataFrame等高线中提取了数据,其轮廓为高斯/克鲁格/ EPSG:31468 CRS,即公制单位。现在,每条轮廓线都会产生一组具有相同深度值的坐标。结果数据帧相当大,但看起来像这样:

set.seed(41)
xx <- rnorm(100,4448929,100)
yy <- rnorm(100,5308097,100)
zz <- c(rep(-10,10),rep(-20,10),rep(-30,10),rep(-40,10),rep(-50,10),rep(-60,10),rep(-70,10),rep(-80,10),rep(-90,10),rep(-100,10))
df <- data.frame(xx,yy,zz)

我曾尝试使用this示例中的plotlythis中的rgl来绘制数据。在这两种情况下,我都会收到与我的数据不是矩阵格式有关的错误消息,即x和y值分别表示为行号和列号。

有效的方法是在add_trace中使用plotly命令:

plot_ly() %>% add_trace(df,x = ~df$xx, y = ~df$yy, z = ~df$zz,type="mesh3d")

但是,生成的图不仅缺少add_surface命令的精美颜色图例,而且更重要的是,相对于z值扭曲了x和y值。尽管z值具有相同的度量单位,但它们显示的z值太大。

我也曾尝试像this中那样将数据帧重塑为矩阵,但是它要么根本不起作用,要么给了我几乎全部由NA组成的矩阵。我只能推测,与该范围内的坐标的所有x-y组合相比,附加了深度值的坐标的数量很少?

任何建议将不胜感激-谢谢!

1 个答案:

答案 0 :(得分:1)

这些是随机定位的点,因此.antMatchers("/mensagem/*").hasRole("CLIENTE") 无法直接处理它们。但是,您可以按照rgl::persp3d中的示例进行三角剖分,然后进行绘制。例如,

?rgl::persp3d.deldir

这会产生非常丑陋的画面,但是通过一些工作(例如,固定轴标签,使用实际数据),您应该会得到一些合理的信息。