plot3d для чтенияGDAL? - PullRequest
       13

plot3d для чтенияGDAL?

0 голосов
/ 11 сентября 2011

Я хотел бы подготовить 3D-график в R! используя растровые данные. Я слышал о команде plot3d в растровом пакете. К сожалению, у меня есть данные в формате GeoTiff, поэтому невозможно прочитать их напрямую через растровый пакет (вместо этого, чтобы загрузить этот файл, я использую команду readGDAL).

Есть ли возможность подготовить 3D-график, используя такие данные? Как я могу получить координаты? Я знаю, как получить значения растра с помощью команды as.matrix, но, поскольку он в формате GeoTiff, я не могу использовать xmin или xmax.

1 Ответ

1 голос
/ 12 сентября 2011

Я не понимаю, почему вы не можете прочитать геотиф с raster, но, во всяком случае, SpatialGridDataFrame (package sp), предоставленный readGDAL (package rgdal), может быть передан непосредственно в raster().

Вот пример с GeoTIFF из пакета rgdal.Обратите внимание, что функция rasterVis находится в отдельном пакете и называется plot3D (не plot3d, входящий в пакет rgl):

library(rgdal)
library(rasterVis)

r <- raster(system.file("pictures/cea.tif", package = "rgdal")[1])
plot3D(r)

dumb default 3D plot

Пакет 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)

easy persp plot

...