[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