Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(raster)
- library(ncdf4)
- library(foreach)
- library(doSNOW)
- cl <- makeCluster(8, type="SOCK") # for 4 cores machine
- registerDoSNOW (cl)
- setwd("MY/WORKING/DIRECTORY/")
- temp <- nc_open("ppt_1958.nc")
- temp <- raster("ppt_1958.nc")
- temp <- stack("ppt_1958.nc")
- URL <- "https://climate.northwestknowledge.net/TERRACLIMATE-DATA/TerraClimate_ppt_1959.nc"
- a <- "/tmp/RtmpTF076t/file1906f2e84c4f4"
- download.file(url = URL, destfile = a)
- rasternc <- function(nc, array = FALSE, var, z = 1,
- xmin = -180, xmax = 180,
- ymin = -90, ymax = 90,
- dx = 1/24, dy = 1/24){
- f <- ncdf4::nc_open(filename = nc)
- cat(paste("The file has",f$nvars,"variables:n"))
- cat(names(f$var))
- if(missing(var)){
- choice <- utils::menu(names(f$var), title="Choose var")
- nvar <- names(f$var)[choice]
- u <- ncdf4::ncvar_get(f, nvar)
- cat(paste0("nThe '", nvar, "' array is ",
- format(object.size(u), units = "Mb"), "n"))
- } else {
- u <- ncdf4::ncvar_get(f, var)
- cat(paste0("nThe '", var, "' array is ",
- format(object.size(u), units = "Mb"), "n"))
- }
- if(array){
- return(u)
- }
- lon <- seq(xmin, xmax, by = dx)
- lat <- seq(ymin, ymax, by = dy)
- ru1 <- raster::flip(raster::raster(t(u[1:dim(u)[1],
- dim(u)[2]:1,
- z]),
- xmn = min(lon),xmx = max(lon),
- ymn = min(lat),ymx = max(lat),
- crs="+init=epsg:4326"), "y")
- cat(paste0("nThis raster is ", format(object.size(ru1), units = "Mb")))
- return(ru1)
- }
- library(raster)
- library(cptcity)
- r <- rasternc(a)
- #The 'ppt' array is 3417.2 Mb
- #This raster is 284.8 Mb
- # boring plot
- #spplot(r, scales = list(draw = T), main = "TerraClimate_ppt_1959")
- # still boring plot
- #spplot(r, scales = list(draw = T), main = "TerraClimate_ppt_1959",
- # col.regions = cpt())
- # perfection
- spplot(r, scales = list(draw = T), main = "TerraClimate_ppt_1959",
- col.regions = lucky())
- rr <- stars::st_as_stars(r)
- plot(rr, col = cpt(), axes = T)
Add Comment
Please, Sign In to add comment