[R-sig-Geo] Spatial Interpolation of Regularly Gridded Data

Greg King gregspam at kooji.com
Tue Apr 7 00:00:44 CEST 2009


Hi,

I'm fairly new to R, but finding the experience a good one.  However I am a
little overwhelmed by the number of packages and not sure I am necessarily
using the most appropriate ones.

Here is the background to what I am trying to achieve:  I have a CSV file
which contains weather forecast data for latitude and longitude points (see
attached out.csv, the data I understand is on WGS84
http://www.ready.noaa.gov/faq/geodatums.html).  The sample points are at
half degree intervals.  My objective is to work out what the forecast data
is at any specific given latitude/longitude by interpolating data from the
0.5x0.5 degree grid.  I am doing this for a number of different time points
using the following functions:

library(akima)
library(rgdal)

gks <- function(inLat,inLon,dframe,variab) {
    wind.grid <- expand.grid(lat=inLat, lon=inLon)
    coordinates(wind.grid) <- ~ lat+lon
    proj4string(wind.grid) <- CRS("+init=epsg:4326")
    pnt<-interpp(coordinates(dframe)[,1], coordinates(dframe)[,2],
z=as.data.frame(dframe)[,1],
coordinates(wind.grid)[,1],coordinates(wind.grid)[,2],linear=TRUE)
    return(pnt$z)
}

interp_gk <- function(lat, lon) {
    wind<-read.csv(file="/Users/greg/Out.csv",head=TRUE,sep=",",
colClasses=c("POSIXct","numeric","numeric","numeric","numeric"))
    coordinates(wind)=~lat+lon
    proj4string(wind) <- CRS("+init=epsg:4326")

    times<-unique(wind$vt)
    columns<-names(wind)[2:length(names(wind))]

    dOut<-data.frame(dateTime=times[1])

    for (i in 1:length(times)) {
    dOut[i,"dateTime"]<-times[i]
        for (j in 1:length(columns)) {
            sset<-subset(wind, wind$vt==times[i], select=c(columns[j]))
            dOut[i,columns[j]]<-gks(lat,lon,sset,columns[j])
        }
    }
    dOut<-cbind(dOut, mag=sqrt(dOut$ugrd_0^2+dOut$vgrd_0^2))
    return(dOut)
}

However, I have the following concerns:

   - Should I really be using akima?  The documentation states it is not for
   use on regularly spaced grids - what are my alternatives?
   - The interp funcrtion will not work for cubic spline "linear=FALSE"
   interpolation (is it because my data is regularly gridded?).  How can I
   achieve cubic spline interpolation?
   - Is my function really using the Cordinate reference system specified?
   When I comment out the CRS lines, my functions return the same values?

Lots of questions I appreciate, but I am curious!  It seems R can achieve
what I am trying to do... but I may just be missing some vital bits of
information.

Thanks,

Greg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20090406/6b460881/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: out.csv
Type: application/octet-stream
Size: 95054 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20090406/6b460881/attachment.obj>


More information about the R-sig-Geo mailing list