FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
Commit 2c4166b0 authored by J.W. Smith's avatar J.W. Smith
Browse files

Merge branch 'master' of gitlab.developers.cam.ac.uk:gilligan-epid/wheat-rusts/ews-coordinator

parents 4249ad41 6878568a
No related branches found
No related tags found
No related merge requests found
#!bin/bash
#slice_tar_file_to_bounds.sh
echo "CAUTION: Bounds are currently hard-wired"
echo "It can be calculated automatically, but requires both ogrinfo and cdo to be available"
# activate conda env which has cdo
# CAUTION: Does not contain rasterio or geopandas, so ogrinfo is not available
echo "run conda activate conda activate /storage/home/tm689/miniconda3/envs/ewses_env"
tar_file=$1 #/.tar.gz file from Met Office
bounds_file=$2 # shpfile
outputdir=$3
# TODO: Determine lonres and latres in the script
lonres=0.140625 # can be obtained from any nc in tar file
latres=0.09375 # can be obtained from any nc in tar file
# 1) Determine bounds of sub-region
bounds_str=$(ogrinfo -so -al $bounds_file | grep "Extent");
echo "bounds_str: $bounds_str"
coords=($(echo $bounds_str | grep -o -E '[0-9\.]+'));
# bounds of input file
blonmin=${coords[0]};
blatmin=${coords[1]};
blonmax=${coords[2]};
blatmax=${coords[3];}
# we need nc files to go beyond those bounds by at least one datapoint
lonmin=$(bc -l <<< "$blonmin - $lonres");
latmin=$(bc -l <<< "$blatmin - $latres");
lonmax=$(bc -l <<< "$blonmax + $lonres");
latmax=$(bc -l <<< "$blatmax + $latres");
# Hard-wired: Pre-determined for example Ethiopia region
lonmin=38.60
lonmax=40.43
latmin=8.10
latmax=8.86
echo "Bounds are $lonmin, $latmin, $lonmax, $latmax"
# 2) get original netcdf files from input tar file
originaldir=$outputdir/original;
mkdir $originaldir;
tar -zxvf $tar_file -C $originaldir;
# 3) Slice the original netcdf files
# define the output directory
# remove suffix
tar_fn=$(basename $tar_file);
tar_fn_small=${tar_fn%.tar.gz}_small;
outputdir_tar_contents=${outputdir}/${tar_fn_small}/;
mkdir $outputdir_tar_contents;
nc_fns=$(find $originaldir -type f -name "*.nc");
for fn in $nc_fns; do
fn_small=${outputdir_tar_contents}$(basename ${fn%.nc})_small.nc;
echo "cdo command: sellonlatbox,$lonmin,$lonmax,$latmin,$latmax $fn $fn_small";
cdo "sellonlatbox,$lonmin,$lonmax,$latmin,$latmax" $fn $fn_small;
done;
# copy over any other files that need to be retained
fns_to_keep=$(find $originaldir -type f -name "sources.txt");
cp $fns_to_keep $outputdir_tar_contents;
# 4) Make the smaller tar file
out_fn=$tar_fn_small.tar.gz;
cd $outputdir;
tar -zcvf $out_fn ${tar_fn_small}/;
cd -;
echo "created ${out_fn}";
# clean up
rm -rf $originaldir;
rm -rf $outputdir_tar_contents;
echo finished;
exit 0;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment