Guest User

Untitled

a guest
Oct 16th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. library(raster)
  2. library(ncdf4)
  3. library(foreach)
  4. library(doSNOW)
  5.  
  6. cl <- makeCluster(8, type="SOCK") # for 4 cores machine
  7. registerDoSNOW (cl)
  8.  
  9. setwd("MY/WORKING/DIRECTORY/")
  10. temp <- nc_open("ppt_1958.nc")
  11.  
  12. temp <- raster("ppt_1958.nc")
  13. temp <- stack("ppt_1958.nc")
  14.  
  15. URL <- "https://climate.northwestknowledge.net/TERRACLIMATE-DATA/TerraClimate_ppt_1959.nc"
  16.  
  17. a <- "/tmp/RtmpTF076t/file1906f2e84c4f4"
  18.  
  19. download.file(url = URL, destfile = a)
  20.  
  21. rasternc <- function(nc, array = FALSE, var, z = 1,
  22. xmin = -180, xmax = 180,
  23. ymin = -90, ymax = 90,
  24. dx = 1/24, dy = 1/24){
  25. f <- ncdf4::nc_open(filename = nc)
  26. cat(paste("The file has",f$nvars,"variables:n"))
  27. cat(names(f$var))
  28. if(missing(var)){
  29. choice <- utils::menu(names(f$var), title="Choose var")
  30. nvar <- names(f$var)[choice]
  31. u <- ncdf4::ncvar_get(f, nvar)
  32. cat(paste0("nThe '", nvar, "' array is ",
  33. format(object.size(u), units = "Mb"), "n"))
  34. } else {
  35. u <- ncdf4::ncvar_get(f, var)
  36. cat(paste0("nThe '", var, "' array is ",
  37. format(object.size(u), units = "Mb"), "n"))
  38. }
  39. if(array){
  40. return(u)
  41. }
  42. lon <- seq(xmin, xmax, by = dx)
  43. lat <- seq(ymin, ymax, by = dy)
  44.  
  45. ru1 <- raster::flip(raster::raster(t(u[1:dim(u)[1],
  46. dim(u)[2]:1,
  47. z]),
  48. xmn = min(lon),xmx = max(lon),
  49. ymn = min(lat),ymx = max(lat),
  50. crs="+init=epsg:4326"), "y")
  51.  
  52. cat(paste0("nThis raster is ", format(object.size(ru1), units = "Mb")))
  53. return(ru1)
  54. }
  55.  
  56. library(raster)
  57. library(cptcity)
  58. r <- rasternc(a)
  59. #The 'ppt' array is 3417.2 Mb
  60. #This raster is 284.8 Mb
  61.  
  62. # boring plot
  63. #spplot(r, scales = list(draw = T), main = "TerraClimate_ppt_1959")
  64. # still boring plot
  65. #spplot(r, scales = list(draw = T), main = "TerraClimate_ppt_1959",
  66. # col.regions = cpt())
  67. # perfection
  68. spplot(r, scales = list(draw = T), main = "TerraClimate_ppt_1959",
  69. col.regions = lucky())
  70.  
  71. rr <- stars::st_as_stars(r)
  72. plot(rr, col = cpt(), axes = T)
Add Comment
Please, Sign In to add comment