0

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

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

4

1 回答 1

1

我不明白为什么你不能用 读取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)

愚蠢的默认 3D 绘图

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)

简单的透视图

于 2011-09-11T21:36:42.953 回答