plot3d for readGDAL?

时间:2011-09-11 17:27:35

标签: r plot raster

我想在R中准备3D图形!使用栅格数据。 我在raster包中听说过命令plot3d。 不幸的是我有GeoTiff格式的数据,所以不可能通过光栅包直接读取它(而不是它,加载这个文件,我使用readGDAL命令)。

有没有机会使用这些数据准备3D图表? 我如何检索坐标?我知道如何使用as.matrix命令获取栅格值,但因为它是GeoTiff格式,我无法使用xmin或xmax。

1 个答案:

答案 0 :(得分:1)

我不明白为什么你不能用raster读取geotiff,但无论如何SpatialGridDataFrame(包sp)提供的readGDAL(包sp)可以直接传递给raster() plot3D

这是一个来自rgdal包的GeoTIFF的例子。请注意,rasterVis函数位于单独的包中,称为library(rgdal) library(rasterVis) r <- raster(system.file("pictures/cea.tif", package = "rgdal")[1]) plot3D(r) (而不是在rgl包中的plot3d):

library(rgdal)
library(raster)
library(rgl)

## read the file with raster 

r <- raster(system.file("external/test.ag", package="sp")[1])

## just use simple persp plot
persp(r)

## convert to sp's SpatialGridDataFrame (or use readGDAL directly)
## (for very large rasters this could be prohibitive in terms of memory)
sgdf <- as(r, "SpatialGridDataFrame")

## convert to R's image() format, a list with x,y vector and z matrix

x <- as.image.SpatialGridDataFrame(sgdf)

## plot with rgl, ugly but see ?surface3d for colour options etc.
surface3d(x$x, x$y, x$z)

dumb default 3D plot

rasterVis包处理所有缩放和颜色,并提供了一个很好的默认值。

如果您想深入研究支持包,这是一个简单的例子。

{{1}}

easy persp plot