2014-06-26 49 views
1

我想创建一个将3D测深数据(海洋)与2D多边形(陆地)结合在一起的图形。将平面多边形添加到rasterVis

例如,在这样一个情节(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 

最后一个函数不[多边形()同上]的工作,就像我的其他尝试做这个。 我想这不是很难做到,但我无法得到任何这样的例子。所以任何提示都会受到欢迎。

+0

请让您的示例具有可重现性。考虑链接到你的数据集或它的样本。 –

回答

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')