Guest User

Untitled

a guest
May 24th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. library(gstat)
  2. library(sp)
  3. library(raster)
  4.  
  5. # create a regular grid
  6. nx=100 # number of columns
  7. ny=100 # number of rows
  8. srgr <- expand.grid(1:ny, nx:1)
  9. names(srgr) <- c('x','y')
  10. gridded(srgr)<-~x+y
  11.  
  12. # generate a spatial process (unconditional simulation)
  13. g<-gstat(formula=z~x+y, locations=~x+y, dummy=T, beta=15, model=vgm(psill=3, range=10, nugget=0,model='Exp'), nmax=20)
  14. sim <- predict(g, newdata=srgr, nsim=1)
  15. r<-raster(sim)
  16.  
  17. # generate sample data (Poisson process)
  18. library(spatstat)
  19. int<-0.02
  20. rpp<-rpoispp(int,win=owin(c(0,nx),c(0,ny)))
  21. df<-as.data.frame(rpp)
  22. coordinates(df)<-~x+y
  23.  
  24. # assign raster values to sample data
  25. dfpp <-raster::extract(r,df,df=TRUE)
  26. smp<-cbind(coordinates(df),dfpp)
  27. smp<-smp[complete.cases(smp), ]
  28. coordinates(smp)<-~x+y
  29.  
  30. # fit variogram to sample data
  31. vs <- variogram(sim1~1, data=smp)
  32. m <- fit.variogram(vs, vgm("Exp"))
  33. plot(vs, model = m)
  34.  
  35. # generate 2 conditional simulations with one core processor
  36. one <- krige(formula = sim1~1, locations = smp, newdata = srgr, model = m,nmax=12,nsim=2)
  37.  
  38. # plot simulation 1 and 2: statistics (min, max) are ok, simulations are also ok.
  39. spplot(one["sim1"], main = "conditional simulation")
  40. spplot(one["sim2"], main = "conditional simulation")
  41.  
  42. # generate 2 conditional with parallel processing
  43. library("parallel")
  44. no_cores<-detectCores()
  45. cl<-makeCluster(no_cores)
  46. parts <- split(x = 1:length(srgr), f = 1:no_cores)
  47. clusterExport(cl = cl, varlist = c("smp", "srgr", "parts","m"), envir = .GlobalEnv)
  48. clusterEvalQ(cl = cl, expr = c(library('sp'), library('gstat')))
  49. par <- parLapply(cl = cl, X = 1:no_cores, fun = function(x) krige(formula=sim1~1, locations=smp, model=m, newdata=srgr[parts[[x]],], nmax=12, nsim=2))
  50. stopCluster(cl)
  51.  
  52. # merge all parts
  53. mergep <- maptools::spRbind(par[[1]], par[[2]])
  54. mergep <- maptools::spRbind(mergep, par[[3]])
  55. mergep <- maptools::spRbind(mergep, par[[4]])
  56.  
  57. # create SpatialPixelsDataFrame from mergep
  58. mergep <- SpatialPixelsDataFrame(points = mergep, data = mergep@data)
  59.  
  60. # plot mergep: statistics (min, max) are ok, but simulated maps show "vertical lines". i don't understand why.
  61. spplot(mergep[1], main = "conditional simulation")
  62. spplot(mergep[2], main = "conditional simulation")
Add Comment
Please, Sign In to add comment