Skip to content
Prev 1171 / 29559 Next

drawing order in spplot

Thanks for this Arien,

Just can't get it to work though. I messed around a bit more yesterday 
but couldn't find a way. No one else on the list replied. I have another 
reason to want to do something similar, so I was hoping there was a work 
around out there. Here is the data if you (or anyone else) can help.

load(file=url("ftp://200.23.34.16/simulacion/SPATIAL/chisgrid.rob"))
load(file=url("ftp://200.23.34.16/simulacion/SPATIAL//municipios.rob"))

#municipios was originally imported from a shapefile. The "dem" is a 
coarse 1 km x 1km grid imported from GRASS 5.7. Both use UTM NAD27, but 
the projections are not #set. The data represents the state of Chiapas 
in Southern Mexico

image(chisgrid,"dem",col=terrain.colors(100))
plot(municipios,add=T)

#Gives what we wanted in base graphics

#But
 
spplot(municipios, "AREA", panel <- function(x,y,...){
    sp.grid(chisgrid)
    panel.polygonsplot(x,y,...)
    })
#Doesn't

#and

municips <- list("sp.polygons", municipios)
spplot(chisgrid["dem"],sp.layout=municips)

#Draws them in the wrong order.

#As an aside, this is great fun with rgl and the students loved it. Can 
anyone improve the code?

view3d<-function(grid=chisgrid,dem=1,drape=2,exag=3,pal=sp.theme()$regions$col){
  fullgrid(grid)<-TRUE
  y<-grid[[dem]]*exag
  y[is.na(y)]<-0
  dim(y)<-grid at grid@cells.dim

  x <- grid at grid@cellsize[1]*(1:grid at grid@cells.dim[1])
  z <-grid at grid@cellsize[2]*(1:grid at grid@cells.dim[2])

  y2<-grid[[drape]]
  y2[!is.na(y2)]<-as.numeric(cut( y2[!is.na(y2)],length(pal)))
  y2[is.na(y2)]<-0

  ylim <- range(y2)
  ylen <- ylim[2] - ylim[1] + 1

  pal<-c("black",pal)
  col <- pal[ y2-ylim[1]+1 ] # assign colors to heights for each point

  rgl.clear()
  rgl.surface(x, z, y, color=col)
}

view3d(drape=1,pal=terrain.colors(100))

Duncan
Arien Lam wrote: