[R-sig-Geo] Example of universal kriging with R/gstat in GRASS needed

Thomas Adams Thomas.Adams at noaa.gov
Mon May 1 13:56:20 CEST 2006


Roger,

This is what the summary() command gives me before/after I use 
fullgrid(dem) <- FALSE


dem<-readFLOAT6sp("ohrfc.dem")
 > summary(dem)
Object of class SpatialGridDataFrame
Coordinates:
min max
coords.x1 -351000 675000
coords.x2 -486000 486000
Is projected: TRUE
proj4string : [+proj=lcc +lat_0=39.0000000000 +lat_1=60.0000000000 
+lat_2=30.0000000000 +lon_0=-86.0000000000 +x_0=0.0000000000 
+y_0=0.0000000000 +a=6378137 +rf=298.257223563 +no_defs 
+towgs84=0.000,0.000,0.000]
Number of points: 2
Grid attributes:
cellcentre.offset cellsize cells.dim
1 -346500 9000 114
2 -481500 9000 108
Data attributes:
ohrfc.dem
Min. : 0.0
1st Qu.: 183.0
Median : 244.0
Mean : 302.2
3rd Qu.: 335.0
Max. :1707.1
NA's :1513.0
=============================================
 > fullgrid(dem)<-FALSE
 > summary(dem)
Object of class SpatialPixelsDataFrame
Coordinates:
min max
s1 -351000 675000
s2 -432000 468000
Is projected: TRUE
proj4string : [+proj=lcc +lat_0=39.0000000000 +lat_1=60.0000000000 
+lat_2=30.0000000000 +lon_0=-86.0000000000 +x_0=0.0000000000 
+y_0=0.0000000000 +a=6378137 +rf=298.257223563 +no_defs 
+towgs84=0.000,0.000,0.000]
Number of points: 10799
Data attributes:
ohrfc.dem
Min. : 0.0
1st Qu.: 183.0
Median : 244.0
Mean : 302.2
3rd Qu.: 335.0
Max. :1707.1

 > names(dem)
[1] "ohrfc.dem"


Regards,
Tom




