0
|
1 #!/usr/bin/env Rscript
|
|
2
|
|
3
|
|
4 args <- commandArgs(trailingOnly = TRUE)
|
|
5
|
|
6 #Rscript clim_data.R 'worldclim' 'var' 'resolution' 'OutputFormat' #'FRA' #'prec1'
|
|
7 if (length(args)==0 | args[1]=="-h" | args[1]=="--help"){
|
|
8 print ("general script execution : Rscript clim_data.R \'worldclim\' \'var\' resolution \'OutputFormat\' #\'variable-to-plot\' #\'region_code\'")
|
|
9 print ("eg : Rscript clim_data.R \'worldclim\' \'prec\' 10 \'raster\' #\'prec1' #\'FRA\'")
|
|
10 q('no')
|
|
11 }
|
|
12
|
|
13
|
|
14 #Climatic variables dictionaries
|
|
15 months<-c("January","February","March","April","May","June","July","August","September","October","November","December")
|
|
16 bioclimatic_vars<-c("Annual Mean Temperature", "Mean Diurnal Range (Mean of monthly (max temp - min temp))", "Isothermality (BIO2/BIO7) (x 100)","Temperature Seasonality (standard deviation x100)","Max Temperature of Warmest Month","Min Temperature of Coldest Month","Temperature Annual Range (BIO5-BIO6)","Mean Temperature of Wettest Quarter","Mean Temperature of Driest Quarter","Mean Temperature of Warmest Quarter","Mean Temperature of Coldest Quarter","Annual Precipitation","Precipitation of Wettest Month","Precipitation of Driest Month","Precipitation Seasonality (Coefficient of Variation)","Precipitation of Wettest Quarter","Precipitation of Driest Quarter","Precipitation of Warmest Quarter","Precipitation of Coldest Quarter")
|
|
17
|
|
18 #Function to create custom plot title
|
|
19 get_plot_title<-function(usr_var,usr_var_to_plot){
|
|
20 match<-str_extract(usr_var_to_plot,"[0-9]+")
|
|
21 if(usr_var %in% c("prec","tmin","tmax")){
|
|
22 printable_var<-(months[as.integer(match)])
|
|
23 if(usr_var=="prec"){
|
|
24 printable_var<-paste(printable_var," precipitations (mm)",sep="")
|
|
25 }else if(usr_var=="tmin"){
|
|
26 printable_var<-paste(printable_var," minimum temperature (°C *10)",sep="")
|
|
27 }else{
|
|
28 printable_var<-paste(printable_var," maximum temperature (°C *10)",sep="")
|
|
29 }
|
|
30 }else if(usr_var=="bio"){
|
|
31 printable_var<-(bioclimatic_vars[as.integer(match)])
|
|
32 printable_var<-paste("Bioclimatic variable - ",printable_var,sep="")
|
|
33 }
|
|
34 title<-paste("Worldclim data - ",printable_var,".",sep="")
|
|
35 return(title)
|
|
36 }
|
|
37
|
|
38
|
|
39 #Call libraries
|
|
40 library('raster',quietly=TRUE)
|
|
41 library(sp,quietly = TRUE, warn.conflicts = FALSE)
|
|
42 library(ncdf4,quietly = TRUE, warn.conflicts = FALSE)
|
|
43 library(stringr)
|
|
44
|
|
45
|
|
46 #Get args
|
|
47 usr_data=args[1]
|
|
48 usr_var=args[2]
|
|
49 usr_res=as.numeric(args[3])
|
|
50 usr_of=args[4]
|
|
51
|
|
52
|
|
53 # Retrieve 'var' data from WorldClim
|
|
54 global.var <- getData(usr_data, download = TRUE, var = usr_var, res = usr_res)
|
|
55
|
|
56 # Check if we actualy get some
|
|
57 if (length(global.var)==0){
|
|
58 cat("No data found.")
|
|
59 }else{
|
|
60 writeRaster(global.var, "output_writeRaster", format=usr_of,overwrite=TRUE)
|
|
61 final_msg<-paste("WorldClim data for ", usr_var, " at resolution ", usr_res, " in ", usr_of, " format\n", sep="")
|
|
62 cat(final_msg)
|
|
63 }
|
|
64
|
|
65
|
|
66
|
|
67
|
|
68
|
|
69
|
|
70 #################
|
|
71 ##Visualisation##
|
|
72 #################
|
|
73
|
|
74 #Get args
|
|
75 if(length(args[5])>=0 && length(args[6])>=0){
|
|
76 usr_var_to_plot=args[5]
|
|
77 usr_plot_region=args[6]
|
|
78 }else{q('no')}
|
|
79
|
|
80 list_region_mask<-c("FRA","DEU","GBR","ESP","ITA")
|
|
81
|
|
82 if(usr_plot_region %in% list_region_mask){
|
|
83 #Country mask
|
|
84 region <- getData("GADM",country=usr_plot_region,level=0)
|
|
85 region_mask <- mask(global.var, region)
|
|
86 region_var_to_plot_expression<-paste("region_mask$",usr_var_to_plot,sep="")
|
|
87 }else{ #All map and resize manualy
|
|
88 region_var_to_plot_expression<-paste("global.var$",usr_var_to_plot,sep="")
|
|
89 }
|
|
90
|
|
91
|
|
92 region_var_to_plot<-eval(parse(text=region_var_to_plot_expression))
|
|
93
|
|
94 #PLotmap
|
|
95 jpeg(file="worldclim_plot_usr_region.jpeg",bg="white")
|
|
96
|
|
97 title<-get_plot_title(usr_var,usr_var_to_plot)
|
|
98
|
|
99
|
|
100 if(usr_plot_region=="FRA"){
|
|
101 #FRA
|
|
102 plot(region_var_to_plot, xlim = c(-7, 12), ylim = c(40, 52), axes=TRUE,xlab="Longitude",ylab="Latitude",main=title)
|
|
103 }else if(usr_plot_region=="GBR"){
|
|
104 #GBR
|
|
105 plot(region_var_to_plot, xlim = c(-10, 5), ylim = c(46, 63), axes=TRUE,xlab="Longitude",ylab="Latitude",main=title)
|
|
106 }else if(usr_plot_region=="NA"){
|
|
107 #North America :
|
|
108 plot(region_ar_to_plot,xlim=c(-180,-50),ylim=c(10,75),xlab="Longitude",ylab="Latitude",main=title)
|
|
109 }else if(usr_plot_region=="EU"){
|
|
110 #Europe
|
|
111 plot(region_var_to_plot,xlim=c(-28,48),ylim=c(34,72),xlab="Longitude",ylab="Latitude",main=title)
|
|
112 }else if(usr_plot_region=="DEU"){
|
|
113 #DEU
|
|
114 plot(region_var_to_plot, xlim = c(5, 15), ylim = c(45, 57),axes=TRUE,xlab="Longitude",ylab="Latitude",main=title)
|
|
115 }else if(usr_plot_region=="ESP"){
|
|
116 #ESP
|
|
117 plot(region_var_to_plot, xlim = c(-10, 6), ylim = c(35, 45), axes=TRUE,xlab="Longitude",ylab="Latitude", main=title)
|
|
118 }else if(usr_plot_region=="ITA"){
|
|
119 #ITA
|
|
120 plot(region_var_to_plot, xlim = c(4, 20), ylim = c(35, 48), axes=TRUE,xlab="Longitude",ylab="Latitude", main=title)
|
|
121 }else if(usr_plot_region=="WM"){
|
|
122 #Worldmap
|
|
123 plot(region_var_to_plot,xlab="Longitude",ylab="Latitude",main=title)
|
|
124 }else if(usr_plot_region=="AUS"){
|
|
125 #AUS
|
|
126 plot(region_var_to_plot,xlim=c(110,155),ylim=c(-45,-10),xlab="Longitude",ylab="Latitude",axes=TRUE,main=title)
|
|
127 }else{
|
|
128 write("Error with country code.", stderr())
|
|
129 q('no')
|
|
130 }
|
|
131
|
|
132 garbage_output<-dev.off
|
|
133
|
|
134 #Exit
|
|
135 q('no')
|