Project

General

Profile

Unable to transform ASC fill to netcdf » step2_hyde_convert.sh

script to convert multiple ASC files to NetCDF from particular folder directories - Mark jwaideh, 2023-05-19 00:57

 
#!/bin/bash
################################################################################
## Copyright (C) 2022 Potsdam Institute for Climate Impact Research (PIK), ##
## see COPYRIGHT file. ##
## ##
## This file is part of LandInG and licensed under GNU AGPL Version 3 or ##
## later. See LICENSE file or go to http://www.gnu.org/licenses/ ##
## Contact: https://github.com/PIK-LPJmL/LandInG/ ##
################################################################################

################################################################################
## This script converts ASCII grids unzipped by step 1 into NetCDF files. ##
## Requires Climate Data Operators (CDO). ##
## Settings: ##
## TYPE: "lu" for land use data; HYDE also contains population density data ##
## which can be converted by setting TYPE to "pop" ##
## STARTYEAR: first year of data to convert (HYDE data currently cover 10000 ##
## BC to 2017. Data are centennial until 1700, decadal from 1700- ##
## 2000 and annual after 2000) ##
## LASTYEAR: last year of data to convert (default: 2017, last year of HYDE) ##
## ASCIIDIR: directory where ASCII files are located (default: unzipped) ##
## NCDIR: directory where NetCDF files are created (default: ncdf_tmp) ##
################################################################################

TYPE="lu"
STARTYEAR=1500
LASTYEAR=2017
ASCIIDIR="unzipped"
NCDIR="ncdf_tmp"

for IDIR in $ASCIIDIR/*_$TYPE;do
ODIR=$NCDIR/$(echo $IDIR|awk -F"/" '{print $NF}')

for FILE in $IDIR/*.asc;do
TIME=$(dirname $FILE |awk -F"/" '{print $NF}'|sed s/_$TYPE//)
VAR=$(basename $FILE .asc | sed s/$TIME//)
CAL=$(echo -n $TIME | tail -c2)

case $CAL in
AD)
YEAR=$(echo $TIME|sed s/$CAL//)
;;
BC)
YEAR=$(echo -$TIME|sed s/$CAL//)
;;
esac

[[ $YEAR -lt $STARTYEAR || $YEAR -gt $LASTYEAR ]] && continue

mkdir -p $ODIR
echo " $FILE $VAR $CAL $YEAR ..."
## This keeps trying until files are converted successfully.
while [ ! -f $ODIR/${VAR}_$YEAR.nc4 ];do
cdo --history -m -9999 -f nc4c -z zip -s \
-setreftime,$STARTYEAR-01-01,00:00:00,1years \
-settaxis,$YEAR-01-01,00:00:00,1years \
-setname,$VAR -setmissval,1E+20 -invertlatdata -setunit,km^2 \
-input,grid.txt $ODIR/${VAR}_$YEAR.nc4 < $FILE
done
done
done
echo "...done"
(2-2/3)