[R-sig-Geo] how to go from SpatialGrid to SpatialGridDataFrame ?

A Horacio Samaniego horacio at unm.edu
Wed Feb 1 11:03:54 CET 2006


I wonder how I should go from a SpatialGrid to a SpatialGridDataFrame.

I have defined a grid using the functions from the sp, gstat and spgrass6 
packages:

G<-gmeta6()
kk<-SpatialGrid(GridTopology(c(G$south,G$west),c(G$nsres,G$ewres),c(G$rows,G$cols)),alb.proj)
> str(kk)
Formal class 'SpatialGrid' [package "sp"] with 5 slots
   ..@ grid       :Formal class 'GridTopology' [package "sp"] with 3 slots
   .. .. ..@ cellcentre.offset: num [1:2] -1333373 -2356259
   .. .. ..@ cellsize         : num [1:2] 1000 1000
   .. .. ..@ cells.dim        : int [1:2] 2899 4615
   ..@ grid.index : int(0)
   ..@ coords     : num [1:2, 1:2] -1333373  1564162 -2356259  2257928
   .. ..- attr(*, "dimnames")=List of 2
   .. .. ..$ : NULL
   .. .. ..$ : chr [1:2] "coords.x1" "coords.x2"
   ..@ bbox       : num [1:2, 1:2] -1333872 -2356759  1564662  2258428
   .. ..- attr(*, "dimnames")=List of 2
   .. .. ..$ : chr [1:2] "coords.x1" "coords.x2"
   .. .. ..$ : chr [1:2] "min" "max"
   ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
   .. .. ..@ projargs: chr "+proj=aea +lat_1=29.75 +lat_2=45.25 +lat_0=37.5 
+lon_0=-96 +x_0=0 +y_0=0 +no_defs +a=6378137 +rf=298.257222101 
+towgs84=0.000,0"| __truncated__

Now I try to interpolate on that grid, with no success:
interp.vals<-idw(var1~1,data,newdata=kk)
Error in idw(corrext ~ 1, data = data.new_alb[gd.glm, ], newdata = 
data.grd) :
 	no direct or inherited method for function 'idw' for this call

So, I guess that I need to have a 'SpatialGridDataFrame' instead of just 
'SpatialGrid' as the interpolation needs to be assigned to a spatial 
location

kk2<-as(kk,'SpatialGridDataFrame');
Formal class 'SpatialGridDataFrame' [package "sp"] with 6 slots
   ..@ data       :Formal class 'AttributeList' [package "sp"] with 1 slots
   .. .. ..@ att: list()
   ..@ grid       :Formal class 'GridTopology' [package "sp"] with 3 slots
   .. .. ..@ cellcentre.offset: num [1:2] -1333373 -2356259
   .. .. ..@ cellsize         : num [1:2] 1000 1000
   .. .. ..@ cells.dim        : int [1:2] 2899 4615
   ..@ grid.index : int(0)
   ..@ coords     : num [1:2, 1:2] -1333373  1564162 -2356259  2257928
   .. ..- attr(*, "dimnames")=List of 2
   .. .. ..$ : NULL
   .. .. ..$ : chr [1:2] "coords.x1" "coords.x2"
   ..@ bbox       : num [1:2, 1:2] -1333872 -2356759  1564662  2258428
   .. ..- attr(*, "dimnames")=List of 2
   .. .. ..$ : chr [1:2] "coords.x1" "coords.x2"
   .. .. ..$ : chr [1:2] "min" "max"
   ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
   .. .. ..@ projargs: chr "+proj=aea +lat_1=29.75 +lat_2=45.25 +lat_0=37.5 
+lon_0=-96 +x_0=0 +y_0=0 +no_defs +a=6378137 +rf=298.257222101 
+towgs84=0.000,0"| __truncated__

promotes the grid to the correct class SpatialGridDataFrame but do not 
assign to space for the variable. Is there any way to assign an empty 
"slot" just as we would do for a data.frame?

To sum.  I cant seem to be able to create a "slot" (or z dimension) to 
hold the output of my interpolation. Is there any trick out there that I 
am missing? Any help will be appreciated.

thanks,

H




More information about the R-sig-Geo mailing list