Geographic Information Systems Asked by rpaolo1967 RP on August 11, 2021
I downloaded some rasters of climatic variables included in TerraClimate (Abatzoglou et al. 2018), from http://www.climatologylab.org/terraclimate.html
I know that each raster is huge, but my computer has been trying to open just one of them and is lasting too long: since 10 hours ago or more. I wish to know if anybody out there was able to open them in R.
I did the following:
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")
I also tryied, with the same result:
temp <- raster("ppt_1958.nc")
temp <- stack("ppt_1958.nc")
My computer is running under Windows 10, 64 bits, has i7 processor and 32 GB RAM.
Abatzoglou, J.T., S.Z. Dobrowski, S.A. Parks, K.C. Hegewisch, 2018,
Terraclimate, a high-resolution global dataset of monthly climate and
climatic water balance from 1958-2015, Scientific Data,
I've been playing with raster and NetCDF during some time and I have functions that I plan to use in a forthcoming R package here.
Check the following code to see if satisfies your needs.
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())
The lucky()
function of the cptcity package will randomly chosse a color palette from 7140 options
EDIT: I added an option to return a stars object
rr <- stars::st_as_stars(r)
plot(rr, col = cpt(), axes = T)
Answered by Sergio on August 11, 2021
Well, a foolish situation: I had to download the rasters again, using a different software, and it worked.
Answered by rpaolo1967 RP on August 11, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP