File:Chelsa trace downscaled gts5 europe 18000calBP 1.png
Original file (1,024 × 688 pixels, file size: 602 KB, MIME type: image/png)
Captions
Summary
[edit]DescriptionChelsa trace downscaled gts5 europe 18000calBP 1.png |
English: GDD5 in Europe, 20000 BP |
Date | |
Source | Own work |
Author | Merikanto |
Camera location | 45° 00′ 00″ N, 0° 00′ 00″ E | View this and other nearby images on: OpenStreetMap | 45.000000; 0.000000 |
---|
Source of data: CHELSA
- "R" script: calculate gdd5, pet and ptopet rasters with Envirem package
- default: area of france
- with envirem
- source: exoplasim extracted files
- version 0000.0003
- 30.7.2022
library(raster)
library(rgeos)
library(maps)
library(viridis)
library(envirem)
library(base)
library(stringr)
library(gtools)
- stop(-1)
stage_1=0
stage_2=0
stage_3=0
stage_4=0
rsaaga=1
makerasters=1
calculate_average_temp=1
inputDir <- "./origo"
outputDir <- "./snapshot"
processpath1<-outputDir
processpath2<-"./snapshot2"
Sys.which('gdalinfo')
Sys.which('gdal_translate')
- list.files(inputDir)
dir.create(outputDir)
dir.create(processpath2)
- creation selection ractangle
- poly <- readWKT("POLYGON((
- -20 70,
- 80 70,
- 80 30,
- -20 30,
- -20 70
- ))", p4s = CRS("+proj=longlat +datum=WGS84"))
poly <- readWKT("POLYGON((
-180 90,
180 90,
180 -90,
-180 -90,
-180 90
))", p4s = CRS("+proj=longlat +datum=WGS84"))
if(stage_1==1)
{
- plot(poly, border = 'blue', xpd = NA, add = TRUE)
- crop and mask input rasters
files <- list.files(inputDir, pattern = '.nc$', full.names = TRUE)
files2 <- list.files(inputDir, pattern = '.nc$')
- read in a precipitation raster and crop/mask and keep as a mask layer
- precipitation rasters have the term "prec" in the file name
- crop/mask using polygon
grep(files, pattern = 'prec', value=TRUE)[1]
namme1<-grep(files, pattern = 'prec', value=TRUE)[1]
namme0<-grep(files, pattern = 'prec', value=TRUE)
namme2<-grep(files2, pattern = 'prec', value=TRUE)
print(namme0)
precstak1<-stack(namme0)
precipRaster <- raster(grep(files, pattern = 'prec', value=TRUE)[1])
plot(precipRaster)
precipRaster <- crop(precipRaster, poly)
precipRaster <- mask(precipRaster, poly)
- create a terrestrial/marine mask by setting values < 0 to NA, and values >= 0 to 1
precipRaster[precipRaster < 0] <- NA
precipRaster[!is.na(precipRaster)] <- 1
- plot(precipRaster, col = 'blue', legend = FALSE)
- print(dim(precipRaster))
- stop(-1)
title(main = 'terrestrial mask')
- supply some additional flags to writeRaster() to employ compression to achieve smaller file sizes
tifOptions <- c("COMPRESS=DEFLATE", "PREDICTOR=2", "ZLEVEL=6")
print("Files ...")
- namme0<-grep(files, pattern = 'prec', value=TRUE)
- files=namme0
print(namme0)
for (i in 1:length(namme0)) {
print(i)
filename1<-namme0[i]
print(filename1)
- stop(-1)
- cat(i, ' ')
r <- raster(namme0[i])
- r <- crop(r, poly)
#plot(r)
image(r)
extent(r)
extent( precipRaster)
dim(r)
dim( precipRaster)
r <- aggregate(r, fact = 2)
#outfile <- paste0(outputDir, '/', namme0(r), '.tif')
oname1<-namme2[i]
print("Oname:")
print(oname1)
outfile <- paste0(outputDir, '/', oname1, '.tif')
writeRaster(r, filename = outfile, format = 'GTiff', options = tifOptions, overwrite = TRUE)
}
junk <- dir(path="./snapshot/", pattern="tif.aux") # ?dir
file.remove(junk) # ?file.remove
grep(files, pattern = 'mint', value=TRUE)[1]
namme1<-grep(files, pattern = 'mint', value=TRUE)[1]
namme0<-grep(files, pattern = 'mint', value=TRUE)
namme2<-grep(files2, pattern = 'mint', value=TRUE)
print(namme0)
for (i in 1:length(namme0)) {
print(i)
filename1<-namme0[i]
print(filename1)
- stop(-1)
- cat(i, ' ')
r <- raster(namme0[i])
- r <- crop(r, poly)
#plot(r)
image(r)
extent(r)
extent( precipRaster)
dim(r)
dim( precipRaster)
r <- aggregate(r, fact = 2)
#outfile <- paste0(outputDir, '/', namme0(r), '.tif')
oname1<-namme2[i]
print("Oname:")
print(oname1)
outfile <- paste0(outputDir, '/', oname1, '.tif')
writeRaster(r, filename = outfile, format = 'GTiff', options = tifOptions, overwrite = TRUE)
}
junk <- dir(path="./snapshot/", pattern="tif.aux") # ?dir
file.remove(junk) # ?file.remove
grep(files, pattern = 'maxt', value=TRUE)[1]
namme1<-grep(files, pattern = 'maxt', value=TRUE)[1]
namme0<-grep(files, pattern = 'maxt', value=TRUE)
namme2<-grep(files2, pattern = 'maxt', value=TRUE)
print(namme0)
for (i in 1:length(namme0)) {
print(i)
filename1<-namme0[i]
print(filename1)
- stop(-1)
- cat(i, ' ')
r <- raster(namme0[i])
- r <- crop(r, poly)
#plot(r)
image(r)
extent(r)
extent( precipRaster)
dim(r)
dim( precipRaster)
r <- aggregate(r, fact = 2)
#outfile <- paste0(outputDir, '/', namme0(r), '.tif')
oname1<-namme2[i]
print("Oname:")
print(oname1)
outfile <- paste0(outputDir, '/', oname1, '.tif')
writeRaster(r, filename = outfile, format = 'GTiff', options = tifOptions, overwrite = TRUE)
}
junk <- dir(path="./snapshot/", pattern="tif.aux") # ?dir
mydir <-"./snapshot/"
junk <- dir(path=mydir ,pattern="tif.aux")
file.remove(file.path(mydir, junk))
junk <- dir(path="./snapshot/", pattern="tif.aux") # ?dir
print(junk)
- stop(-1)
}
if(stage_2==1)
{
old_files <- list.files(processpath1, pattern = "*.tif", full.names = TRUE)
#old_files
old_files_2=mixedsort(old_files)
len1=length(old_files)
print (len1)
#old_files_2
precipfiles=grep('prec', old_files_2, value=TRUE)
- print (precipfiles)
len2=length(precipfiles)
for (n in 1:len2) {
infilee=precipfiles[n]
#print (infilee)
a=sprintf("%02d",n)
#print (a)
newfileename=paste0(processpath2, "/test_precip_",a,".tif")
- print (newfileename)
file.copy(from = infilee, to = newfileename)
}
- junk <- dir(path="./snapshot/", pattern="aux") # ?dir
- file.remove(junk) # ?file.remove
junk <- dir(path="./snapshot2/", pattern="tif.aux") # ?dir
mydir <-"./snapshot2/"
junk <- dir(path=mydir ,pattern="tif.aux")
file.remove(file.path(mydir, junk))
- stop(-1)
- old_files <- list.files(processpath1, pattern = "*.tif", full.names = TRUE)
#old_files
old_files_2=mixedsort(old_files)
len1=length(old_files)
print (len1)
print("KKKK")
print(old_files_2)
- stop(-1)
tminfiles=grep('mint', old_files_2, value=TRUE)
print("Tmin:")
print (tminfiles)
- stop(-1)
len2=length(tminfiles)
for (n in 1:len2) {
infilee=tminfiles[n]
#print (infilee)
a=sprintf("%02d",n)
#print (a)
newfileename=paste0(processpath2,"/test_tmin_",a,".tif")
print (newfileename)
file.copy(from = infilee, to = newfileename)
}
junk <- dir(path="./snapshot2/", pattern="tif.aux") # ?dir
mydir <-"./snapshot2/"
junk <- dir(path=mydir ,pattern="tif.aux")
file.remove(file.path(mydir, junk))
- junk <- dir(path="./snapshot/", pattern="aux") # ?dir
- file.remove(junk) # ?file.remove
- stop(-1)
tmaxfiles=grep('maxt', old_files_2, value=TRUE)
print (tmaxfiles)
len2=length(tmaxfiles)
for (n in 1:len2) {
infilee=tmaxfiles[n]
#print (infilee)
a=sprintf("%02d",n)
#print (a)
newfileename=paste0(processpath2,"/test_tmax_",a,".tif")
print (newfileename)
file.copy(from = infilee, to = newfileename)
}
- junk <- dir(path="./snapshot/", pattern="aux") # ?dir
- file.remove(junk) # ?file.remove
junk <- dir(path="./snapshot2/", pattern="tif.aux") # ?dir
mydir <-"./snapshot2/"
junk <- dir(path=mydir ,pattern="tif.aux")
file.remove(file.path(mydir, junk))
rasterTemplate <- raster('./snapshot2/test_precip_01.tif')
ETsolradRasters(rasterTemplate = rasterTemplate, year = -1, outputDir = './snapshot2', overwrite = TRUE)
junk <- dir(path="./snapshot2/", pattern="tif.aux") # ?dir
mydir <-"./snapshot2/"
junk <- dir(path=mydir ,pattern="tif.aux")
file.remove(file.path(mydir, junk))
print("kk")
print("Stage2 ok")
}
if(stage_3==1)
{
junk <- dir(path="./snapshot/", pattern="tif.aux") # ?dir
mydir <-"./snapshot/"
junk <- dir(path=mydir ,pattern="tif.aux")
file.remove(file.path(mydir, junk))
junk <- dir(path="./snapshot2/", pattern="tif.aux") # ?dir
mydir <-"./snapshot2/"
junk <- dir(path=mydir ,pattern="tif.aux")
file.remove(file.path(mydir, junk))
old_files <- list.files(processpath1, pattern = "*.tif", full.names = TRUE)
- old_files
old_files_2=mixedsort(old_files)
tmaxfiles=grep('tmin', old_files_2, value=TRUE)
print (tmaxfiles)
len2=length(tmaxfiles)
print("Tmean ..")
months1<-c(1,2,3,4,5,6,7,8,9,10,11,12)
for (n in 1:12) {
print(n)
nana=months1[n]
print(nana)
a=sprintf("%02d",nana)
print(a)
infileename1=paste0(processpath2,"/test_tmax_",a,".tif")
infileename2=paste0(processpath2,"/test_tmin_",a,".tif")
outfileename1=paste0(processpath2,"/test_tmean_",a,".tif")
print(infileename1)
print(infileename2)
#print (n)
print (outfileename1)
r1=raster(infileename1)
#print("RK")
r2=raster(infileename2)
#plot(r2)
#print("R3 ...")
r3=(r1+r2)/2
#plot(r3)
#print("WR ...")
writeRaster(r3, filename = outfileename1, format = 'GTiff',overwrite = TRUE)
#file.copy(from = infilee, to = newfileename)
}
junk <- dir(path="./snapshot2/", pattern="tif.aux") # ?dir
mydir <-"./snapshot2/"
junk <- dir(path=mydir ,pattern="tif.aux")
file.remove(file.path(mydir, junk))
}
if(stage_4==1)
{
indir1<-'./snapshot2'
outdir1 <- './envirem1'
dir.create(outdir1)
assignNames(reset = TRUE)
assignNames(tmax = "test_tmax_##",
tmin = "test_tmin_##",
tmean="test_tmean_##",
precip = "test_precip_##",
solrad = "et_solrad_##"
)
chelsaFiles <- list.files('./snapshot2', pattern = 'test', full.names = TRUE)
chelsaStack <- stack(chelsaFiles)
solarFiles <- list.files('./snapshot2', pattern = 'solrad', full.names = TRUE)
solarStack <- stack(solarFiles)
print(solarFiles)
verifyFileStructure('./snapshot2', returnFileNames = FALSE)
verifyRasterNames(chelsaStack, solradstack = solarStack)
varnames()
inputDir <- indir1
outputDir <- outdir1
print ("Generating rasters")
generateRasters(var = 'growingDegDays5',prefix = 'test_',maindir = indir1,outputDir = outdir1)
- print("PET")
generateRasters(var = 'annualPET',prefix = 'test_',maindir = indir1,outputDir = outdir1)
name1='./envirem1/test_growingDegDays5.tif'
name2='./envirem1/test_annualPET.tif'
outname1="gdd5e.nc"
outname2="pete.nc"
outname3="ptopete.nc"
outname4="precipanne.nc"
- read in the resulting raster
result <- raster(name1)
plot(result, col = inferno(100))
writeRaster(result, filename = outname1, format = 'netCDF',overwrite = TRUE)
result <- raster(name2)
plot(result, col = inferno(100))
writeRaster(result, filename = outname2, format = 'netCDF',overwrite = TRUE)
print(" Prec ..." )
rasterFiles <- list.files(indir1, pattern = '.tif$', full.names = TRUE)
env <- stack(rasterFiles)
precip <- grep('prec', names(env), value=TRUE)
precip <- stack(envprecip)
annualprecip<-sum(precip)
pet=raster(outname2)
ptopet=annualprecip/pet
plot(annualprecip, col = inferno(100))
plot(ptopet, col = inferno(100))
writeRaster(annualprecip, filename = outname4, format = 'netCDF',overwrite = TRUE)
writeRaster(ptopet, filename = outname3, format = 'netCDF',overwrite = TRUE)
}
- TWI NOK !
if (rsaaga==1)
{
## NOK WARNING in alpha stage
library(RSAGA)
#myenv <- rsaga.env()
#myenv
# SAGA data in C:/sagadata, binaries in C:/SAGA-GIS, modules in C:/SAGA-GIS/modules:
myenv <- rsaga.env(workspace="C:/Programs/sagadata", path="C:/Programs/saga")
## chelsa dem
dempath1<-"./indata/dryplanet_dem_sealevel.tiff"
outdpath1<-"./origo/sagatwi.nc"
elev0<-raster(dempath1)
e1 <- extent(-180,180,-90,90)
elev1 <- crop(elev0, e1)
plot(elev1)
env <- rsaga.env()
- not OK
tw1<-topoWetnessIndex(elev1, env)
#plot(tw1)
#writeRaster(tw1, filename = outdpath1, format = 'netCDF',overwrite = TRUE)
}
Karger, D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E., Linder, P., Kessler, M. (2017). Climatologies at high resolution for the Earth land surface areas. Scientific Data. 4 170122. https://doi.org/10.1038/sdata.2017.122
Karger D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E,, Linder, H.P., Kessler, M.. Data from: Climatologies at high resolution for the earth’s land surface areas. Dryad Digital Repository.http://dx.doi.org/doi:10.5061/dryad.kd1d4
Downscaling code is in
File:Chelsa_trace_calculated_gdd5_europe_20000BP_1.png
Licensing
[edit]- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 13:18, 24 February 2021 | 1,024 × 688 (602 KB) | Merikanto (talk | contribs) | Typo in plot | |
13:16, 24 February 2021 | 1,024 × 688 (602 KB) | Merikanto (talk | contribs) | Better image description, better BP to plot (more accurate ) | ||
11:39, 21 February 2021 | 1,024 × 688 (535 KB) | Merikanto (talk | contribs) | Change of layout | ||
13:42, 20 February 2021 | 1,168 × 784 (492 KB) | Merikanto (talk | contribs) | Uploaded own work with UploadWizard |
You cannot overwrite this file.
File usage on Commons
The following page uses this file:
- File:Chelsa trace downscaled gdd5 europe 20000BP 1.png (file redirect)