【问题标题】:3D interactive surface plot with spatial data具有空间数据的 3D 交互式曲面图
【发布时间】:2019-03-16 06:37:13
【问题描述】:

我想在湖中创建交互式 3D 深度图,最好使用 plotlyrgl 库。我从 Gauss-Krueger/EPSG:31468 CRS 的等高线 SpatialLinesDataFrame 中提取了我的数据,即公制单位。现在每条等高线都会产生一组具有相同深度值的坐标。生成的数据框相当大,但看起来像这样:

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)

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

起作用的是,在plotly 中使用add_trace 命令:

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

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

我也尝试过将数据框重塑为矩阵,如this 帖子中的那样,但它要么根本不起作用,要么给了我一个几乎完全由 NA 组成的矩阵。我只能推测,与该范围内所有坐标的 x-y 组合相比,附加了深度值的坐标数非常少?

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

【问题讨论】:

    标签: r 3d gis plotly rgl


    【解决方案1】:

    那些是随机定位的点,所以rgl::persp3d 不能直接处理它们。但是,您可以按照?rgl::persp3d.deldir 中的示例对它们进行三角测量,然后进行绘图。例如,

    dxyz <- deldir::deldir(df$xx, df$yy, z = df$zz, suppressMsgs=TRUE)
    persp3d(dxyz, col = "lightblue")
    

    这会产生非常难看的画面,但通过一些工作(例如修复轴标签、使用真实数据),您应该会得到一些合理的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      相关资源
      最近更新 更多