[R-sig-Geo] Fwd: flip SpatialGridDataFrame across axis

Michael Sumner mdsumner at gmail.com
Tue Nov 3 09:32:36 CET 2009


Hi Edzer, no problem at all - Robert's approach is much less verbose,
but I think this explicit method is easier to understand and share as
it exposes the underlying indexing.

I agree there's a sense that it is image processing, but in the "GIS
raster" sense (image, DEM, data, etc.)  it's a useful way of
correcting broken or incomplete metadata - and with the range of
orientation conventions and ways of storing those it's handy to have.

Do you think it belongs as a method in the maptools elide family - at
least eventually?  I guess that depends on future support for rasters
there.  Given the terminology used there it's probably better to call
the functions "reflectHorizontal/Vertical" rather than flip, even if
they exist as standalones for now?

Regards, Mike.

On Tue, Nov 3, 2009 at 7:13 PM, Edzer Pebesma
<edzer.pebesma at uni-muenster.de> wrote:
> Michael, to be hounest, it even surprised me, being the author, that
>
> data(meuse.grid)
> gridded(meuse.grid) = ~x+y
> fullgrid(meuse.grid) = TRUE
> image(meuse.grid[104:1,])
>
> would not flip the image. It just works hard to not destroy the spatial
> location of all individual pixels -- it will select all rows in reverse
> order, but in the end put everything back in place. What you do is kind
> of more like image analysis, as it  moves the location of pixels, right?
>
> Do you mind if we add your flipXxx functions to sp?
> --
> Edzer
>
> Michael Sumner wrote:
>> Ergh, sorry for the update -  a pox on Gmail for sabotaging my
>> attempts at plain text!  I've attached the functions in a text file to
>> avoid [ampersand] to " at " conversion ...
>>
>>
>>
>>
>> ---------- Forwarded message ----------
>> From: Michael Sumner <mdsumner at gmail.com>
>> Date: Tue, Nov 3, 2009 at 8:45 AM
>> Subject: Re: [R-sig-Geo] flip SpatialGridDataFrame across axis
>> To: r-sig-geo at stat.math.ethz.ch
>>
>>
>> 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
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> 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