[R-sig-Geo] Basic raster operations

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Mon Jun 16 11:27:53 CEST 2008


I'm getting frustrated at what I thought would be simple raster 
manipulations...

  * How can I shift a SpatialGridDataFrame? I can't just change the 
coordinates:

 > coordinates(compare)=coordinates(compare)+10
Error in `coordinates<-`(`*tmp*`, value = c(10.5, 11.5, 12.5, 13.5, 
14.5,  :
   setting coordinates cannot be done on Spatial objects, where they 
have already been set

  Do I have to construct a new GridTopology object, then feed that to 
SpatialGridDataFrame along with the @data slot from the original? It 
seems to work, but I was hoping for something simpler, and I always get 
the jitters when working with slots since I tend to think of them as 
private object data that I shouldn't mess with. Isn't there a 'getData' 
method?

  * How can I construct larger SpatialGridDataFrames by tiling smaller ones?

  If they operated like matrices or data frames I could just cbind or 
rbind them together. I think I'm going to have to do a similar procedure 
as above - work out the new GridTopology and pass a new data frame 
constructed from merging the individual data frames together and making 
sure it's all in the right order. Which is tricky, because the 
SpatialGridDataFrame constructor expects its data argument to start at 
top-left and sweep across and then down. To paste another raster to the 
right of an existing one would mean mingling the data frame rows....

  Or am I just missing something simple with this? Of course it *will* 
be simple, once I've written the tiling functions:

  foo = tile(bar,west=baz)

will construct a new grid 'foo' which is bar with baz pasted on it's 
western edge, equivalent to:

  foo = tile(baz,east=bar)

  it'll check the grids have the same number of rows (or for N-S tiling, 
columns) and that the data frames are similar.

Barry




More information about the R-sig-Geo mailing list