1

我想创建一个将 3D 测深网格数据(海洋)与 2D 多边形(陆地)相结合的图形。

例如,在这样的情节中(http://chenangliu.info/en/wp-content/uploads/2014/02/wireframe.jpg)我想在紫色区域添加一个平面以及点,文本,...

我注意到包 rasterVis,它完美地绘制了我的测深光栅。但是,我不知道如何添加土地,就像普通的 2D 多边形一样。我尝试通过将土地面积的网格值设置为零来解决这个问题,但结果并不完美,因为边界不清晰,有湖泊,......不应该是 3D 的。

所以这很好用:

library(rasterVis)
pal<-colorRampPalette(c("darkblue","lightblue","green"))
    #----this doesn't help
     bathy[bathy>0,]=0
    #----
plot3D(bathy,col=pal)

这不会:

polygon3d(europa)  # error: Error: n > 2 is not TRUE

最后一个函数不起作用 [idem for polygon() ],就像我的其他尝试一样。我想这并不太难做到,但我无法找到任何这样的例子。所以任何提示都会受到欢迎。

4

1 回答 1

1

您必须polygon3d根据其规格使用。由于您不提供数据来重现您的代码,因此我使用以下帮助页面中的示例plot3D

library(raster)
library(rasterVis)
library(rgl)

data(volcano)
r <- raster(volcano)
extent(r) <- c(0, 610, 0, 870)

plot3D(r)

现在您可以使用包中定义的函数添加 3D 多边形rgl

x <- c(30, 400, 400, 30)
y <- c(30, 30, 500, 500)

polygon3d(x, y, z=rep(100, 4), col = 'red')
polygon3d(x, y, z=rep(120, 4), col = 'blue')
polygon3d(x, y, z=rep(140, 4), col = 'black')
于 2014-06-27T12:27:57.783 回答