Mercurial > repos > mnhn65mo > get_worldclim_data
changeset 0:bdf7d9f2ddae draft
Uploaded
author | mnhn65mo |
---|---|
date | Thu, 09 Aug 2018 05:01:04 -0400 |
parents | |
children | 008cbcc1e3f6 |
files | clim_data.R raster_getdata.xml |
diffstat | 2 files changed, 346 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clim_data.R Thu Aug 09 05:01:04 2018 -0400 @@ -0,0 +1,136 @@ +#!/usr/bin/env Rscript + + +args <- commandArgs(trailingOnly = TRUE) + +#Rscript clim_data.R 'worldclim' 'var' 'resolution' 'OutputFormat' #'FRA' #'prec1' +if (length(args)==0 | args[1]=="-h" | args[1]=="--help"){ + print ("general script execution : Rscript clim_data.R \'worldclim\' \'var\' resolution \'OutputFormat\' #\'variable-to-plot\' #\'region_code\'") + print ("eg : Rscript clim_data.R \'worldclim\' \'prec\' 10 \'raster\' #\'prec1' #\'FRA\'") + q('no') +} + + +#Climatic variables dictionaries +months<-c("January","February","March","April","May","June","July","August","September","October","November","December") +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") + +#Function to create custom plot title +get_plot_title<-function(usr_var,usr_var_to_plot){ + match<-str_extract(usr_var_to_plot,"[0-9]+") + if(usr_var %in% c("prec","tmin","tmax")){ + printable_var<-(months[as.integer(match)]) + if(usr_var=="prec"){ + printable_var<-paste(printable_var," precipitations (mm)",sep="") + }else if(usr_var=="tmin"){ + printable_var<-paste(printable_var," minimum temperature (°C *10)",sep="") + }else{ + printable_var<-paste(printable_var," maximum temperature (°C *10)",sep="") + } + }else if(usr_var=="bio"){ + printable_var<-(bioclimatic_vars[as.integer(match)]) + printable_var<-paste("Bioclimatic variable - ",printable_var,sep="") + } + title<-paste("Worldclim data - ",printable_var,".",sep="") + return(title) +} + + +#Call libraries +library('raster',quietly=TRUE) +library(sp,quietly = TRUE, warn.conflicts = FALSE) +library(ncdf4,quietly = TRUE, warn.conflicts = FALSE) +library(rgdal,quietly = TRUE, warn.conflicts = FALSE) #To save as geotif +library(stringr) + + +#Get args +usr_data=args[1] +usr_var=args[2] +usr_res=as.numeric(args[3]) +usr_of=args[4] + + +# Retrieve 'var' data from WorldClim +global.var <- getData(usr_data, download = TRUE, var = usr_var, res = usr_res) + +# Check if we actualy get some +if (length(global.var)==0){ + cat("No data found.") +}else{ + writeRaster(global.var, "output_writeRaster", format=usr_of,overwrite=TRUE) + final_msg<-paste("WorldClim data for ", usr_var, " at resolution ", usr_res, " in ", usr_of, " format\n", sep="") + cat(final_msg) +} + + + + + + +################# +##Visualisation## +################# + +#Get args +if(length(args[5])>=0 && length(args[6])>=0){ + usr_var_to_plot=args[5] + usr_plot_region=args[6] +}else{q('no')} + +list_region_mask<-c("FRA","DEU","GBR","ESP","ITA") + +if(usr_plot_region %in% list_region_mask){ +#Country mask + region <- getData("GADM",country=usr_plot_region,level=0) + region_mask <- mask(global.var, region) + region_var_to_plot_expression<-paste("region_mask$",usr_var_to_plot,sep="") +}else{ #All map and resize manualy + region_var_to_plot_expression<-paste("global.var$",usr_var_to_plot,sep="") +} + + +region_var_to_plot<-eval(parse(text=region_var_to_plot_expression)) + +#PLotmap +jpeg(file="worldclim_plot_usr_region.jpeg",bg="white") + +title<-get_plot_title(usr_var,usr_var_to_plot) + + +if(usr_plot_region=="FRA"){ + #FRA + plot(region_var_to_plot, xlim = c(-7, 12), ylim = c(40, 52), axes=TRUE,xlab="Longitude",ylab="Latitude",main=title) +}else if(usr_plot_region=="GBR"){ + #GBR + plot(region_var_to_plot, xlim = c(-10, 5), ylim = c(46, 63), axes=TRUE,xlab="Longitude",ylab="Latitude",main=title) +}else if(usr_plot_region=="NA"){ + #North America : + plot(region_ar_to_plot,xlim=c(-180,-50),ylim=c(10,75),xlab="Longitude",ylab="Latitude",main=title) +}else if(usr_plot_region=="EU"){ + #Europe + plot(region_var_to_plot,xlim=c(-28,48),ylim=c(34,72),xlab="Longitude",ylab="Latitude",main=title) +}else if(usr_plot_region=="DEU"){ + #DEU + plot(region_var_to_plot, xlim = c(5, 15), ylim = c(45, 57),axes=TRUE,xlab="Longitude",ylab="Latitude",main=title) +}else if(usr_plot_region=="ESP"){ + #ESP + plot(region_var_to_plot, xlim = c(-10, 6), ylim = c(35, 45), axes=TRUE,xlab="Longitude",ylab="Latitude", main=title) +}else if(usr_plot_region=="ITA"){ + #ITA + plot(region_var_to_plot, xlim = c(4, 20), ylim = c(35, 48), axes=TRUE,xlab="Longitude",ylab="Latitude", main=title) +}else if(usr_plot_region=="WM"){ + #Worldmap + plot(region_var_to_plot,xlab="Longitude",ylab="Latitude",main=title) +}else if(usr_plot_region=="AUS"){ + #AUS + plot(region_var_to_plot,xlim=c(110,155),ylim=c(-45,-10),xlab="Longitude",ylab="Latitude",axes=TRUE,main=title) +}else{ + write("Error with country code.", stderr()) + q('no') +} + +garbage_output<-dev.off + +#Exit +q('no')
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/raster_getdata.xml Thu Aug 09 05:01:04 2018 -0400 @@ -0,0 +1,210 @@ +<tool id="raster_getdata" name="Get climatic data from Worldclim" version="0.1.0"> + <requirements> + +<!-- + <requirement type="package" >libgcc-ng</requirement> + <requirement type="package" >libiconv</requirement> + <requirement type="package" >jpeg</requirement> + <requirement type="package" >libstdcxx-ng</requirement> + <requirement type="package" >libkml</requirement> + + +--> + <requirement type="package" version="1.2_18">r-rgdal</requirement> + <requirement type="package" version="1.20.2">r-getopt</requirement> + <requirement type="package" version="1.1.6">r-ncdf4</requirement> + <requirement type="package" version="2.6_7">r-raster</requirement> + <requirement type="package" version="1.1.7">r-stringr</requirement> + + </requirements> + <command detect_errors="exit_code"><![CDATA[ + Rscript + '$__tool_directory__/clim_data.R' + 'worldclim' + '$usr_var' + $usr_res + '$usr_of' + + #if $condi_plot.plot=='yes_plot' + '$usr_var$condi_plot.var_to_plot' + '$condi_plot.usr_country' + #end if + + ]]></command> + <inputs> + <param name="usr_var" type="select" label="Variable" help="Temperature minimum, maximum, precipitations and bioclimatic variables."> + <option value="tmin">tmin</option> + <option value="tmax">tmax</option> + <option value="prec">prec</option> + <option value="bio">bio</option> + </param> + <param name="usr_res" type="select" label="Resolution" help="In minutes of a degree."> + <option value="2.5">2.5</option> + <option value="5">5</option> + <option value="10">10</option> + </param> + <param name="usr_of" type="select" label="Output raster format" > + <option value="raster">Native raster package format .grd</option> + <option value="CDF">netCDF .nc</option> + <option value="GTiff">GeoTiff .tif</option> + +<!-- + <option value="ascii">ESRI Ascii .asc</option> + <option value="SAGA">SAGA GIS .sdat</option> + <option value="IDRISI">IDRISI .rst</option> + <option value="ENVI">ENVI .hdr Labelled .envi</option> + <option value="EHdr">ESRI .hdr Labelled .bil</option> + <option value="HFA">Erdas Imagine Images .img</option> +--> + + </param> + <conditional name="condi_plot"> + <param name="plot" type="select" label="Return a layers visualisation"> + <option value="yes_plot">Yes</option> + <option value="no_plot">No</option> + </param> + <when value="yes_plot"> + <param name="var_to_plot" type="select" label="Select what you want to visualize" help="Be careful to select a layer that is present in the dowloaded raster. eg : bioclimatic variable (bio) and layer bio:Isothermality."> + <option value="1">[tmin|tmax|prec]:January</option> + <option value="2">[tmin|tmax|prec]:February</option> + <option value="3">[tmin|tmax|prec]:March</option> + <option value="4">[tmin|tmax|prec]:April</option> + <option value="5">[tmin|tmax|prec]:May</option> + <option value="6">[tmin|tmax|prec]:June</option> + <option value="7">[tmin|tmax|prec]:July</option> + <option value="8">[tmin|tmax|prec]:August</option> + <option value="9">[tmin|tmax|prec]:September</option> + <option value="10">[tmin|tmax|prec]:October</option> + <option value="11">[tmin|tmax|prec]:November</option> + <option value="12">[tmin|tmax|prec]:December</option> + <option value="1">bio:Annual Mean Temperature</option> + <option value="2">bio:Mean Diurnal Range (Mean of monthly (max temp - min temp))</option> + <option value="3">bio:Isothermality (BIO2/BIO7) (* 100)</option> + <option value="4">bio:Temperature Seasonality (standard deviation *100)</option> + <option value="5">bio:Max Temperature of Warmest Month</option> + <option value="6">bio:Min Temperature of Coldest Month</option> + <option value="7">bio:Temperature Annual Range (BIO5-BIO6)</option> + <option value="8">bio:Mean Temperature of Wettest Quarter</option> + <option value="9">bio:Mean Temperature of Driest Quarter</option> + <option value="10">bio:Mean Temperature of Warmest Quarter</option> + <option value="11">bio:Mean Temperature of Coldest Quarter</option> + <option value="12">bio:Annual Precipitation</option> + <option value="13">bio:Precipitation of Wettest Month</option> + <option value="14">bio:Precipitation of Driest Month</option> + <option value="15">bio:Precipitation Seasonality (Coefficient of Variation)</option> + <option value="16">bio:Precipitation of Wettest Quarter</option> + <option value="17">bio:Precipitation of Driest Quarter</option> + <option value="18">bio:Precipitation of Warmest Quarter</option> + <option value="19">bio:Precipitation of Coldest Quarter</option> + </param> + + <param name="usr_country" type="select" label="Select a worldmap vision or a more precise region" > + <option value="WM">Worldmap</option> + <option value="NA">North America</option> + <option value="EU">Europe</option> + <option value="AUS">Australia</option> + <option value="FRA">France</option> + <option value="DEU">Germany</option> + <option value="GBR">United Kingdom</option> + <option value="ESP">Spain</option> + <option value="ITA">Italy</option> + </param> + </when> + <when value="no_plot"> + </when> + </conditional> + </inputs> + <outputs> + <data name="output_df" from_work_dir="output_writeRaster.nc" label="WorldClim data - NetCDF format"> + <filter> usr_of=='CDF'</filter> + </data> + <data name="output_grd" from_work_dir="output_writeRaster.grd" label="WorldClim data - Native raster pkg format .grd"> + <filter> usr_of=='raster'</filter> + </data> + <data name="output_gri" from_work_dir="output_writeRaster.gri" label="WorldClim data - Native raster pkg format .gri"> + <filter> usr_of=='raster'</filter> + </data> + <data name="plot_jpeg" from_work_dir="worldclim_plot_usr_region.jpeg" format="jpg" label="WorldClim data - Visualisation"> + <filter> plot=='yes_plot'</filter> + </data> + </outputs> + <help><![CDATA[ + +.. class:: infomark + +======================================= +Get global climate data from Worldclim +======================================= + +| + +**What it does** + +This tool retrieve global climate data from Wordclim using the R raster package. + +The climatic data available are : + + * Minimum temperature (°C *10) + + * Maximum temperature (°C *10) + + * Precipitation (mm) + + * Bioclimatic variables : + + * BIO1 = Annual Mean Temperature + + * BIO2 = Mean Diurnal Range (Mean of monthly (max temp - min temp)) + + * BIO3 = Isothermality (BIO2/BIO7) (x 100) + + * BIO4 = Temperature Seasonality (standard deviation x100) + + * BIO5 = Max Temperature of Warmest Month + + * BIO6 = Min Temperature of Coldest Month + + * BIO7 = Temperature Annual Range (BIO5-BIO6) + + * BIO8 = Mean Temperature of Wettest Quarter + + * BIO9 = Mean Temperature of Driest Quarter + + * BIO10 = Mean Temperature of Warmest Quarter + + * BIO11 = Mean Temperature of Coldest Quarter + + * BIO12 = Annual Precipitation + + * BIO13 = Precipitation of Wettest Month + + * BIO14 = Precipitation of Driest Month + + * BIO15 = Precipitation Seasonality (Coefficient of Variation) + + * BIO16 = Precipitation of Wettest Quarter + + * BIO17 = Precipitation of Driest Quarter + + * BIO18 = Precipitation of Warmest Quarter + + * BIO19 = Precipitation of Coldest Quarter + +| + +**How to use it** + +Simply select the variable to return and the resolution : 2.5, 5 or 10 minutes of a degree. + +Available output format are : netcdf and grd (Native raster package format). + +| + +**Sources** + +Worldclim : http://www.worldclim.org/ + +Raster package : https://cran.r-project.org/web/packages/raster/index.html + + ]]></help> +</tool>