我想在R中准备3D图形!使用栅格数据。 我在raster包中听说过命令plot3d。 不幸的是我有GeoTiff格式的数据,所以不可能通过光栅包直接读取它(而不是它,加载这个文件,我使用readGDAL命令)。
有没有机会使用这些数据准备3D图表? 我如何检索坐标?我知道如何使用as.matrix命令获取栅格值,但因为它是GeoTiff格式,我无法使用xmin或xmax。
答案 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)
rasterVis包处理所有缩放和颜色,并提供了一个很好的默认值。
如果您想深入研究支持包,这是一个简单的例子。
{{1}}