[R-sig-Geo] bbox 4-dimensional objects - suitable method?

Edzer Pebesma edzer.pebesma at uni-muenster.de
Mon Nov 23 14:45:16 CET 2009


sp classes SpatialPoints* SpatialPixels* and SpatialGrid* already allow
3- and higher dimensional data; providing an example with nonsense data:

> library(sp)
> data(meuse)
> meuse$z = rnorm(155)
> coordinates(meuse)=~x+y+z
> summary(as(meuse, "SpatialPoints"))
Object of class SpatialPoints
            min          max
x 178605.000000 1.813900e+05
y 329714.000000 3.336110e+05
z     -2.168683 3.006463e+00
Is projected: NA
proj4string : [NA]
Number of points: 155

It can be used this way to do 3D interpolation (package gstat), and
several of the sp methods work; obviously, several do ignore everything
beyond x and y.

If you store your time as double, you can even think about adding that
as one of the coordinates.

Chapter 6 of http://www.asdar-book.org/ gives code examples of this
approach, where a third dimension represents (posix) time, and methods
are given to select a certain spatial grid from a
SpatialTimeGridDataFrame based on its posix time (range).

The motivation for your approach becomes stronger when time cannot be
stored as double (numeric); I find it harder to see the motivation to
store z differently from the x and y coordinates, create a separate
bounding box for it and rewrite all methods.

Torleif Markussen Lunde wrote:
> Hi
> As previously mentioned I am working on 3D and 4D spatial classes. To get 
> things compatible with the other sp-classes I would like to ask for your 
> opinion what would be the most suitable bbox methods for Spatial3dArrays and 
> Spatial4dArrays.
> My first thought was that bbox should return the 2D geographical extent of the 
> object. This to comply with other spatial methods. For the 3D case an 
> additional slot, btime is added to show the temporal extent of the object. As 
> writing the 4D case, I started wondering whether it would be wise to stick to 
> this (my conclusion at the moment is yes). In that case a new slot called 
> zextent could be added.
> To retrieve the extent of the different dimensions one would have three 
> functions; bbox(), btime(), and zextent()
> The other option is to make a bbox slot as a list. bbox() would still return 
> x-y extent, while bbox.full() could return a list of the full extent:
> list(bbox = matrix(c(1,1,4,4), 2,2, 
>      			dimnames = list(c("long", "lat"), 
> 		     	c("min", "max"))),
>     btime = matrix(c("2002-01-01 06:00:00", "2002-01-01 06:00:00"), 1, 2, 
>      			dimnames = list(c("time"), 
> 		     	c("min", "max"))),
>     zextent = matrix(c(512, 1024), 1,2, 
>      			dimnames = list(c("masl"), 
> 		     	c("min", "max"))))
> Since bbox is defined as a matrix in Spatial, this would be a bad idea. So, at 
> best bbox could be a matrix of min/max of x, y, and z (since they all are 
> numeric). bbox() would then return a x, y subset of bbox(), while bbox.full() 
> could return a list(xyz, time). 
> Any comments on what would be best suitable to be compatible with the other 
> Spatial classes?
> Best wishes
> Torleif
> PhD candidate
> Centre for International Health
> Bjerknes Centre for Climate Research
> University of Bergen
> Norway
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Edzer Pebesma
Institute for Geoinformatics (ifgi), University of Münster
Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
8333081, Fax: +49 251 8339763 http://ifgi.uni-muenster.de/
http://www.springer.com/978-0-387-78170-9 e.pebesma at wwu.de

More information about the R-sig-Geo mailing list