Hi again, In working on this some more I discovered that I need to transpose a data matrix, then flip the raster object created from the matrix to get the proper rendering in a plot. Can someone explain why that is?
My example has to do with the state of California, with 2918 1/8-degree cells. I regret I can't provide a small working example--I don't know to make one up that would clearly show correct vs. incorrect geographic rendering. library(maps) library(maptools) library(raster) library(rasterVis) data(stateMapEnv) state.map <- map("state", plot=F) # longitude and latitude are vectors giving the respective coordinates # for cells that are non-NA (n=2918) xmn <- min(longitude); xmx <- max(longitude) ymn <- min(latitude); ymx <- max(latitude) x.bounds <- seq(xmn - 1/16, xmx + 1/16, by = 1/8) # grid spacing is 1/8 degree y.bounds <- seq(ymn - 1/16, ymx + 1/16, by = 1/8) ii <- findInterval(longitude, x.bounds) # indices jj <- findInterval(latitude, y.bounds) # indices index.matrix <- cbind(ii,jj) num.long <- length(x.bounds) - 1 num.lat <- length(y.bounds) - 1 mat <- array(NA, dim=c(num.long, num.lat)) # full, enclosing array with rows=long and columns=lat mat[index.matrix] <- runif(n=length(longitude)) # insert non-NA values in the right cells # Why do I need to transpose the matrix then flip the raster for proper rendering in levelplot? myrast <- flip(raster(t(mat), xmn=xmn, xmx=xmx, ymn=ymn, ymx=ymx, crs="+proj=longlat +datum=WGS84"), direction="y") ext <- as.vector(extent(myrast)) boundaries <- map('state', fill=TRUE, xlim=ext[1:2], ylim=ext[3:4], plot=FALSE) IDs <- sapply(strsplit(boundaries$names, ":"), function(x) x[1]) bPols <- map2SpatialPolygons(boundaries, IDs=IDs, proj4string=CRS(projection(myrast))) levelplot(myrast, panel = function(...) { panel.levelplot(...) sp.polygons(bPols) }, margin=F) --Scott Waichler _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo