How to interpolate point value using kriging method with R and GRASS 6

From GRASS-Wiki
Revision as of 09:57, 19 May 2006 by Dassau (talk | contribs)

Jump to: navigation, search

Of all the methods we tried this is the most easy and (I suppose) exact too:

You have to have in your library the packages "gstat" and "spgrass6", you can download this last one directly from R using the command "install.packages". In GRASS we have a vector file named "giaciture_cat_clean3" and we want to do a prediction on this data... these are the commmands:

enter in R from GRASS and digit:

>library(spgrass6) 
>giaciture <- getSites6sp("giaciture_cat_clean3") #get vector points as SpatialPointsDataFrame 
>class(giaciture) #shows the class of "giaciture" (SpatialPointsDataFrame)
>G <- gmeta6() #get region from GRASS to R

now if you want you can continue to work in R from GRASS or not...

>grd <- GridTopology(cellcentre.offset=c(G$west+(G$ewres/2),G$south+(G$nsres/2)),cellsize=c(G$ewres, G$nsres),
cells.dim=c(G$cols, G$rows)) #create a grid from the region settings of GRASS, it is very important to have 
square cells, so you can set the region settings of GRASS or you can give directly square dimensions using the values: e.g."cells.dim=c(50,50)"
>mask_SG <- SpatialGridDataFrame(grd,data=list(k=rep(1,G$cols*G$rows)),proj4string=CRS(G$proj4)) #create a 
SpatialGridDataFrame
>class(mask_SG)
>library(gstat)
>cvgm <- variogram(IMMERSIONE~1,locations=giaciture,width=400,cutoff=4000) #create variogram, and "IMMERSIONE" 
here is the our variable, the variable on wich we have to do the prediction, ~ 1 select the type of kriging, this 
is the ordinary one
>efitted <- fit.variogram(cvgm,vgm(psill=5000,model="Exp",range=1500,nugget=8000)) #choose the model to fit 
variogram (here is exponential) and give the estimated parameters of the variogram (partial sill, range and 
nugget)
>OK_pred <- krige(IMMERSIONE~ 1,locations=giaciture,newdata=mask_SG,model=efitted) # make the kriging prediction
>names(OK_pred) #show the name of variable kriged
>writeRast6sp(OK_pred,"OK_pred",zcol="var1.pred",NODATA=-9999) #write a raster file and save it in GRASS, now you 
can open it from there.

that's all!

special thanks to Roger Bivand, even ready to lend a hand!