Roger Bivand wrote:
> On Fri, 28 Apr 2006, Thomas Adams wrote:
>
>   
>> Roger,
>>
>> Your suggestion:
>>
>> fullgrid(dem) <- FALSE
>>
>> did turn dem into class type SpatialGridDataFrame, but when I tried:
>>
>> z <- predict(UK_fit,newdata=dem)
>>
>> I got an error:
>>
>> Error in model.frame(... :
>> invalid variable type.
>>
>> I think I should restate the problem:
>>
>> I have a file 'temps' which has class SpatialPointsDataFrame read from 
>> GRASS 6.1, that looks like:
>>
>> coordinates cat x y z temp name
>> 1 (-341460, -2154.42) 1 -90.05 38.90 166 63 ALN
>> 2 (-198769, 301388) 2 -88.47 41.77 215 67 ARR
>> 3 (-334899, -40321) 3 -89.95 38.55 140 66 BLV
>> 4 (-240028, 163910) 4 -88.92 40.48 268 69 BMI
>> 5 (-187957, 114806) 5 -88.27 40.04 229 64 CMI
>> 6 (-351730, -37305.9) 6 -90.15 38.57 126 65 CPS
>> 7 (-242424, 98244.7) 7 -88.92 39.87 204 66 DEC
>> 8 (-179844, 315889) 8 -88.24 41.91 232 69 DPA
>> 9 (-136093, -24538.2) 9 -87.61 38.76 131 68 LWV
>> 10 (-278964, -126152) 10 -89.25 37.78 125 66 MDH
>> 11 (-140792, 302011) 11 -87.75 41.79 187 73 MDW
>> 12 (-364737, 274189) 12 -90.51 41.45 180 73 MLI
>> 13 (-190503, 54493.9) 13 -88.28 39.48 219 64 MTO
>>
>> and I have a a file 'dem' which has class SpatialGridDataFrame which 
>> just consists of grid of elevation values read from GRASS 6.1 using 
>> dem<-readFLOAT6sp(). (Sorry, I know I'm repeating myself).
>>
>> What I want to do is to use the grid of elevation values ('dem') as a 
>> proxy in the spatial interpolation of the 'temp' values in my 'temps' 
>> file that are located at the coordinates in parentheses(). Notice that 
>> the temps file also has 'z' values of elevations. So, is this what you 
>> already understood? Converting 'dem' to a SpatialPixelsDataFrame seemed 
>> to only leave me with the grid locations and not the elevation values — 
>> is this right.
>>     
>
> What does:
>
> summary(dem) 
>
> say before and after doing
>
> fullgrid(dem) <- FALSE?
>
> Afterwards it should be a SpatialPixelsDataFrame with 
>
> names(dem)
>
> being "z". Saying summary(dem) will give you an idea of what is inside, 
> str() should too.
>
> Roger
>
> PS. This is usually a one-off thing, once it works, you note down how, and 
> then it just does from then on.
>
>
>   
>> Thanks again for your help!
>>
>> Regards,
>> Tom
>>
>>
>> Roger Bivand wrote:
>>     
>>> On Fri, 28 Apr 2006, Thomas Adams wrote:
>>>
>>>   
>>>       
>>>> Roger,
>>>>
>>>> This got me further along, but I am encountering a problem with:
>>>>
>>>> z <- predict(UK_fit, newdata=BMcD_SPx)
>>>>
>>>> The gstat step works for me, where I have:
>>>>
>>>> UK_fit<-gstat(formula=temps$temp~dem,data=temps,model=efitted)
>>>>
>>>> temps has class SpatialPointsDataFrame:
>>>>
>>>>               coordinates cat      x     y    z temp name
>>>> 1     (-341460, -2154.42)   1 -90.05 38.90  166   63  ALN
>>>> 2       (-198769, 301388)   2 -88.47 41.77  215   67  ARR
>>>> 3       (-334899, -40321)   3 -89.95 38.55  140   66  BLV
>>>> 4       (-240028, 163910)   4 -88.92 40.48  268   69  BMI
>>>> 5       (-187957, 114806)   5 -88.27 40.04  229   64  CMI
>>>> 6     (-351730, -37305.9)   6 -90.15 38.57  126   65  CPS
>>>> 7      (-242424, 98244.7)   7 -88.92 39.87  204   66  DEC
>>>> 8       (-179844, 315889)   8 -88.24 41.91  232   69  DPA
>>>> 9     (-136093, -24538.2)   9 -87.61 38.76  131   68  LWV
>>>> 10     (-278964, -126152)  10 -89.25 37.78  125   66  MDH
>>>> 11      (-140792, 302011)  11 -87.75 41.79  187   73  MDW
>>>> 12      (-364737, 274189)  12 -90.51 41.45  180   73  MLI
>>>> 13     (-190503, 54493.9)  13 -88.28 39.48  219   64  MTO
>>>>
>>>> and dem has class SpatialGridDataFrame and just consists of grid values.
>>>>     
>>>>         
>>> I think 
>>>
>>> fullgrid(dem) <- FALSE
>>>
>>> should make a SpatialPixelsDataFrame, but you'll have to make sure the 
>>> name of the dem variable is the same as in the formula.
>>>
>>> Roger
>>>
>>>   
>>>       
>>>> I tried to create a SpatialPixelsDataFrame for predict(), but with (for 
>>>> example):
>>>>
>>>> m = SpatialPixelsDataFrame(points=meuse.grid[c("x","y")],data=meuse.grid)
>>>>
>>>> I have nothing like meuse.grid, so this does not work. I can use 
>>>> image(dem), which produces a plot of elevation values. My point is that 
>>>> meuse.grid and my dem files have very different structures.
>>>>
>>>> I'm not sure where to go to from here.
>>>>
>>>> Regards,
>>>> Tom
>>>>
>>>>
>>>> Roger Bivand wrote:
>>>>     
>>>>         
>>>>> On Thu, 27 Apr 2006, Thomas Adams wrote:
>>>>>
>>>>>   
>>>>>       
>>>>>           
>>>>>> List:
>>>>>>
>>>>>> I can not seem to work out the syntax for using R/gstat within a GRASS 
>>>>>> 6.1 session to do universal kriging. I have a DEM (elevation data on a 
>>>>>> grid) and point data for temperature; theoretically, the temperatures 
>>>>>> should relate to elevation. So, I am trying to spatially interpolate the 
>>>>>> temperature data based on the elevations at the grid points. How do I 
>>>>>> setup the gstat command in R/gstat (and using spgrass6, of course)? I 
>>>>>> have no trouble reading in my elevation data (DEM) from GRASS and I have 
>>>>>> no problem doing ordinary kriging of my temperature data using 
>>>>>> GRASS/R/gstat.
>>>>>>     
>>>>>>         
>>>>>>             
>>>>> What do the data look like? Do you have temperature and elevation at the
>>>>> observation points and elevation over the grid? If temperature is the 
>>>>> variable for which you want to interpolate, then the formula argument in 
>>>>> the gstat() function would be temp ~ elev, data=pointsdata (if a 
>>>>> SpatialPointsDataFrame no need for location= ~ x + y). Then the predict() 
>>>>> step would need a SpatialGridDataFrame object as newdata, with elev as 
>>>>> (one of) the columns in the data slot.
>>>>>
>>>>> An example for the Meuse bank data in Burrough and McDonnell:
>>>>>
>>>>> cvgm <- variogram(Zn ~ Fldf, data=BMcD, width=100, cutoff=1000)
>>>>> uefitted <- fit.variogram(cvgm, vgm(psill=1, model="Exp", range=100, 
>>>>>   nugget=1))
>>>>> UK_fit <- gstat(id="UK_fit", formula = Zn ~ Fldf, data = BMcD, 
>>>>>   model=uefitted)
>>>>> z <- predict(UK_fit, newdata=BMcD_SPx)
>>>>>
>>>>> where BMcD_SPx is a SpatialPixelsDataFrame (the grid has ragged edges) 
>>>>> with flood frequencies in Fldf (actually a factor, but works neatly).
>>>>>
>>>>> Hope this helps,
>>>>>
>>>>> Roger
>>>>>
>>>>>   
>>>>>       
>>>>>           
>>>>>> Regards,
>>>>>> Tom
>>>>>>
>>>>>>
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>   
>>>>>       
>>>>>           
>>>>     
>>>>         
>>>   
>>>       
>>
>>     
>
>   


-- 
Thomas E Adams
National Weather Service
Ohio River Forecast Center
1901 South State Route 134
Wilmington, OH 45177

EMAIL:	thomas.adams at noaa.gov

VOICE:	937-383-0528
FAX:	937-383-0033




More information about the R-sig-Geo mailing list