【问题标题】:Plotting point data with value as heightmap用值作为高度图绘制点数据
【发布时间】:2016-03-20 05:51:52
【问题描述】:

我有带有latlng 坐标的点数据。在每一点,都有一个特定的值,范围在 0 到 100 之间。我想使用 rgl 包将其绘制为高度图。这是一个例子,如果找到here

library(rgl)
data(volcano)
z <- 2 * volcano # Exaggerate the relief
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- terrain.colors(zlen,alpha=0) # height color lookup table
col <- colorlut[ z-zlim[1]+1 ] # assign colors to heights for each point
open3d()
rgl.surface(x, y, z, color=col, alpha=0.75, back="lines")

但是,我不明白。这是我第一次与rgl 合作,不太了解这里提供的数据类型(volcano)。 看过但没看懂。。。

1:nrow(z)1:ncol(z) 中有什么?!为什么是间距? rgl.surface() 函数需要哪些输入数据? 当我的数据只有三个列latlng 和一个value 时,我将如何使用该代码。我试图替换

z <- myData$value
x <- myData$lat
y <- myData$lng

那没用。

【问题讨论】:

    标签: r opengl plot rgl


    【解决方案1】:

    看起来z 必须是包含您的值的矩阵。它包含值的相对位置([1,1] = 200 将是您的 3d 图的角之一,它包含值 200。您的点的位置包含在 z 以及您的点的值中.

    > z[1:5,1:5]
         [,1] [,2] [,3] [,4] [,5]
    [1,]  200  200  202  202  202
    [2,]  202  202  204  204  204
    [3,]  204  204  206  206  206
    [4,]  206  206  208  208  208
    [5,]  208  208  210  210  210
    

    xy 基本上是 x 和 y 轴的刻度。在这种情况下,它希望每个值均匀地相隔 10 米,这就是我们进行 10 米间距调整的原因。如果您遇到的情况是这些点之间的距离不是 10 米,您可以通过调整这些 x 和 y 值来显示点到点的相对距离。

    如果您将行更改为 x &lt;- 5 * (1:nrow(z)) # 5 meter spacing (S to N) 您会看到所有点的位置仍然正确,但是您通过告诉函数每个值之间的距离更小,将其中一个轴更靠近在一起。

    在您的情况下,我会确保 myData$value 是一个矩阵,如果不是,请尝试使用 long/lat 对其进行排序。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您找到的示例已超过 6 年。使用surface3dpersp3d 会得到更好的结果;他们的帮助页面中有示例。 surface3d 的设置与 xyz 的设置相同,然后使用

      绘制它们
      surface3d(x, y, z, color = col, back = "lines")
      

      这个想法是网格上点的 x 坐标在x 中发送,y 坐标在y 中发送,z 坐标在z 中发送。如果坐标在整个网格中相同,您可以将它们作为矩阵(所有三个相同的形状),或者将 xy 作为向量。

      示例使用

      x <- 10 * (1:nrow(z))
      

      用值(10, 20, 30, ...) 填充xz 每行一个条目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-22
        相关资源
        最近更新 更多