我想在 R 中准备 3D 图形!使用栅格数据。我听说光栅包中的命令 plot3d 。不幸的是,我有 GeoTiff 格式的数据,因此无法直接通过 raster 包读取它(而不是它,要加载此文件,我使用的是 readGDAL 命令)。
有没有机会使用这些数据准备 3D 图形?如何检索坐标?我知道如何使用 as.matrix 命令获取栅格值,但因为它是 GeoTiff 格式,我无法使用 xmin 或 xmax。
我不明白为什么你不能用 读取geotiff raster
,但无论如何,(package rgdal)SpatialGridDataFrame
提供的readGDAL
(package sp)可以直接传递给raster()
.
这是一个来自 rgdal 包的 GeoTIFF 示例。请注意,rasterVis 函数位于单独的包中并被调用plot3D
(不是 rgl 包中的 plot3d):
library(rgdal)
library(rasterVis)
r <- raster(system.file("pictures/cea.tif", package = "rgdal")[1])
plot3D(r)
rasterVis 包处理所有的缩放和颜色,并提供了一个很好的默认值。
如果您想进一步研究支持包,这里有一个简单的示例。
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)