[R-sig-Geo] flip SpatialGridDataFrame across axis

Michael Sumner mdsumner at gmail.com
Mon Nov 2 22:45:13 CET 2009


It would be nice if the "[" methods on ?'SpatialGridDataFrame-class'
could perform the same indexing orientation, but that uses the
row/column values for [i,j,...]  to obtain the subsetted cells which
are regridded via SpatialPixels - so the direction is lost. I'm not
sure it's a good idea to modify that - given that the indexing could
be used to subset at the same time - which is probably why the authors
have written it that way.  ;)

But, I've been meaning to try something like this for ages, and this
seems to work:

flipHorizontal <- function(x) {
	if (!inherits(x, "SpatialGridDataFrame")) stop("x must be a
SpatialGridDataFrame")
	grd <- getGridTopology(x)
	idx = 1:prod(grd at cells.dim[1:2])
	m = matrix(idx, grd at cells.dim[2], grd at cells.dim[1], byrow =
TRUE)[,grd at cells.dim[1]:1]
	idx = as.vector(t(m))
	x at data <- x at data[idx, TRUE, drop = FALSE]
	x
}

flipVertical <- function(x) {
	if (!inherits(x, "SpatialGridDataFrame")) stop("x must be a
SpatialGridDataFrame")
	grd <- getGridTopology(x)
	idx = 1:prod(grd at cells.dim[1:2])
	m = matrix(idx, grd at cells.dim[2], grd at cells.dim[1], byrow =
TRUE)[grd at cells.dim[2]:1, ]
	idx = as.vector(t(m))
	x at data <- x at data[idx, TRUE, drop = FALSE]
	x
}

The approach there is stolen from 'subs.SpatialGridDataFrame' in
sp/R/SpatialGridDataFrame-methods.R - so thanks as ever to the
authors!

Cheers, Mike.

On Tue, Nov 3, 2009 at 7:49 AM, Sebastian P. Luque <spluque at gmail.com> wrote:
> On Tue, 3 Nov 2009 07:40:59 +1100,
> Michael Sumner <mdsumner at gmail.com> wrote:
>
>> Hi Sebastian, I think the "north-south" note is referring to
>> possibly-rotated grids (using the transform values supported by many
>> formats) - not to "north vs. south" in orientation.
>
>> You can easily flip a grid by reverting it (one band at a time) to an
>> xyz image and using indexing. I find this approach the least confusing
>> and easily repeatable.
>
> [...]
>
> Thanks for the quick reply Mike!!
>
>
> Cheers,
>
> --
> Seb
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>



More information about the R-sig-Geo mailing list