From bdd9d9602944e3e9b866fe3c9ea058e2b98f88ad Mon Sep 17 00:00:00 2001 From: Michael Rabotin <michael.rabotin@inrae.fr> Date: Fri, 9 Oct 2020 10:03:22 +0200 Subject: [PATCH] Add tests directory and author name --- bin/hru-delin_all-steps.sh | 18 +- bin/hru-delin_step1.sh | 37 ++ bin/hru-delin_step2.sh | 32 + bin/hru-delin_step3.sh | 31 + bin/hru-delin_step4.sh | 27 + bin/tools.sh | 15 +- modules/awk.py | 15 + modules/circleKill.py | 19 +- modules/grassUtils.py | 17 + modules/hrudelin_1_init.py | 128 +++- modules/hrudelin_2_basins.py | 90 ++- modules/hrudelin_3_hrugen.py | 51 +- modules/hrudelin_parms_J2000.py | 49 +- modules/progressColors.py | 23 +- modules/reach.py | 19 + modules/utils.py | 21 +- tests/bad_basin_size_config.cfg | 113 ++++ tests/bad_col_name_config.cfg | 112 ++++ tests/bad_coords_config.cfg | 115 ++++ tests/bad_data_config.cfg | 115 ++++ tests/bad_dem_config.cfg | 115 ++++ tests/bad_distance_tolerance_1_config.cfg | 112 ++++ tests/bad_distance_tolerance_2_config.cfg | 112 ++++ tests/bad_gauge_area_col_name_config.cfg | 112 ++++ tests/bad_gauge_area_col_unit_config.cfg | 112 ++++ tests/bad_gauges_config.cfg | 115 ++++ tests/bad_hrus_min_surface_config.cfg | 112 ++++ tests/bad_input_dir_config.cfg | 115 ++++ tests/bad_irrigation_config.cfg | 115 ++++ tests/bad_output_files_config.cfg | 115 ++++ tests/bad_output_results_config.cfg | 115 ++++ tests/bad_polygon_config.cfg | 115 ++++ tests/bad_reclass_aspect_rules_config.cfg | 113 ++++ tests/bad_reclass_dem_rules_config.cfg | 115 ++++ tests/bad_reclass_slope_rules_config.cfg | 113 ++++ tests/bad_relocated_gauges_config.cfg | 112 ++++ tests/bad_step_dem_rules_config.cfg | 113 ++++ tests/bad_surface_tolerance_1_config.cfg | 112 ++++ tests/bad_surface_tolerance_2_config.cfg | 112 ++++ tests/empty_output_files_config.cfg | 115 ++++ tests/empty_output_results_config.cfg | 115 ++++ tests/hru_config.cfg | 113 ++++ tests/inputdata/Tille.cfg | 113 ++++ tests/inputdata/bv_tille.dbf | Bin 0 -> 5546 bytes tests/inputdata/bv_tille.prj | 1 + tests/inputdata/bv_tille.qpj | 1 + tests/inputdata/bv_tille.shp | Bin 0 -> 4892 bytes tests/inputdata/bv_tille.shx | Bin 0 -> 108 bytes tests/inputdata/hgeo_tille.tif | Bin 0 -> 82937 bytes tests/inputdata/hgeo_tille.tif.aux.xml | 21 + tests/inputdata/landuse_tille.tif | Bin 0 -> 74713 bytes tests/inputdata/landuse_tille.tif.aux.xml | 21 + tests/inputdata/mnt_tille.tif | Bin 0 -> 245648 bytes tests/inputdata/mnt_tille.tif.aux.xml | 21 + tests/inputdata/multipoint_stations_tille.cpg | 1 + tests/inputdata/multipoint_stations_tille.dbf | Bin 0 -> 4222 bytes tests/inputdata/multipoint_stations_tille.prj | 1 + tests/inputdata/multipoint_stations_tille.shp | Bin 0 -> 228 bytes tests/inputdata/multipoint_stations_tille.shx | Bin 0 -> 116 bytes tests/inputdata/soil_tille.tif | Bin 0 -> 85857 bytes tests/inputdata/soil_tille.tif.aux.xml | 21 + tests/inputdata/stations_tille.dbf | Bin 0 -> 4222 bytes tests/inputdata/stations_tille.prj | 1 + tests/inputdata/stations_tille.shp | Bin 0 -> 156 bytes tests/inputdata/stations_tille.shx | Bin 0 -> 116 bytes tests/multipoint_gauges_config.cfg | 115 ++++ tests/no_col_name_config.cfg | 112 ++++ tests/no_dem_config.cfg | 115 ++++ tests/no_gauges_config.cfg | 115 ++++ tests/no_polygon_config.cfg | 115 ++++ tests/running_tests.sh | 625 ++++++++++++++++++ tests/step1_ok_config.cfg | 113 ++++ tests/step2_ok_config.cfg | 112 ++++ tests/step3_ok_config.cfg | 112 ++++ tests/step4_ok_config.cfg | 112 ++++ 75 files changed, 5349 insertions(+), 44 deletions(-) create mode 100644 tests/bad_basin_size_config.cfg create mode 100644 tests/bad_col_name_config.cfg create mode 100644 tests/bad_coords_config.cfg create mode 100644 tests/bad_data_config.cfg create mode 100644 tests/bad_dem_config.cfg create mode 100644 tests/bad_distance_tolerance_1_config.cfg create mode 100644 tests/bad_distance_tolerance_2_config.cfg create mode 100644 tests/bad_gauge_area_col_name_config.cfg create mode 100644 tests/bad_gauge_area_col_unit_config.cfg create mode 100644 tests/bad_gauges_config.cfg create mode 100644 tests/bad_hrus_min_surface_config.cfg create mode 100644 tests/bad_input_dir_config.cfg create mode 100644 tests/bad_irrigation_config.cfg create mode 100644 tests/bad_output_files_config.cfg create mode 100644 tests/bad_output_results_config.cfg create mode 100644 tests/bad_polygon_config.cfg create mode 100644 tests/bad_reclass_aspect_rules_config.cfg create mode 100644 tests/bad_reclass_dem_rules_config.cfg create mode 100644 tests/bad_reclass_slope_rules_config.cfg create mode 100644 tests/bad_relocated_gauges_config.cfg create mode 100644 tests/bad_step_dem_rules_config.cfg create mode 100644 tests/bad_surface_tolerance_1_config.cfg create mode 100644 tests/bad_surface_tolerance_2_config.cfg create mode 100644 tests/empty_output_files_config.cfg create mode 100644 tests/empty_output_results_config.cfg create mode 100644 tests/hru_config.cfg create mode 100644 tests/inputdata/Tille.cfg create mode 100755 tests/inputdata/bv_tille.dbf create mode 100755 tests/inputdata/bv_tille.prj create mode 100755 tests/inputdata/bv_tille.qpj create mode 100755 tests/inputdata/bv_tille.shp create mode 100755 tests/inputdata/bv_tille.shx create mode 100755 tests/inputdata/hgeo_tille.tif create mode 100755 tests/inputdata/hgeo_tille.tif.aux.xml create mode 100755 tests/inputdata/landuse_tille.tif create mode 100755 tests/inputdata/landuse_tille.tif.aux.xml create mode 100755 tests/inputdata/mnt_tille.tif create mode 100755 tests/inputdata/mnt_tille.tif.aux.xml create mode 100644 tests/inputdata/multipoint_stations_tille.cpg create mode 100644 tests/inputdata/multipoint_stations_tille.dbf create mode 100644 tests/inputdata/multipoint_stations_tille.prj create mode 100644 tests/inputdata/multipoint_stations_tille.shp create mode 100644 tests/inputdata/multipoint_stations_tille.shx create mode 100755 tests/inputdata/soil_tille.tif create mode 100755 tests/inputdata/soil_tille.tif.aux.xml create mode 100644 tests/inputdata/stations_tille.dbf create mode 100644 tests/inputdata/stations_tille.prj create mode 100644 tests/inputdata/stations_tille.shp create mode 100644 tests/inputdata/stations_tille.shx create mode 100644 tests/multipoint_gauges_config.cfg create mode 100644 tests/no_col_name_config.cfg create mode 100644 tests/no_dem_config.cfg create mode 100644 tests/no_gauges_config.cfg create mode 100644 tests/no_polygon_config.cfg create mode 100755 tests/running_tests.sh create mode 100644 tests/step1_ok_config.cfg create mode 100644 tests/step2_ok_config.cfg create mode 100644 tests/step3_ok_config.cfg create mode 100644 tests/step4_ok_config.cfg diff --git a/bin/hru-delin_all-steps.sh b/bin/hru-delin_all-steps.sh index 9123434..533f03e 100755 --- a/bin/hru-delin_all-steps.sh +++ b/bin/hru-delin_all-steps.sh @@ -1,7 +1,23 @@ #!/bin/bash +############################################################################ +# +# MODULE: hru-delin_all-steps.sh +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + + # very simple, we just call all steps scripts with same arguments we got here hru-delin_step1.sh "$@" hru-delin_step2.sh "$@" hru-delin_step3.sh "$@" -hru-delin_step4.sh "$@" \ No newline at end of file +hru-delin_step4.sh "$@" diff --git a/bin/hru-delin_step1.sh b/bin/hru-delin_step1.sh index 8f8ff82..adb8829 100755 --- a/bin/hru-delin_step1.sh +++ b/bin/hru-delin_step1.sh @@ -1,4 +1,19 @@ #!/bin/bash +############################################################################ +# +# MODULE: hru-delin_step1.sh +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + # HRU-DELIN # first step : hru-delin_init @@ -105,11 +120,20 @@ fi # clean work environment # ---------------------- +# test id dir output exist + + clean_files=`grep "files\s*:" $CONFIGFILE | cut -d ':' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` + if [ -z "$clean_files" ]; then clean_files=`grep "files\s*=" $CONFIGFILE | cut -d '=' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` fi +if [ -z "$clean_files" ]; then + echo "------------> ERROR : Output FILE Directory not provided !" + exit 1 +fi echo "clean files $clean_files" + # is the path absolute? if [[ "$clean_files" = /* ]]; then rm -rf $clean_files @@ -120,10 +144,23 @@ else mkdir $CONFIGFILEPATH/$clean_files fi +# test if mkdir works +if [ $? -ne 0 ] ; then + echo "------------> ERROR : Impossible to create Output directory !" + exit 1 +fi + + clean_results=`grep "results\s*:" $CONFIGFILE | cut -d ':' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` if [ -z "$clean_results" ]; then clean_results=`grep "results\s*=" $CONFIGFILE | cut -d '=' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` fi + +if [ -z "$clean_results" ]; then + echo "------------> ERROR : Output RESULTS Directory not provided !" + exit 1 +fi + echo "clean results $clean_results" # is the path absolute? if [[ "$clean_results" = /* ]]; then diff --git a/bin/hru-delin_step2.sh b/bin/hru-delin_step2.sh index 43aa709..c798bdb 100755 --- a/bin/hru-delin_step2.sh +++ b/bin/hru-delin_step2.sh @@ -1,4 +1,18 @@ #!/bin/bash +############################################################################ +# +# MODULE: hru-delin_step2.sh +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + # HRU-DELIN # 2nd step : hru-delin_basins @@ -107,6 +121,12 @@ clean_files=`grep "files\s*:" $CONFIGFILE | cut -d ':' -f2 | sed -e 's/\s*$//' | if [ -z "$clean_files" ]; then clean_files=`grep "files\s*=" $CONFIGFILE | cut -d '=' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` fi + +if [ -z "$clean_files" ]; then + echo "------------> ERROR : Output FILE Directory not provided !" + exit 1 +fi + # is the path absolute? if [[ "$clean_files" = /* ]]; then rm -f $clean_files/step2* $clean_files/step3* @@ -118,6 +138,12 @@ clean_results=`grep "results\s*:" $CONFIGFILE | cut -d ':' -f2 | sed -e 's/\s*$/ if [ -z "$clean_results" ]; then clean_results=`grep "results\s*=" $CONFIGFILE | cut -d '=' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` fi + +if [ -z "$clean_results" ]; then + echo "------------> ERROR : Output RESULTS Directory not provided !" + exit 1 +fi + # is the path absolute? if [[ "$clean_results" = /* ]]; then rm -rf $clean_results @@ -127,6 +153,12 @@ else mkdir $CONFIGFILEPATH/$clean_results fi +# test if mkdir works +if [ $? -ne 0 ] ; then + echo "------------> ERROR : Impossible to create Output directory !" + exit 1 +fi + # ----------------------------------- # exec second step of HRU-DELIN batch # ----------------------------------- diff --git a/bin/hru-delin_step3.sh b/bin/hru-delin_step3.sh index dba439a..06cbaba 100755 --- a/bin/hru-delin_step3.sh +++ b/bin/hru-delin_step3.sh @@ -1,4 +1,17 @@ #!/bin/bash +############################################################################ +# +# MODULE: hru-delin_step3.sh +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# # HRU-DELIN # 3rd step : hru-delin_hrugen @@ -108,6 +121,12 @@ clean_files=`grep "files\s*:" $CONFIGFILE | cut -d ':' -f2 | sed -e 's/\s*$//' | if [ -z "$clean_files" ]; then clean_files=`grep "files\s*=" $CONFIGFILE | cut -d '=' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` fi + +if [ -z "$clean_files" ]; then + echo "------------> ERROR : Output FILE Directory not provided !" + exit 1 +fi + # is the path absolute? if [[ "$clean_files" = /* ]]; then rm -f $clean_files/step3* @@ -118,6 +137,12 @@ clean_results=`grep "results\s*:" $CONFIGFILE | cut -d ':' -f2 | sed -e 's/\s*$/ if [ -z "$clean_results" ]; then clean_results=`grep "results\s*=" $CONFIGFILE | cut -d '=' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` fi + +if [ -z "$clean_results" ]; then + echo "------------> ERROR : Output RESULTS Directory not provided !" + exit 1 +fi + # is the path absolute? if [[ "$clean_results" = /* ]]; then rm -rf $clean_results @@ -127,6 +152,12 @@ else mkdir $CONFIGFILEPATH/$clean_results fi +# test if mkdir works +if [ $? -ne 0 ] ; then + echo "------------> ERROR : Impossible to create Output directory !" + exit 1 +fi + # ----------------------------------- # exec third step of HRU-DELIN batch # ----------------------------------- diff --git a/bin/hru-delin_step4.sh b/bin/hru-delin_step4.sh index 541c70f..1d79a43 100755 --- a/bin/hru-delin_step4.sh +++ b/bin/hru-delin_step4.sh @@ -1,4 +1,18 @@ #!/bin/bash +############################################################################ +# +# MODULE: hru-delin_step4.sh +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + # HRU-DELIN # 4th step : hru-delin_parms_J2000 @@ -109,6 +123,12 @@ clean_results=`grep "results\s*:" $CONFIGFILE | cut -d ':' -f2 | sed -e 's/\s*$/ if [ -z "$clean_results" ]; then clean_results=`grep "results\s*=" $CONFIGFILE | cut -d '=' -f2 | sed -e 's/\s*$//' | sed -e 's/^\s*//'` fi + +if [ -z "$clean_results" ]; then + echo "------------> ERROR : Output RESULTS Directory not provided !" + exit 1 +fi + # is the path absolute? if [[ "$clean_results" = /* ]]; then rm -rf $clean_results @@ -118,6 +138,13 @@ else mkdir $CONFIGFILEPATH/$clean_results fi +# test if mkdir works +if [ $? -ne 0 ] ; then + echo "------------> ERROR : Impossible to create Output directory !" + exit 1 +fi + + rm -f topologie_* tmp/topologie_* # ----------------------------------- diff --git a/bin/tools.sh b/bin/tools.sh index 490856f..23e4b21 100644 --- a/bin/tools.sh +++ b/bin/tools.sh @@ -1,4 +1,17 @@ #!/bin/bash +############################################################################ +# +# MODULE: tools.sh +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# buildGrassEnv() { envPath=$1 @@ -48,4 +61,4 @@ t-b resol: 1 " > $gisdbase/$location/$mapset/WIND cp $gisdbase/$location/$mapset/WIND $gisdbase/$location/$mapset/DEFAULT_WIND -} \ No newline at end of file +} diff --git a/modules/awk.py b/modules/awk.py index 9a4de97..7df5a55 100644 --- a/modules/awk.py +++ b/modules/awk.py @@ -1,3 +1,18 @@ +############################################################################ +# +# MODULE: awk.py +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + # coding: utf-8 # this file contains the converted old awk scripts which were not portable (to windows) diff --git a/modules/circleKill.py b/modules/circleKill.py index 14c4ac2..90894f5 100755 --- a/modules/circleKill.py +++ b/modules/circleKill.py @@ -1,5 +1,22 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- + +############################################################################ +# +# MODULE: circleKill.py +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + + import sys try: import dbf @@ -105,4 +122,4 @@ if __name__ == '__main__': outPath = sys.argv[2] circleKill(inPath, outPath) else: - sys.exit('Please provide two arguments: INPUT_PATH OUTPUT_PATH_PREFIX') \ No newline at end of file + sys.exit('Please provide two arguments: INPUT_PATH OUTPUT_PATH_PREFIX') diff --git a/modules/grassUtils.py b/modules/grassUtils.py index fecbf70..2313bd7 100644 --- a/modules/grassUtils.py +++ b/modules/grassUtils.py @@ -1,4 +1,21 @@ # coding: utf-8 +############################################################################ +# +# MODULE: grassUtils.py +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + + + import os, sys, shutil try: # Python 3 diff --git a/modules/hrudelin_1_init.py b/modules/hrudelin_1_init.py index fca6143..845eaab 100755 --- a/modules/hrudelin_1_init.py +++ b/modules/hrudelin_1_init.py @@ -1,18 +1,27 @@ # coding: utf-8 -''' - MODULE: hru-delin_init - AUTHOR(S): adapted from GRASS-HRU (ILMS) - JENA University - by IRSTEA - Christine Barachet +############################################################################ +# +# MODULE: hrudelin_1_init.py +# AUTHOR(S): adapted from GRASS-HRU (ILMS) - JENA University +# by IRSTEA - Christine Barachet, +# Julien Veyssier +# PURPOSE: Prepare files for the next steps of HRU Delineation +# shapefile : selected gauges +# rasters : bounded DEM and others (geology, soils, landuse) +# DEM, slope and aspect with values of reclassification +# calculates oriented flows and subbasins +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# - PURPOSE: Prepare files for the next steps of HRU Delineation - shapefile : selected gauges - rasters : bounded DEM and others (geology, soils, landuse) - DEM, slope and aspect with values of reclassification - calculates oriented flows and subbasins -''' # to keep python2 compatibility from __future__ import print_function @@ -61,13 +70,37 @@ def get_polygon_bounds(shape, xmin_slect, ymax_slect, xmax_slect, ymin_slect): max(ymin_slect, ymin) ) +def isfloat(value): + try: + float(value) + return True + except ValueError: + return False + +def isint(value): + try: + int(value) + return True + except ValueError: + return False + + def get_coords(parms, xmin_slect, ymax_slect, xmax_slect, ymin_slect): + + if not isfloat(parms.get('surface', 'west')) or isfloat(parms.get('surface', 'north')) or isfloat(parms.get('surface', 'east')) or isfloat(parms.get('surface', 'south')): + sys.exit('------------> ERROR : coordinates for surface selection is not valid') + xmin_slect = max(xmin_slect, float(parms.get('surface', 'west'))) ymax_slect = min(ymax_slect, float(parms.get('surface', 'north'))) xmax_slect = min(xmax_slect, float(parms.get('surface', 'east'))) ymin_slect = max(ymin_slect, float(parms.get('surface', 'south'))) + print("hello",xmin_slect) return xmin_slect, ymax_slect, xmax_slect, ymin_slect + + + + try: # Python 3 from subprocess import DEVNULL @@ -75,12 +108,20 @@ except ImportError: #DEVNULL = open('cbtrace_step1', 'wb') DEVNULL = open(os.devnull, 'wb') + + + + ''' MAIN ''' def main(parms_file): print('---------- HRU-delin Step 1 started ---------------------------------------------') + + + + configFileDir = os.path.dirname(parms_file) # create main env buildGrassEnv(os.path.join(configFileDir, 'grass_db'), 'hru-delin') @@ -89,26 +130,81 @@ def main(parms_file): parms = ConfigParser.ConfigParser(allow_no_value=True) parms.read(parms_file) directory = parms.get('dir_in', 'dir') - # manage absolute and relative paths + + + #Â Test parameters from configuration file + ## test if directory is valid + + if not os.path.isdir(directory): + sys.exit('------------> ERROR : In Directoy is not valid') + + ## manage absolute and relative paths if not os.path.isabs(directory): directory = os.path.join(configFileDir, directory) + directory_out = parms.get('dir_out', 'files') if not os.path.isabs(directory_out): directory_out = os.path.join(configFileDir, directory_out) + ##Â Test if dem exist + dem = os.path.join(directory, str(parms.get('files_in', 'dem'))) + if not os.path.isfile(dem): + sys.exit('------------> ERROR : Input Dem not found') + + ##Â Test if gauges exist + gauges = os.path.join(directory, str(parms.get('files_in', 'gauges'))) + if not os.path.isfile(gauges): + sys.exit('------------> ERROR : Input Gauges not found') + + ##Â Test if gauges is point or multipoint + ds=ogr.Open(gauges) + layer=ds.GetLayer() + layer_defn=layer.GetLayerDefn() + if ogr.GeometryTypeToName(layer_defn.GetGeomType()) != 'Point': + sys.exit('------------> ERROR : Input Gauges is not Point Geometry (multi Point not allowed)') + + ## if hgeon, landuse and soil provided, test if exist + for data in parms.items('data'): + data = os.path.join(directory, data[1]) + if not os.path.isfile(data): + print(data) + sys.exit('------------> ERROR : Input data not found' ) + + ## if irrig_rast provided, test if is valid + if str(parms.get('irrigation', 'irrig_rast')) != '': + irr_rast_test = os.path.join(directory, str(parms.get('irrigation', 'irrig_rast'))) + if not os.path.isfile(irr_rast_test): + sys.exit('------------> ERROR : Irrigation raster not found' ) + + ## if rules_auto_dem is yes, test if step_dem valid + if (parms.get('reclass_dem', 'rules_auto_dem')) == 'yes': + if not isint(parms.get('reclass_dem', 'step_dem')): + sys.exit('------------> ERROR : Step dem value not provided or is not integer' ) + ## test if basin min size is valid + if not isint(parms.get('basin_min_size', 'size')): + sys.exit('------------> ERROR : Basin min size value not provided or is not integer' ) + + # Initializing the variables for cutting up of layers xmin_slect = ymin_slect = 0.0 ymax_slect = xmax_slect = 9999999999.9 - dem = os.path.join(directory, str(parms.get('files_in', 'dem'))) + + dem_name = os.path.basename(parms.get('files_in', 'dem')).split('.')[0] selection = (parms.get('surface', 'selection')) xmin_slect, ymax_slect, xmax_slect, ymin_slect = get_raster_bounds(dem, xmin_slect, ymax_slect, xmax_slect, ymin_slect) + ## test if selection is valid + + if selection == 'total': pass elif selection == 'polygon': + polygon_test = os.path.join(directory, str(parms.get('surface', 'polygon'))) + if not os.path.isfile(polygon_test): + sys.exit('------------> ERROR : Polygon layer for surface selection not found') xmin_slect, ymax_slect, xmax_slect, ymin_slect = get_polygon_bounds(os.path.join(directory, parms.get('surface', 'polygon')), xmin_slect, ymax_slect, xmax_slect, ymin_slect) elif selection == 'coords': xmin_slect, ymax_slect, xmax_slect, ymin_slect = get_coords(parms, xmin_slect, ymax_slect, xmax_slect, ymin_slect) @@ -174,15 +270,20 @@ def main(parms_file): # DEM dem_rcl = 'dem_rcl' + + if (parms.get('reclass_dem', 'rules_auto_dem')) == 'yes': pRecode = grass_feed_command('r.recode', input=dem_filled, output=dem_rcl, rules='-', quiet=True) + step_reclass = int(parms.get('reclass_dem', 'step_dem')) + alti_min = float(grass_parse_command('r.info', flags='r', map=dem_filled, stdout=DEVNULL, stderr=DEVNULL)['min']) alti_max = float(grass_parse_command('r.info', flags='r', map=dem_filled, stdout=DEVNULL, stderr=DEVNULL)['max']) # just a copy, still do the pipe recl_dem_file = os.path.join(directory_out, 'reclass_rules_dem') + with open(recl_dem_file, 'w') as dem_rules: new_max = math.floor(alti_max / step_reclass) * step_reclass + step_reclass if alti_min < 0: @@ -208,7 +309,9 @@ def main(parms_file): if not os.path.isfile(recl_dem_file): sys.exit('------------> File reclass_rules_dem is missing') # r.recode does a better job with grass7, values close to interval limits are now correctly reclassified + grass_run_command('r.recode', input=dem_filled, output=dem_rcl, rules=recl_dem_file, stdout=DEVNULL, stderr=DEVNULL) + # Save the rules to directory_out recl_dem_name = os.path.basename(recl_dem_file) shutil.copyfile(recl_dem_file, os.path.join(directory_out, recl_dem_name)) @@ -219,6 +322,7 @@ def main(parms_file): if (parms.get('reclass_slope', 'rules_auto_slope')) == 'yes': pRecode = grass_feed_command('r.recode', input=dem_slope, output=slp_rcl, rules='-', quiet=True) recl_slope_file = os.path.join(directory_out, 'reclass_rules_slope') + default_recl_slope_file = os.path.join(DATA_PATH, 'reclass_default_rules_slope') slp_min = float(grass_parse_command('r.info', flags='r', map=dem_slope, stdout=DEVNULL, stderr=DEVNULL)['min']) diff --git a/modules/hrudelin_2_basins.py b/modules/hrudelin_2_basins.py index b30986e..bcff6c7 100755 --- a/modules/hrudelin_2_basins.py +++ b/modules/hrudelin_2_basins.py @@ -1,15 +1,27 @@ # coding: utf-8 -""" - MODULE: hru-delin_basins - AUTHOR(S): adapted from GRASS-HRU (ILMS) - JENA University - by IRSTEA - Christine Barachet - PURPOSE: 1. Relocates the gauges on the reaches - 2. Calculates watersheds at the gauges +############################################################################ +# +# MODULE: hru-delin_basins.py +# AUTHOR(S): adapted from GRASS-HRU (ILMS) - JENA University +# by IRSTEA - Christine Barachet, +# Julien Veyssier +# PURPOSE: 1. Relocates the gauges on the reaches +# 2. Calculates watersheds at the gauges +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + -""" # to keep python2 compatibility from __future__ import print_function @@ -40,6 +52,15 @@ try: except ImportError: DEVNULL = open(os.devnull, 'wb') + +def isint(value): + try: + int(value) + return True + except ValueError: + return False + + def write_log(msg, buff, start, end, best_x, best_y): horiz_shift = best_x - start - end vertic_shift = best_y - start - end + 1 @@ -79,6 +100,10 @@ def snapping_gauges_to_reaches(parms, directory_out): dist_ok_2 = 0 else: nb_trials = 2 + if not isint(parms.get('auto_relocation', 'surface_tolerance_2')): + sys.exit('------------> ERROR : Surface_tolerance_2 is not integer' ) + if not isint(parms.get('auto_relocation', 'distance_tolerance_2')): + sys.exit('------------> ERROR : Distance_tolerance_2 is not integer' ) surface_ok_2 = int(parms.get('auto_relocation', 'surface_tolerance_2')) dist_ok_2 = int(parms.get('auto_relocation', 'distance_tolerance_2' )) @@ -126,9 +151,20 @@ def snapping_gauges_to_reaches(parms, directory_out): for y in range(0, (max_dist * 2 + 1)): for x in range(0, (max_dist * 2 + 1)): euclid_dist[y, x] = int(math.sqrt((y - max_dist)**2 + (x - max_dist)**2)) - + # Gauges loop for gauge in reloc_lyr: + geom = gauge.GetGeometryRef() + gauge_x, gauge_y = geom.GetX(), geom.GetY() + Xreste = gauge_x % hres + Yreste = gauge_y % abs(vres) + new_gauge_x = (gauge_x - Xreste) + 1 + new_gauge_y = (gauge_y - Yreste) - 1 + print("end********") + + for gauge in reloc_lyr: + if not gauge.IsFieldSet(col_name): + sys.exit('------------> ERROR : col_name not found' ) gauge_code = gauge.GetField(col_name) # Get the drained surface of the gauge gauge_area = gauge.GetField(col_area) @@ -167,11 +203,14 @@ def snapping_gauges_to_reaches(parms, directory_out): dist_max = max(dist_ok_1, dist_ok_2) pix_x = max(int(((new_gauge_x - georef[0]) / hres) - (dist_max)), 0) + pix_y = max(int(((georef[3] - new_gauge_y) / abs(vres)) - (dist_max)), 0) # and don't access beyond the accum raster bounds nb_cols = min((dist_max * 2) + 1, acc_rast_cols - pix_x) - nb_rows = min((dist_max * 2) + 1, acc_rast_rows - pix_y) + + nb_rows = (min((dist_max * 2) + 1, acc_rast_rows - pix_y)) + zone = accum_bd.ReadAsArray(pix_x, pix_y, nb_cols, nb_rows).astype(int) # in the end, this is just to ensure that we won't look at relocating the gaug outside the raster boudaries # isn't that right? @@ -421,6 +460,9 @@ def processReach(params): def main(parms_file, nbProc, generator=False): print('---------- HRU-delin Step 2 started ---------------------------------------------') + + + # TODO remove dirty global variables global logf, gauge_code, gauge_area, reloc_lyr, col_name @@ -444,10 +486,36 @@ def main(parms_file, nbProc, generator=False): print(' =========> ERROR ') sys.exit(' =========> CHECK col_name PARAMETER') + # test parameters from configuration file + # if auto_relocation == yes, test int value for surface_tolerance_1 and distance_tolerance_1 + if (parms.get('auto_relocation', 'to_do')) == 'yes': + + if not isint(parms.get('auto_relocation', 'surface_tolerance_1')): + sys.exit('------------> ERROR : Surface_tolerance_1 value not provided or is not integer' ) + if not isint(parms.get('auto_relocation', 'distance_tolerance_1')): + sys.exit('------------> ERROR : Distance_tolerance_1 value not provided or is not integer' ) + + + ## test if basin min size is valid + if not isint(parms.get('basin_min_size', 'size')): + sys.exit('------------> ERROR : Basin min size value not provided or is not integer' ) + + + + # Get the shape of gauges gauges_file = parms.get('auto_relocation', 'relocated_gauges') if gauges_file == '': gauges_file = os.path.join(directory_out, 'gauges_selected.shp') + else: + if ogr.Open(gauges_file) is None: + sys.exit('------------> ERROR : Relocated Gauges file not found') + + + + + + gauges_in = ogr.Open(gauges_file) gauges_lyr = gauges_in.GetLayer() @@ -459,7 +527,7 @@ def main(parms_file, nbProc, generator=False): driver.DeleteDataSource(gauges_reloc_file) reloc_shp = driver.CreateDataSource(gauges_reloc_file) reloc_lyr = reloc_shp.CopyLayer(gauges_lyr, gauges_reloc_name) - + # Relocation of the gauges if (parms.get('auto_relocation', 'to_do')) == 'yes': print('---------- HRU-delin Step 2 : Relocation of the gauges') @@ -768,4 +836,4 @@ if __name__ == '__main__': else: from .grassUtils import buildGrassEnv, buildGrassLocation, exportRasters, importRastersInEnv,\ grass_run_command, grass_parse_command, grass_feed_command, grass_read_command - from .progressColors import * \ No newline at end of file + from .progressColors import * diff --git a/modules/hrudelin_3_hrugen.py b/modules/hrudelin_3_hrugen.py index 07f73f8..f4a09d3 100755 --- a/modules/hrudelin_3_hrugen.py +++ b/modules/hrudelin_3_hrugen.py @@ -1,16 +1,28 @@ # coding: utf-8 -''' - MODULE: hru-delin_basins - AUTHOR(S): adapted from GRASS-HRU (ILMS) - JENA University - by IRSTEA - Christine Barachet +############################################################################ +# +# MODULE: hrudelin_3_hrugen.py +# AUTHOR(S): adapted from GRASS-HRU (ILMS) - JENA University +# by IRSTEA - Christine Barachet, +# Julien Veyssier +# +# PURPOSE: overlay of all selected layers +# construction of HRUs +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + - PURPOSE: overlay of all selected layers - construction of HRUs -''' # to keep python2 compatibility from __future__ import print_function @@ -32,6 +44,15 @@ import pandas as pd import multiprocessing from multiprocessing import Pool, cpu_count + +def isint(value): + try: + int(value) + return True + except ValueError: + return False + + def reclass(map_in, map_out, size): p = grass_pipe_command('r.stats', flags='lnNc', input=map_in) pReclass = grass_feed_command('r.reclass', overwrite=True, input=map_in, output=map_out, rules='-') @@ -394,6 +415,20 @@ def main(parms_file, nbProc, generator=False): if not os.path.isabs(directory_out): directory_out = os.path.join(configFileDir, directory_out) + # test if surface is valid + if not isint(parms.get('hrus_min_surface', 'surface')): + sys.exit('------------> ERROR : Hrus min surface not provided or is not integer' ) + + ## if hgeon, landuse and soil provided, test if exist + directory = parms.get('dir_in', 'dir') + for data in parms.items('data'): + data = os.path.join(directory, data[1]) + if not os.path.isfile(data): + print(data) + sys.exit('------------> ERROR : Input data not found' ) + + + min_area = int(parms.get('hrus_min_surface', 'surface')) # get rid of mask anyway @@ -693,4 +728,4 @@ if __name__ == '__main__': else: from .grassUtils import buildGrassEnv, buildGrassLocation, exportRasters, importRastersInEnv, exportRastersFromEnv,\ grass_run_command, grass_parse_command, grass_feed_command, grass_pipe_command, grass_read_command - from .progressColors import * \ No newline at end of file + from .progressColors import * diff --git a/modules/hrudelin_parms_J2000.py b/modules/hrudelin_parms_J2000.py index dd1ab70..2a605e0 100755 --- a/modules/hrudelin_parms_J2000.py +++ b/modules/hrudelin_parms_J2000.py @@ -1,16 +1,29 @@ # coding: utf-8 -''' - MODULE: hru-delin_parms_J2000 - AUTHOR(S): adapted from GRASS-HRU (ILMS) - JENA University - IRSTEA - Christine Barachet +############################################################################ +# +# MODULE: hru-delin_parms_J2000.py +# AUTHOR(S): adapted from GRASS-HRU (ILMS) - JENA University +# by IRSTEA - Christine Barachet, +# Julien Veyssier +# +# PURPOSE: calculates the topology +# generates parameters files for J2000 +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + - PURPOSE: calculates the topology - generates parameters files for J2000 -''' # to keep python2 compatibility from __future__ import print_function @@ -210,6 +223,26 @@ def main(parms_file, nbProc, generator=False): os.mkdir(tmpPath) parms.read(parms_file) directory_out = parms.get('dir_out', 'files') + + if not os.path.isdir(directory_out): + sys.exit('------------> ERROR : In Directoy is not valid') + + + ## if hgeon, landuse and soil provided, test if exist + directory = parms.get('dir_in', 'dir') + for data in parms.items('data'): + data = os.path.join(directory, data[1]) + if not os.path.isfile(data): + print(data) + sys.exit('------------> ERROR : Input data not found' ) + + ## if irrig_rast provided, test if is valid + if str(parms.get('irrigation', 'irrig_rast')) != '': + irr_rast_test = os.path.join(directory, str(parms.get('irrigation', 'irrig_rast'))) + if not os.path.isfile(irr_rast_test): + sys.exit('------------> ERROR : Irrigation raster not found' ) + + # manage absolute and relative paths if not os.path.isabs(directory_out): directory_out = os.path.join(configFileDir, directory_out) @@ -865,4 +898,4 @@ else: from .progressColors import * from .circleKill import circleKill from .reach import buildReachPar - from .awk import * \ No newline at end of file + from .awk import * diff --git a/modules/progressColors.py b/modules/progressColors.py index 1c3cca7..6b66d9f 100644 --- a/modules/progressColors.py +++ b/modules/progressColors.py @@ -1,3 +1,24 @@ + + +############################################################################ +# +# MODULE: progressColors.py +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + + + + + COLOR_GREEN='\x1b[32m' COLOR_YELLOW='\x1b[33m' COLOR_CYAN='\x1b[36m' @@ -30,4 +51,4 @@ def pad(s, nb): def padLeft(s, nb): while len(s) < nb: s = ' ' + s - return s \ No newline at end of file + return s diff --git a/modules/reach.py b/modules/reach.py index 09480a8..05b5f52 100755 --- a/modules/reach.py +++ b/modules/reach.py @@ -1,5 +1,24 @@ # coding: utf-8 + +############################################################################ +# +# MODULE: reach.py +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + + + + import sys, os, shutil import time #import grass.script as grass diff --git a/modules/utils.py b/modules/utils.py index 745af29..e9ece5e 100644 --- a/modules/utils.py +++ b/modules/utils.py @@ -1,8 +1,27 @@ # coding: utf-8 + + +############################################################################ +# +# MODULE: utils.py +# AUTHOR(S): Julien Veyssier +# +# +# COPYRIGHT: (C) 2020 UR RIVERLY - INRAE +# +# This program is free software under the GNU General Public +# License (>=v2). Read the file LICENSE that comes with +# HRU-DELIN for details. +# +############################################################################# + + + + import pandas as pd def myJoin(f1Path, f2Path, resultPath): df1 = pd.read_table(f1Path, delim_whitespace=True) df2 = pd.read_table(f2Path, delim_whitespace=True) merge = pd.merge(df1, df2) - merge.to_csv(resultPath, header=True, index=False, sep=' ') \ No newline at end of file + merge.to_csv(resultPath, header=True, index=False, sep=' ') diff --git a/tests/bad_basin_size_config.cfg b/tests/bad_basin_size_config.cfg new file mode 100644 index 0000000..c1d0d5b --- /dev/null +++ b/tests/bad_basin_size_config.cfg @@ -0,0 +1,113 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size= + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_col_name_config.cfg b/tests/bad_col_name_config.cfg new file mode 100644 index 0000000..1d5cff0 --- /dev/null +++ b/tests/bad_col_name_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=1 +distance_tolerance_2=10 + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit=1 + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=NON_EXISTENT +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_coords_config.cfg b/tests/bad_coords_config.cfg new file mode 100644 index 0000000..fc402e7 --- /dev/null +++ b/tests/bad_coords_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west:10 +north:10 +east:10 +south:a + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_data_config.cfg b/tests/bad_data_config.cfg new file mode 100644 index 0000000..6d628d6 --- /dev/null +++ b/tests/bad_data_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:NON_EXISTENT.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_dem_config.cfg b/tests/bad_dem_config.cfg new file mode 100644 index 0000000..fa13273 --- /dev/null +++ b/tests/bad_dem_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:NON_EXISTENT.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_distance_tolerance_1_config.cfg b/tests/bad_distance_tolerance_1_config.cfg new file mode 100644 index 0000000..7f10d55 --- /dev/null +++ b/tests/bad_distance_tolerance_1_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=a +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_distance_tolerance_2_config.cfg b/tests/bad_distance_tolerance_2_config.cfg new file mode 100644 index 0000000..8b83ee9 --- /dev/null +++ b/tests/bad_distance_tolerance_2_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=1 +distance_tolerance_2=a + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_gauge_area_col_name_config.cfg b/tests/bad_gauge_area_col_name_config.cfg new file mode 100644 index 0000000..2a36a08 --- /dev/null +++ b/tests/bad_gauge_area_col_name_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=1 +distance_tolerance_2=10 + +# drained surface +gauge_area_col_name= + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_gauge_area_col_unit_config.cfg b/tests/bad_gauge_area_col_unit_config.cfg new file mode 100644 index 0000000..c1cf712 --- /dev/null +++ b/tests/bad_gauge_area_col_unit_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=1 +distance_tolerance_2=10 + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_gauges_config.cfg b/tests/bad_gauges_config.cfg new file mode 100644 index 0000000..ab88173 --- /dev/null +++ b/tests/bad_gauges_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:NON_EXISTENT.tif + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_hrus_min_surface_config.cfg b/tests/bad_hrus_min_surface_config.cfg new file mode 100644 index 0000000..c4c5ce9 --- /dev/null +++ b/tests/bad_hrus_min_surface_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=1 +distance_tolerance_2=10 + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit=1 + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface=a + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_input_dir_config.cfg b/tests/bad_input_dir_config.cfg new file mode 100644 index 0000000..cf22193 --- /dev/null +++ b/tests/bad_input_dir_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir: +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_irrigation_config.cfg b/tests/bad_irrigation_config.cfg new file mode 100644 index 0000000..0b7a31f --- /dev/null +++ b/tests/bad_irrigation_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast:NON_EXISTENT.tif + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_output_files_config.cfg b/tests/bad_output_files_config.cfg new file mode 100644 index 0000000..789e068 --- /dev/null +++ b/tests/bad_output_files_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/NON_EXISTENT_DIRECTORY/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_output_results_config.cfg b/tests/bad_output_results_config.cfg new file mode 100644 index 0000000..2abe9bb --- /dev/null +++ b/tests/bad_output_results_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/NON_EXISTENT_DIRECTORY/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_polygon_config.cfg b/tests/bad_polygon_config.cfg new file mode 100644 index 0000000..7f168fd --- /dev/null +++ b/tests/bad_polygon_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:polygon +polygon:NON_EXISTENT.shp +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_reclass_aspect_rules_config.cfg b/tests/bad_reclass_aspect_rules_config.cfg new file mode 100644 index 0000000..351d7a4 --- /dev/null +++ b/tests/bad_reclass_aspect_rules_config.cfg @@ -0,0 +1,113 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:no + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_reclass_dem_rules_config.cfg b/tests/bad_reclass_dem_rules_config.cfg new file mode 100644 index 0000000..326c59b --- /dev/null +++ b/tests/bad_reclass_dem_rules_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:no + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_reclass_slope_rules_config.cfg b/tests/bad_reclass_slope_rules_config.cfg new file mode 100644 index 0000000..314d0dc --- /dev/null +++ b/tests/bad_reclass_slope_rules_config.cfg @@ -0,0 +1,113 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:no + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_relocated_gauges_config.cfg b/tests/bad_relocated_gauges_config.cfg new file mode 100644 index 0000000..e56dd4e --- /dev/null +++ b/tests/bad_relocated_gauges_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +relocated_gauges:NON_EXISTENT.shp + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_step_dem_rules_config.cfg b/tests/bad_step_dem_rules_config.cfg new file mode 100644 index 0000000..5d3f421 --- /dev/null +++ b/tests/bad_step_dem_rules_config.cfg @@ -0,0 +1,113 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem: + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_surface_tolerance_1_config.cfg b/tests/bad_surface_tolerance_1_config.cfg new file mode 100644 index 0000000..5025349 --- /dev/null +++ b/tests/bad_surface_tolerance_1_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=a +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/bad_surface_tolerance_2_config.cfg b/tests/bad_surface_tolerance_2_config.cfg new file mode 100644 index 0000000..eaad918 --- /dev/null +++ b/tests/bad_surface_tolerance_2_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=a +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=COL +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/empty_output_files_config.cfg b/tests/empty_output_files_config.cfg new file mode 100644 index 0000000..9e875c5 --- /dev/null +++ b/tests/empty_output_files_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files: +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/empty_output_results_config.cfg b/tests/empty_output_results_config.cfg new file mode 100644 index 0000000..4aa6bcc --- /dev/null +++ b/tests/empty_output_results_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results: +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/hru_config.cfg b/tests/hru_config.cfg new file mode 100644 index 0000000..6dfe0d6 --- /dev/null +++ b/tests/hru_config.cfg @@ -0,0 +1,113 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/inputdata/Tille.cfg b/tests/inputdata/Tille.cfg new file mode 100644 index 0000000..36027b0 --- /dev/null +++ b/tests/inputdata/Tille.cfg @@ -0,0 +1,113 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/donnees_exemple/tests_maillage_Tille +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/donnees_exemple/tests_maillage_Tille/OUT_FILE +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/donnees_exemple/tests_maillage_Tille/OUT_RESULT +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem: + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size= + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/inputdata/bv_tille.dbf b/tests/inputdata/bv_tille.dbf new file mode 100755 index 0000000000000000000000000000000000000000..f34a4ec17db6a942f43f7fd62236df8d80e98a3b GIT binary patch literal 5546 zcmeH}OK#gR5Qd$;(x&JIy5a>)kQ7CVOF5PjIkIJ2b{^dbL6Jp(paoK7(IfSeMQ2Dk z4j4*4fNH=X#c$^4%#alIwmJTKG#ZVLPX2s`=GE`Cnr7|bDYkz-i$yixjRbk!OwL<_ z1-2jG?95$z?eR|@zw!8q$G>^}*yE^gB0HCz-}guTK7O{Ywo6w5>+i?6Dy~z`t$r~7 zRmw%1agb-4wRjZd#n}#b@JT<<>b$J3tW8k=I;%NjHilq+Hy-!vH!ae$thV~r|Gi)T ztUMJj^nL%E1KjGD-TKHkHnUN1{$i1rTUVkWUv1NJ@?w48dGRBkAK>SGeAZMKZvJ5X zSF<MHmNvm)e0j01H_d7W5|;b>yG(aD%rA@Q{T0-|oER5ftN+2zKW(zQDbOYyKXRuK zjBk}bAJA@IEl?xO=iuMWQkcT>SMgb%<0<Ij^L0N@m;HQx)6Zu(chCGYT;Lv_;wkUp z^?~>*T$>*M#brOAcKV;K<?Na_%X#he{rzXTIKZO=T<*F5{;>M-0j~DkKfjB#K1Z77 zE`DEsQj{%r-1lGa4TAM;>r-u~&fmY^+WI{6VEv+|pUXY><8SNp>>uQ++uzm)yz8rQ z{+PbQVZPi{8$6u5{pIJEZI&%|{{H#hW5@mY%bj<}{?0b*okehcCg(fs^!@l&)ue7M ztp6)s7xO+oE%Lmb!}|N{kM*623w#L&^`X8k4)fNZ!#75cKj02N%~4^$K7M__kS!NX zGS0{#f8{ON+&?_rky~>5c=!G8_xRV-<Jb)ip&&v?%2>ioq8W6ANVH@cdPL|5n<O?# zgab-*!x8~Kj$e!%I@Qzt5Ngzs<FK<|{QS{Tmmv)Q&wdE29L{mr=RRRc%-XBMxE{wx zyeQlwUKHAzSl}pL7cc*t^)?HacL<}>UZX~1MFivcL>P?~F@{Px?AnmXU|C3{4K`BP z>L@`IO=3g2CNiN+lSol5h)`4{gvV$~5-cH!X~GFnl)-pH1z2*bBcd2pig2x{5`>He zm0)Wm6)}mZkVH}=!6br(FtB@#Bx7auxQwaR;KHq^NvJmH0)e0+tXmA`5&U8OVnHLW zz+Z4;sFtx|RO*<;RB|Gv0&U2QQ4SKIYcLcDNkhb_1e3yU0AGAc@S9vv_%sJO^$+=# BUZDU0 literal 0 HcmV?d00001 diff --git a/tests/inputdata/bv_tille.prj b/tests/inputdata/bv_tille.prj new file mode 100755 index 0000000..5adb2a9 --- /dev/null +++ b/tests/inputdata/bv_tille.prj @@ -0,0 +1 @@ +PROJCS["RGF93_Lambert_93",GEOGCS["GCS_RGF93",DATUM["D_RGF_1993",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["standard_parallel_1",49],PARAMETER["standard_parallel_2",44],PARAMETER["latitude_of_origin",46.5],PARAMETER["central_meridian",3],PARAMETER["false_easting",700000],PARAMETER["false_northing",6600000],UNIT["Meter",1]] \ No newline at end of file diff --git a/tests/inputdata/bv_tille.qpj b/tests/inputdata/bv_tille.qpj new file mode 100755 index 0000000..52a60bf --- /dev/null +++ b/tests/inputdata/bv_tille.qpj @@ -0,0 +1 @@ +PROJCS["RGF93 / Lambert-93",GEOGCS["RGF93",DATUM["Reseau_Geodesique_Francais_1993",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6171"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4171"]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["standard_parallel_1",49],PARAMETER["standard_parallel_2",44],PARAMETER["latitude_of_origin",46.5],PARAMETER["central_meridian",3],PARAMETER["false_easting",700000],PARAMETER["false_northing",6600000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],AUTHORITY["EPSG","2154"]] diff --git a/tests/inputdata/bv_tille.shp b/tests/inputdata/bv_tille.shp new file mode 100755 index 0000000000000000000000000000000000000000..1dee52aee43906883a546f5619dbf76410671f8d GIT binary patch literal 4892 zcma)<ONd-W6oxA#hD;3FV2Bz-TM?5CSu_zt@I|#^h$7OskPNsO#Dy#Ag}4xrLR`5B zvk({JqVW-<NlZJ@;F~LoL=3SF;v<N*5_M3KA&LaW;Q8j%nR~jrK?jn<*MI%zoVs1r zw<?59Ys199sXYrTLpVpYDF250x3pJDyyTggc9Ph?b$W?+zB<zu{I9<iAx!Q5Ke=RJ z*vx<Om*ijkN$akCex_Xs_kS4YHS+nF&&{->#OA3j?Mb{>^h)&bo$4jul>OarRWG@b z{hhB>_snzo=2@*@oz(t3)6W6XD~Y`?)L-&Lq9@VQXR3Q9|E}zh$2Gra^3yN==Ersa z#`qt|{m*@*e$V)M9#LXAs(#PrPa;?E)qZ3DynFAe-@XrH@-e>gPMzP_@>im#x9a@H zHoqwP;v4n+JX`+R*GKci<hS)RI5N)UzhBlD`QmHp_l&<MdXm^btbWh<PvrI4oL7Iz ztM;lt98%pg`L~N+N$eif{GQ2wU*Y$R|5)MojQ_0YQ6l?z61QHc>!W)n|2?APpX+OX zo*Dl{_S^hR{!sKJ<9L3IFZu3$qtD;-IvIajbo_juCDY%VFKYj`emqm}SJCm?`twY_ zOJCCZtk;ss-x0l%*s65?o*94Je)V_WSHEZKUnDyI;RiZ@&)(1eE1CKaXTR;=lJ_0Z z`LX{Q@0t21vp)Dl>zCX;sQveksb2Exm$iR>f5_*Ves_qTB$B^m#y>53lsNmT`aLuL z-b0#y@r3$4GoL3#$KUu|=jWOHM@3H(TVH8@&*ra0=l6dShn%1H2fAnaJD%sy`=?}^ zUy^aWuO>15M9~Keb$`a>`z!0M)0*Ei{cP>)^QnH<{ygKK%X;^W`aRRnAEHOb{jK#q z<G<<^eSZD3>i3NQanU7&=0EE9jQ{Pd4^~VsJs;2boAX*fhUul};~D>*qDu(o_ssks z6Fo_sU8&~|&*VRn^~M^_?-~Eb!&<*LrGC%UU&!@a=W73+y+2$q>W9T19+CXSx%J~r zf8Xc&{R_1}&-m8MIVwpUY*fEz^P{KBYQM33yzFmXIqHY$-_B{BP2=qS!_A|97=J&{ zFKiuW{5Jo7Yjpmw`J;@Ry=I*8Ghg(^wRL@C^C!`J*VTSwdp?YB?y8@UvH6V|e|!Eu z=633M&y2VA6>iabo^8F7uY0qu7uKsW{@?O`GQVfrFE+kp`eT13iJhqZc_#mE(WAs+ zTl@1&KK4Jl_2-%V_IreX5^u}DNBGe_liz;t>91tQ^L~gDs~gqtneprL`=)h+`aR>f z_Y>cD$;{v0Z;RV?{+`MIpuF#*MAlo$_<4UOiRSmrc;4UW)GrzTkNLd7dM%lL9~IsF zB{QD$LzKw;OQs&@ktEUTdnO;}mnf0?C6kZy4|>|6`8_lKuB;EPR=;QJ+j)!UQ!@GY z<nx&AN6+N9^BeP<#MAk_XY0c=`OoC@BI~PU@-3fd^ZG6MseInG^;`1t`C0Zi`AX*e zp5$}xx#*thhx<g7$nQ<bjJNv;`+pKI-!Jq2D%tLT=J!m!dAWyEpZS$cy_9v^-zDFX z@A0<3Jd=-mKKbqUx@77n(c`wdzA^PrWq)^C=U?)MeBb5$!uXQ8AIry~cZKSn>Cf)h zjmx#ZXYw&VNwoK6$vn>}y1kD}wtDg6(fY>reVN}g{c*oe5}O;eKhN~X`jD`6UYNvo zf98CF?wS0oKm5b<HNR)ZbH9udJLjq2Gk)%u5(4L)lJT=&(9>%5duBZM%OugxW1jJ| zpQ1!N?|HU*=)*ttJWD^u`0f78dADTzcK=@dMg5)`&;7lUIQz5uOTIquZ#%DhCO^;f EUy~FYwg3PC literal 0 HcmV?d00001 diff --git a/tests/inputdata/bv_tille.shx b/tests/inputdata/bv_tille.shx new file mode 100755 index 0000000000000000000000000000000000000000..fbf97733f470c9d288e830a0574a4935ef27b145 GIT binary patch literal 108 zcmZQzQ0HR64$NLKGcd3M<s5+c!D>xM79cINDAKV3NN@1e0`uLrL^=Ywgn$tP17`#P D{qhL- literal 0 HcmV?d00001 diff --git a/tests/inputdata/hgeo_tille.tif b/tests/inputdata/hgeo_tille.tif new file mode 100755 index 0000000000000000000000000000000000000000..a628c3cecd7515e36c9a585fa8e954df3fbbde53 GIT binary patch literal 82937 zcmeH~O=}ZD7=YhRVj3}33x48PP!uY75Kkg%RImynYCTjGN|lH`q+$@f6#Rtfr6>PD zK}1j5i)X!g@;`X?;!(Zm>|{sF;4qWywoNxrBz@<5XJ_8$37$WHP%0v_Q6wr#q)PYH zH%iLaRk@Iq>#AH#%JI1JqVh;ol69)>m-=pA)V?JtuT||^lQCaZdFP@r<4L)w+Sfm= zN*oWU2RwOJm9i?IP~~^+qD-jrj4HoxS0!F=cR^&KU65m{d|Q>{&*wd1-{<Nf^J>oY zUXjD6MSf0+e0nVMVqWC(Cz0)6MZT)jcw39)UOnn8UcXz{1rs~1|NR>e{4qCrD(<X& zxTa%Vj?_PqO(LaESsjUPE0h-6Bk=%r6_NaY7*!V9qcS1|UEi^-tmE9iwUzhnNQPvc zj%69vQFT^3^9o5U>R6GIj-&g^)p%Y(hIA}SRmVt%byVlBV@WpXxF+7ozfXOv-l<eN z@zJ@YepbhiH}>oIyL9N<sW(5rz1;Px6}Q)4U!C~--dD!X9z8O7VXAqv(Yil*^vLYk znep1isb-^gyrznix_|akYr5HJ#!an8W9Gs1tvj=`YNhzIv#tX%C+AR0-or%hm;8=T zfIL{<Jb=IDJ#X@x^Nvq|JRlFq1316~cmNOJ0X%>Q@Bkjb19$)r-~l{<2k-zMzyo*y z58wejfCumZ9>4>501w~+Jb(xA03N^tcmNOJ0X%>Q@Bkjb19$)r-~l{<2k-zMzyo*y z58wejfCumZ9>4>501w~+Jb(xA03N^tcmNOJ0X%>Q@Bkjb19$)r-~l{<2k-zMzyo*y z58wejfCumZ9>4>501w~+Jb(xA03N^tcmNOJ0X%>Q@Bkjb19$)r-~l{<2k-zMzyo*y z58wejfCumZ9>4>501w~+Jb(xA03N^tcmNOJ0X%>Q@Bkjb19$)r-~l{<2k-zMzyo*y z58wejfCumZ9>4>501w~+Jb(xA03N^tcmNOJ0X%>Q@Bkj@)&t*9cDOOI+xd*gJ9sC( zcMN}agfIAluk?I{a%A&o*F)D~9NfZf@7&tlx$1BRXK>a#XQBMK__NzX*JB*q!fo%| z+T7W7_<}F^>YcAper)bs_0aVg2e)wBJGU<W>~=VVGdSy=Gao-TZ?3v;9s1!EPSbPh z;?Hh}H+X}$^t|~vvbnSCzWMaSDV(O~)aK4rhc|eGxAeUEICAl4xBJ$iA70@#J+C%* zb{)>(49?PX=Htlb&Q<rVLqEL2YkFQ?{F!z*gEKfw&siu(hC5dbU59aS3%BXHg+n-k zqx2l5{XKGVXxh`R&wMzC^Ki}$cdiIe@B~lcJf-CY4&e>nmX9|VuPzQvyK5fp@C(1$ z^J}=XBfP;Iyk*auk1Lx)Q}@lIA70@#dtMEHCc+t<!CCg4`M5It+0i$Tet3n~?0JPl zxPq(fx$5@!3J&2A4&ks{Z!jKj<k1`U@1d!a@8o+P^Sxj5+Hhybe%&wo!Vh`$gUz2^ zC-2GoJm!7B=C#eAsrT!C*%yAuqaO@+u1MaK_j%0we#>hYf2O_P_B-hNG52D}K|hzg zyuW>~c0Diex!T^tzK3q>tL=RUeZQgiJLu=MQtuynKfZA*wSS)5-T!ZV_h|Y#*Y3_W xtMfAFpH<9iU#zn<`4D=~od43CzwcZ_?<aJe?|JmE%srcP54}e-&dgi-_y=P3X~_Tp literal 0 HcmV?d00001 diff --git a/tests/inputdata/hgeo_tille.tif.aux.xml b/tests/inputdata/hgeo_tille.tif.aux.xml new file mode 100755 index 0000000..c52d958 --- /dev/null +++ b/tests/inputdata/hgeo_tille.tif.aux.xml @@ -0,0 +1,21 @@ +<PAMDataset> + <PAMRasterBand band="1"> + <Histograms> + <HistItem> + <HistMin>0.9965000000000001</HistMin> + <HistMax>8.003500000000001</HistMax> + <BucketCount>1000</BucketCount> + <IncludeOutOfRange>0</IncludeOutOfRange> + <Approximate>0</Approximate> + <HistCounts>195|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|10085|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3</HistCounts> + </HistItem> + </Histograms> + <Metadata> + <MDI key="STATISTICS_MAXIMUM">8</MDI> + <MDI key="STATISTICS_MEAN">6.8865117183702</MDI> + <MDI key="STATISTICS_MINIMUM">1</MDI> + <MDI key="STATISTICS_STDDEV">0.81859165967775</MDI> + <MDI key="STATISTICS_VALID_PERCENT">100</MDI> + </Metadata> + </PAMRasterBand> +</PAMDataset> diff --git a/tests/inputdata/landuse_tille.tif b/tests/inputdata/landuse_tille.tif new file mode 100755 index 0000000000000000000000000000000000000000..180815be4335f5a665d6821edaa97308ddefb38d GIT binary patch literal 74713 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 literal 0 HcmV?d00001 diff --git a/tests/inputdata/landuse_tille.tif.aux.xml b/tests/inputdata/landuse_tille.tif.aux.xml new file mode 100755 index 0000000..c762764 --- /dev/null +++ b/tests/inputdata/landuse_tille.tif.aux.xml @@ -0,0 +1,21 @@ +<PAMDataset> + <PAMRasterBand band="1"> + <Histograms> + <HistItem> + <HistMin>0.998</HistMin> + <HistMax>5.002</HistMax> + <BucketCount>1000</BucketCount> + <IncludeOutOfRange>0</IncludeOutOfRange> + <Approximate>0</Approximate> + <HistCounts>4|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5019|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|109|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4075|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|49</HistCounts> + </HistItem> + </Histograms> + <Metadata> + <MDI key="STATISTICS_MAXIMUM">5</MDI> + <MDI key="STATISTICS_MEAN">2.9077355229041</MDI> + <MDI key="STATISTICS_MINIMUM">1</MDI> + <MDI key="STATISTICS_STDDEV">0.9984433723229</MDI> + <MDI key="STATISTICS_VALID_PERCENT">100</MDI> + </Metadata> + </PAMRasterBand> +</PAMDataset> diff --git a/tests/inputdata/mnt_tille.tif b/tests/inputdata/mnt_tille.tif new file mode 100755 index 0000000000000000000000000000000000000000..bd1d499903c3a1c6cf2a127ab11d6eec09ec6d27 GIT binary patch literal 245648 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
@tyvtl-Tk|O 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 D<pf_> literal 0 HcmV?d00001 diff --git a/tests/inputdata/mnt_tille.tif.aux.xml b/tests/inputdata/mnt_tille.tif.aux.xml new file mode 100755 index 0000000..2770175 --- /dev/null +++ b/tests/inputdata/mnt_tille.tif.aux.xml @@ -0,0 +1,21 @@ +<PAMDataset> + <PAMRasterBand band="1"> + <Histograms> + <HistItem> + <HistMin>253.1301449813843</HistMin> + <HistMax>539.1158724746704</HistMax> + <BucketCount>1000</BucketCount> + <IncludeOutOfRange>0</IncludeOutOfRange> + <Approximate>0</Approximate> + <HistCounts>1|0|0|0|0|0|0|0|0|0|0|0|1|0|0|1|0|2|0|1|3|0|1|6|8|4|7|8|8|9|7|14|4|7|19|7|9|14|7|6|6|11|12|14|8|11|8|8|9|15|10|20|15|13|13|23|14|13|22|15|8|22|31|11|16|31|22|13|19|41|23|9|25|30|19|18|54|24|20|42|17|22|22|34|22|19|29|13|22|18|38|13|17|34|18|14|20|16|16|14|13|19|11|13|13|15|14|17|24|18|15|23|23|20|25|15|14|23|23|18|21|15|14|16|18|20|20|18|25|20|19|22|19|22|20|20|17|20|18|27|11|13|24|22|22|23|19|21|21|31|16|25|11|30|17|12|18|21|18|24|23|16|18|31|24|26|19|33|18|24|31|25|37|21|28|24|18|36|21|24|25|28|24|26|36|26|22|22|35|22|22|23|20|24|24|27|35|32|16|18|24|20|22|16|21|25|24|25|26|27|18|28|37|31|22|19|35|20|24|22|22|25|18|40|20|20|33|33|30|34|26|29|26|32|20|20|29|30|22|25|25|24|21|24|39|24|30|23|36|30|21|25|23|26|25|26|29|28|35|27|27|32|28|25|23|26|32|33|42|25|27|26|31|48|20|27|37|30|25|33|31|36|34|36|31|38|26|29|38|43|27|38|32|42|40|32|34|25|29|50|32|48|32|42|29|32|30|43|46|38|47|33|58|30|31|35|36|52|44|32|31|33|38|33|53|43|33|42|41|43|41|40|45|51|39|50|47|39|42|35|37|33|31|39|43|52|40|57|44|47|45|40|41|42|44|32|49|40|55|41|43|38|50|42|36|38|61|44|51|57|44|51|48|46|49|45|55|61|47|45|53|68|53|59|61|70|62|68|54|55|49|58|59|60|53|62|46|68|71|69|66|69|60|51|63|66|57|71|68|63|66|55|63|60|50|71|67|76|74|64|77|69|72|67|63|50|75|60|60|79|68|67|73|83|88|73|83|63|55|81|83|76|82|85|94|78|80|79|84|80|88|77|83|69|104|83|73|102|83|87|80|99|79|94|96|95|79|103|103|82|69|97|97|84|85|108|88|90|104|97|109|88|102|99|85|104|111|89|93|106|98|103|109|93|100|93|131|114|102|124|102|100|99|125|92|95|112|92|93|105|125|94|108|137|98|104|120|134|115|111|134|114|118|121|134|117|105|147|104|121|118|130|123|103|146|141|106|121|127|103|103|116|120|100|131|139|105|117|135|122|117|103|129|115|111|133|108|103|127|128|116|111|130|118|124|117|138|115|128|147|114|120|141|143|135|119|139|108|123|152|129|120|116|128|118|120|141|142|114|141|147|123|110|145|115|130|129|155|145|127|130|117|130|135|157|148|119|163|110|121|122|129|113|124|146|139|121|121|171|122|115|142|126|113|126|148|126|134|133|114|139|128|146|118|140|150|138|125|137|152|121|125|169|142|158|128|185|140|140|145|136|126|129|144|140|141|141|157|106|144|161|121|122|159|116|141|145|167|131|147|166|147|129|128|177|125|113|176|130|127|138|163|151|121|188|150|130|121|150|144|139|160|133|128|157|184|148|127|187|142|128|147|161|130|133|178|163|145|156|188|132|144|186|135|147|132|187|151|146|200|134|129|148|197|149|137|166|131|140|119|157|135|123|206|153|140|133|171|128|138|173|127|109|122|159|121|116|162|104|124|114|138|97|98|149|118|123|117|133|100|103|137|99|92|87|125|83|100|111|102|83|78|124|77|81|124|82|86|88|91|83|83|120|77|75|98|110|85|85|107|94|78|70|120|70|71|110|85|71|80|98|78|69|80|56|65|52|76|68|61|73|61|53|57|62|43|53|70|52|50|56|73|40|47|68|33|35|34|58|40|33|43|30|30|41|37|29|25|45|26|37|32|42|35|21|45|32|32|21|37|26|27|30|27|18|20|27|27|24|29|20|10|22|30|18|20|22|23|22|21|31|18|12|18|11|14|20|21|23|15|16|9|14|10|28|19|15|25|19|14|12|24|12|15|22|20|21|16|11|16|13|21|21|15|22|19|15|8|16|6|8|17|16|9|11|20|11|6|12|9|8|9|7|10|9|9|10|4|13|7|7|3|8|10|3|7|1|6|5|5|7|3|4|2|2|2|4|4|4|2|2|1|0|2|6|1|1|1|0|0|2|0|3|1|0|2|2|2|2|2|0|0|0|0|0|0|1|0|1|0|0|0|1|0|1|0|0|0|1|1|0|0|0|0|0|1|0|1|0|1</HistCounts> + </HistItem> + </Histograms> + <Metadata> + <MDI key="STATISTICS_MAXIMUM">538.97302246094</MDI> + <MDI key="STATISTICS_MEAN">414.88370197617</MDI> + <MDI key="STATISTICS_MINIMUM">253.27299499512</MDI> + <MDI key="STATISTICS_STDDEV">53.267620020209</MDI> + <MDI key="STATISTICS_VALID_PERCENT">100</MDI> + </Metadata> + </PAMRasterBand> +</PAMDataset> diff --git a/tests/inputdata/multipoint_stations_tille.cpg b/tests/inputdata/multipoint_stations_tille.cpg new file mode 100644 index 0000000..3ad133c --- /dev/null +++ b/tests/inputdata/multipoint_stations_tille.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/tests/inputdata/multipoint_stations_tille.dbf b/tests/inputdata/multipoint_stations_tille.dbf new file mode 100644 index 0000000000000000000000000000000000000000..8745e73ef7961a784f3241942b6010229daa14d7 GIT binary patch literal 4222 zcmbtW+in{-5EYuVb<!q9(YHP^9}t4%UirAPSGH7LBFS>?zAOaS0SvfK;l!x(_n8@T zwIsD#2`*uXyXVXd&ybv1zj%6m^j)vldw0ZN!n8GxXD6ivk8wT<ET*$bjSyedZ+2c* z{WJSG#re0N?3<k~L;khTUxoZDpZ_c5fA)EduOq_D`hh>j@8VAvv(*Q)1I9nlHy>UW zQc`@%{|A5h-n@{?Ld1ugTxO#7ApS-DX6NDQ259H|-F&$mjAwt64f%)qF3Y79f;6<| zcNOx%{+$eq({f4ijsM$?9(uSe$H&TzANXJG;VJ%jcYNf}DYIVd`orm9yfTsu|BJ70 zzADCj_k3IU$sYc!iyu|9Kg^P(@_T>z-h5OIR%1%ARsUePSe{q&5x5yXxZmTVrrY_8 z;pTp|#=q$6T2U)MFRF4`4bg`5|5#hwnRxTuo?o#k&{qB6-#?p8@d}ZDa6NkS3Gmej z+lujj;|nnS0IQ&bpDeoh;zKt-x$5RexOT_-BRt>^zQ8K);Fo*!&2aBJ{HGV){K-!L z;R$$}(HegN_pe-B6i{S_5BmF4b$|1p>mMBO*FF3{pZ>o6X#DAZ{A$J2)9sg=2m4HX z*k6~``uh5jEQk-TPw%M?RPSG?Zx2uTRrCQc`G@|PUk6Y58GdJehBoyP_HUCPS&;wR zMlU@*S!a0Jq0fB0cJXi6N-7ZxDaLDdetUO!!`Sh|_08A!pC2FITYw!rl!`fgZtB5U zE_9v=2V+dBJc~uvU=UqpQS%Po0Og6!BhM<$q!zhq3>lO7agz-qW{<bvi@(!P_vX() zC?!wCmK5z_5Ye^3JdBjU3Z-OjuvW*GSgux#4&k2(oiA1;Xp5cwr~~TEj|uxLq;ChF zf+s0?*dNBU=5g#oc8y3&uxBjFw6oPh#7Ys4KdIty(9HlS(Od>loO2OCQOYy;4`MUG zQKekv8-R{LCf>?;DlGRCKq%ok-iUf2lyVWq%DD<fNS;Nt7tH7<c<SyCM)%Vv5lSUI zk}8X1iCYI&aB=tDmhztcd$+!ZTC)TFuy&GWLl21qUe8_4te57sg2O`DZlRlQv1XI? z!!z3j)R23sSfWX;-IGR@I#O`CHiv^drCYj1qTM?J=a;Eir_KU4Q@6gMK>&)sn{Hts zlH#2roDfR!u-2l76G`C?x`I&(+%6Y_>f2;Q4-no>95F0W-v}VTvdQWY$X2opZDCm< zoZY2>E!{#!9CL35>`=;67m{JOP|oIq<Fv3R023T2^zvo^6hm>j%?F{FXMq*O4BL#{ z?kUiCGglfeyxnF1Qen4<w~8JbrwaR1&UFAK+ieCKNRuEup$G}LTWJB`Km2?kbii$C Z?G{p}Ja(%0fH?nSHB|1ecZl%czX7eHA9Mf! literal 0 HcmV?d00001 diff --git a/tests/inputdata/multipoint_stations_tille.prj b/tests/inputdata/multipoint_stations_tille.prj new file mode 100644 index 0000000..f904335 --- /dev/null +++ b/tests/inputdata/multipoint_stations_tille.prj @@ -0,0 +1 @@ +PROJCS["RGF93_Lambert_93",GEOGCS["GCS_RGF93_geographiques_dms",DATUM["D_RGF_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",6600000.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Standard_Parallel_1",44.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1.0]] \ No newline at end of file diff --git a/tests/inputdata/multipoint_stations_tille.shp b/tests/inputdata/multipoint_stations_tille.shp new file mode 100644 index 0000000000000000000000000000000000000000..7a9f17a0ca44e4389ace91a1941f9f388a4bcb70 GIT binary patch literal 228 zcmZQzQ0HR64vJndGca&K<vbL$96?OeMUi0oh82Xrc^QO{-3YiSBakHnGYh5{-7F9v Zq!0wq)Gz^s;QC>1f!U4Bhv`Qa0{{;x7_<NY literal 0 HcmV?d00001 diff --git a/tests/inputdata/multipoint_stations_tille.shx b/tests/inputdata/multipoint_stations_tille.shx new file mode 100644 index 0000000000000000000000000000000000000000..cae162080b070a0f02e7fc1021e09eef95a22f04 GIT binary patch literal 116 zcmZQzQ0HR64y;}<Gca&K<vbL$96?OeMUi0oh82Xrc^QO{-3Yj-5s)PV#6ch$0Nbnw A&j0`b literal 0 HcmV?d00001 diff --git a/tests/inputdata/soil_tille.tif b/tests/inputdata/soil_tille.tif new file mode 100755 index 0000000000000000000000000000000000000000..b42cfaf77f240a6e4b5ccfa2cbc94a6635c6d53d GIT binary patch literal 85857 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 literal 0 HcmV?d00001 diff --git a/tests/inputdata/soil_tille.tif.aux.xml b/tests/inputdata/soil_tille.tif.aux.xml new file mode 100755 index 0000000..f2687fe --- /dev/null +++ b/tests/inputdata/soil_tille.tif.aux.xml @@ -0,0 +1,21 @@ +<PAMDataset> + <PAMRasterBand band="1"> + <Histograms> + <HistItem> + <HistMin>0.999</HistMin> + <HistMax>3.001</HistMax> + <BucketCount>1000</BucketCount> + <IncludeOutOfRange>0</IncludeOutOfRange> + <Approximate>0</Approximate> + <HistCounts>7229|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3419</HistCounts> + </HistItem> + </Histograms> + <Metadata> + <MDI key="STATISTICS_MAXIMUM">3</MDI> + <MDI key="STATISTICS_MEAN">1.6421863260706</MDI> + <MDI key="STATISTICS_MINIMUM">1</MDI> + <MDI key="STATISTICS_STDDEV">0.93379300423015</MDI> + <MDI key="STATISTICS_VALID_PERCENT">100</MDI> + </Metadata> + </PAMRasterBand> +</PAMDataset> diff --git a/tests/inputdata/stations_tille.dbf b/tests/inputdata/stations_tille.dbf new file mode 100644 index 0000000000000000000000000000000000000000..8745e73ef7961a784f3241942b6010229daa14d7 GIT binary patch literal 4222 zcmbtW+in{-5EYuVb<!q9(YHP^9}t4%UirAPSGH7LBFS>?zAOaS0SvfK;l!x(_n8@T zwIsD#2`*uXyXVXd&ybv1zj%6m^j)vldw0ZN!n8GxXD6ivk8wT<ET*$bjSyedZ+2c* z{WJSG#re0N?3<k~L;khTUxoZDpZ_c5fA)EduOq_D`hh>j@8VAvv(*Q)1I9nlHy>UW zQc`@%{|A5h-n@{?Ld1ugTxO#7ApS-DX6NDQ259H|-F&$mjAwt64f%)qF3Y79f;6<| zcNOx%{+$eq({f4ijsM$?9(uSe$H&TzANXJG;VJ%jcYNf}DYIVd`orm9yfTsu|BJ70 zzADCj_k3IU$sYc!iyu|9Kg^P(@_T>z-h5OIR%1%ARsUePSe{q&5x5yXxZmTVrrY_8 z;pTp|#=q$6T2U)MFRF4`4bg`5|5#hwnRxTuo?o#k&{qB6-#?p8@d}ZDa6NkS3Gmej z+lujj;|nnS0IQ&bpDeoh;zKt-x$5RexOT_-BRt>^zQ8K);Fo*!&2aBJ{HGV){K-!L z;R$$}(HegN_pe-B6i{S_5BmF4b$|1p>mMBO*FF3{pZ>o6X#DAZ{A$J2)9sg=2m4HX z*k6~``uh5jEQk-TPw%M?RPSG?Zx2uTRrCQc`G@|PUk6Y58GdJehBoyP_HUCPS&;wR zMlU@*S!a0Jq0fB0cJXi6N-7ZxDaLDdetUO!!`Sh|_08A!pC2FITYw!rl!`fgZtB5U zE_9v=2V+dBJc~uvU=UqpQS%Po0Og6!BhM<$q!zhq3>lO7agz-qW{<bvi@(!P_vX() zC?!wCmK5z_5Ye^3JdBjU3Z-OjuvW*GSgux#4&k2(oiA1;Xp5cwr~~TEj|uxLq;ChF zf+s0?*dNBU=5g#oc8y3&uxBjFw6oPh#7Ys4KdIty(9HlS(Od>loO2OCQOYy;4`MUG zQKekv8-R{LCf>?;DlGRCKq%ok-iUf2lyVWq%DD<fNS;Nt7tH7<c<SyCM)%Vv5lSUI zk}8X1iCYI&aB=tDmhztcd$+!ZTC)TFuy&GWLl21qUe8_4te57sg2O`DZlRlQv1XI? z!!z3j)R23sSfWX;-IGR@I#O`CHiv^drCYj1qTM?J=a;Eir_KU4Q@6gMK>&)sn{Hts zlH#2roDfR!u-2l76G`C?x`I&(+%6Y_>f2;Q4-no>95F0W-v}VTvdQWY$X2opZDCm< zoZY2>E!{#!9CL35>`=;67m{JOP|oIq<Fv3R023T2^zvo^6hm>j%?F{FXMq*O4BL#{ z?kUiCGglfeyxnF1Qen4<w~8JbrwaR1&UFAK+ieCKNRuEup$G}LTWJB`Km2?kbii$C Z?G{p}Ja(%0fH?nSHB|1ecZl%czX7eHA9Mf! literal 0 HcmV?d00001 diff --git a/tests/inputdata/stations_tille.prj b/tests/inputdata/stations_tille.prj new file mode 100644 index 0000000..f904335 --- /dev/null +++ b/tests/inputdata/stations_tille.prj @@ -0,0 +1 @@ +PROJCS["RGF93_Lambert_93",GEOGCS["GCS_RGF93_geographiques_dms",DATUM["D_RGF_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",6600000.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Standard_Parallel_1",44.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1.0]] \ No newline at end of file diff --git a/tests/inputdata/stations_tille.shp b/tests/inputdata/stations_tille.shp new file mode 100644 index 0000000000000000000000000000000000000000..e2f056dd076eee6e742788749be007e707ed01ec GIT binary patch literal 156 zcmZQzQ0HR64*Xs)GcYhh<vbL$96?OeMUi0oh82Xrc^QO{-3YiS$QUk|Sunj&vzU<O JVD^B_1psh64DA2_ literal 0 HcmV?d00001 diff --git a/tests/inputdata/stations_tille.shx b/tests/inputdata/stations_tille.shx new file mode 100644 index 0000000000000000000000000000000000000000..c94228bdd8230751bb743385713c979995c81886 GIT binary patch literal 116 zcmZQzQ0HR64y;}<GcYhh<vbL$96?OeMUi0oh82Xrc^QO{-3Yj-5s(G4#{onG0N7Fo Ak^lez literal 0 HcmV?d00001 diff --git a/tests/multipoint_gauges_config.cfg b/tests/multipoint_gauges_config.cfg new file mode 100644 index 0000000..049723b --- /dev/null +++ b/tests/multipoint_gauges_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:multipoint_stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/no_col_name_config.cfg b/tests/no_col_name_config.cfg new file mode 100644 index 0000000..3d4b4f5 --- /dev/null +++ b/tests/no_col_name_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/no_dem_config.cfg b/tests/no_dem_config.cfg new file mode 100644 index 0000000..6051d01 --- /dev/null +++ b/tests/no_dem_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem: +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/no_gauges_config.cfg b/tests/no_gauges_config.cfg new file mode 100644 index 0000000..36f633c --- /dev/null +++ b/tests/no_gauges_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges: + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:coords +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/no_polygon_config.cfg b/tests/no_polygon_config.cfg new file mode 100644 index 0000000..1691ed8 --- /dev/null +++ b/tests/no_polygon_config.cfg @@ -0,0 +1,115 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:polygon +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes + +[step_dem] +step_auto_dem:yes + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/running_tests.sh b/tests/running_tests.sh new file mode 100755 index 0000000..5d60323 --- /dev/null +++ b/tests/running_tests.sh @@ -0,0 +1,625 @@ +#!/bin/bash + + +MYPATH=`readlink -f $0` +MYDIR=`dirname $MYPATH` + + +NBSEP=$(echo "$MYDIR"|grep -o '/'|wc -l) +DIRPATH=$(echo "$MYDIR"|cut -d/ -f1-$NBSEP) + + + + +succeed=0 +failed=0 +count=0 + +echo "**** test hru-delin_step1.sh ****" +# test input directory +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_input_dir_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test input directory ----- ok" + let succeed++ +else + echo "test input directory ------------ FAILED" + let failed++ +fi + +##Â test input dem +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./no_dem_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if dem exist ----- ok" + let succeed++ +else + echo "test if dem exist ------------ FAILED" + let failed++ +fi + +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_dem_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if dem is valid ----- ok" + let succeed++ +else + echo "test if dem is valid ------------ FAILED" + let failed++ +fi + + +##Â test gauges +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./no_gauges_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Gauges exist ----- ok" + let succeed++ +else + echo "test if Gauges exist ------------ FAILED" + let failed++ +fi + +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_gauges_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Gauges is valid ----- ok" + let succeed++ +else + echo "test if Gauges is valid ------------ FAILED" + let failed++ +fi + +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./multipoint_gauges_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Gauges is point geometry ----- ok" + let succeed++ +else + echo "test if Gauges is point geometry ------------ FAILED" + let failed++ +fi + + + + +##Â test data is valid +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_data_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if data exist ----- ok" + let succeed++ +else + echo "test if data exist ------------ FAILED" + let failed++ +fi + +##Â test output FILE and RESULTS Directory +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./empty_output_files_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Directory is provided ----- ok" + let succeed++ +else + echo "test if output FILE Directory is provided ------------ FAILED" + let failed++ +fi + + +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./empty_output_results_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Results is provided ----- ok" + let succeed++ +else + echo "test if output FILE Results is provided ------------ FAILED" + let failed++ +fi + +##Â test output FILE and RESULTS Directory is valid +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_output_files_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Directory is valid ----- ok" + let succeed++ +else + echo "test if output FILE Directory is valid ------------ FAILED" + let failed++ +fi + + +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_output_results_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Results is valid ----- ok" + let succeed++ +else + echo "test if output FILE Results is valid ------------ FAILED" + let failed++ +fi + + + + +##Â test irrigation raster if provided +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_irrigation_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Irrigation is provided ----- ok" + let succeed++ +else + echo "test if Irrigation is provided ------------ FAILED" + let failed++ +fi + +##Â test polygon layer for surface selection if provided +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_polygon_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Polygon layer for surface selection is valid ----- ok" + let succeed++ +else + echo "test if Polygon layer for surface selection is valid ------------ FAILED" + let failed++ +fi + +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./no_polygon_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Polygon layer for surface selection is provided ----- ok" + let succeed++ +else + echo "test if Polygon layer for surface selection is provided ------------ FAILED" + let failed++ +fi + + +##Â test if coords for surface selection is valid +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_coords_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if coords for surface selection is valid ----- ok" + let succeed++ +else + echo "test if coords for surface selection is valid ------------ FAILED" + let failed++ +fi + +##Â test if reclass dem rules is missing +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_reclass_dem_rules_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if reclass dem rules is missing is valid ----- ok" + let succeed++ +else + echo "test if reclass dem rules is missing is valid ------------ FAILED" + let failed++ +fi + + +##Â test if step dem is valid +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_step_dem_rules_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if step dem value is valid ----- ok" + let succeed++ +else + echo "test if if step dem value is valid ------------ FAILED" + let failed++ +fi + +##Â test if reclass slope rules is missing +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_reclass_slope_rules_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if reclass slope rules is missing is valid ----- ok" + let succeed++ +else + echo "test if reclass slope rules is missing is valid ------------ FAILED" + let failed++ +fi + + +##Â test if reclass aspect rules is missing +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_reclass_aspect_rules_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if reclass aspect rules is missing is valid ----- ok" + let succeed++ +else + echo "test if reclass aspect rules is missing is valid ------------ FAILED" + let failed++ +fi + +##Â test if basin size value is missing +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./bad_basin_size_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if basin size value is missing ----- ok" + let succeed++ +else + echo "test if basin size value is missing ------------ FAILED" + let failed++ +fi + +##Â test step1 all OK +let count++ +$DIRPATH/bin/hru-delin_step1.sh ./step1_ok_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if step 1 all OK ----- FAILED" + let failed++ +else + echo "test if step 1 all OK ------------ ok" + let succeed++ +fi +echo " " +echo "**** test hru-delin_step2.sh ****" + + +#Â test output FILE and RESULTS Directory +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./empty_output_files_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Directory is provided ----- ok" + let succeed++ +else + echo "test if output FILE Directory is provided ------------ FAILED" + let failed++ +fi + + +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./empty_output_results_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Results is provided ----- ok" + let succeed++ +else + echo "test if output FILE Results is provided ------------ FAILED" + let failed++ +fi + +##Â test output FILE and RESULTS Directory is valid +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_output_files_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Directory is valid ----- ok" + let succeed++ +else + echo "test if output FILE Directory is valid ------------ FAILED" + let failed++ +fi + + +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_output_results_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Results is valid ----- ok" + let succeed++ +else + echo "test if output FILE Results is valid ------------ FAILED" + let failed++ +fi + + + + + + +##Â test if basin size value is missing +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_basin_size_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if basin size value is missing ----- ok" + let succeed++ +else + echo "test if basin size value is missing ------------ FAILED" + let failed++ +fi + +##Â test if COLNAME is missing +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./no_col_name_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if COLNAME is missing ----- ok" + let succeed++ +else + echo "test if COLNAME is missing ------------ FAILED" + let failed++ +fi + +##Â test if COLNAME is valid + +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_col_name_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if COLNAME is valid ----- ok" + let succeed++ +else + echo "test if COLNAME is valid ------------ FAILED" + let failed++ +fi + + +##Â test if Relocated Gauges is valid +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_relocated_gauges_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Relocated Gauges is valid ----- ok" + let succeed++ +else + echo "test if Relocated Gauges is valid ------------ FAILED" + let failed++ +fi + +##Â test if Surface_tolerance_1 is valid +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_surface_tolerance_1_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Surface_tolerance_1 is valid ----- ok" + let succeed++ +else + echo "test if Surface_tolerance_1 is valid ------------ FAILED" + let failed++ +fi + +##Â test if Distance_tolerance_1 is valid +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_distance_tolerance_1_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Distance_tolerance_1 is valid ----- ok" + let succeed++ +else + echo "test if Distance_tolerance_1 is valid ------------ FAILED" + let failed++ +fi + +##Â test if Surface_tolerance_2 is valid +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_surface_tolerance_2_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Surface_tolerance_2 is valid ----- ok" + let succeed++ +else + echo "test if Surface_tolerance_2 is valid ------------ FAILED" + let failed++ +fi + +##Â test if Distance_tolerance_2 is valid +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_distance_tolerance_2_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Distance_tolerance_2 is valid ----- ok" + let succeed++ +else + echo "test if Distance_tolerance_2 is valid ------------ FAILED" + let failed++ +fi + +##Â test if Gauge area col name is provided +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_gauge_area_col_name_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Gauge area col name is provided ----- ok" + let succeed++ +else + echo "test if Gauge area col name is provided ------------ FAILED" + let failed++ +fi + +##Â test if gauge area col unit is provided +let count++ +$DIRPATH/bin/hru-delin_step2.sh ./bad_gauge_area_col_unit_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if gauge area col unit is provided ----- ok" + let succeed++ +else + echo "test if gauge area col unit is provided ------------ FAILED" + let failed++ +fi + +##Â test step2 all OK +let count++ + +$DIRPATH/bin/hru-delin_step2.sh ./step2_ok_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if step 2 all OK ----- FAILED" + let failed++ +else + echo "test if step 2 all OK ------------ ok" + let succeed++ +fi + +echo " " +echo "**** test hru-delin_step3.sh ****" + + +#Â test output FILE and RESULTS Directory +let count++ +$DIRPATH/bin/hru-delin_step3.sh ./empty_output_files_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Directory is provided ----- ok" + let succeed++ +else + echo "test if output FILE Directory is provided ------------ FAILED" + let failed++ +fi + + +let count++ +$DIRPATH/bin/hru-delin_step3.sh ./empty_output_results_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Results is provided ----- ok" + let succeed++ +else + echo "test if output FILE Results is provided ------------ FAILED" + let failed++ +fi + +##Â test output FILE and RESULTS Directory is valid +let count++ +$DIRPATH/bin/hru-delin_step3.sh ./bad_output_files_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Directory is valid ----- ok" + let succeed++ +else + echo "test if output FILE Directory is valid ------------ FAILED" + let failed++ +fi + + +let count++ +$DIRPATH/bin/hru-delin_step3.sh ./bad_output_results_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Results is valid ----- ok" + let succeed++ +else + echo "test if output FILE Results is valid ------------ FAILED" + let failed++ +fi + + +##Â test if hrus min surface is valid +let count++ +$DIRPATH/bin/hru-delin_step3.sh ./bad_hrus_min_surface_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if hrus min surface is valid ----- ok" + let succeed++ +else + echo "test if hrus min surface is valid ------------ FAILED" + let failed++ +fi + +##Â test data is valid +let count++ +$DIRPATH/bin/hru-delin_step3.sh ./bad_data_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if data exist ----- ok" + let succeed++ +else + echo "test if data exist ------------ FAILED" + let failed++ +fi + + +#Â test step3 all OK +let count++ + +$DIRPATH/bin/hru-delin_step3.sh ./step3_ok_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if step 3 all OK ----- FAILED" + let failed++ +else + echo "test if step 3 all OK ------------ ok" + let succeed++ +fi + +echo " " +echo "**** test hru-delin_step4.sh ****" + + + +#Â test output FILE and RESULTS Directory +let count++ +$DIRPATH/bin/hru-delin_step4.sh ./empty_output_files_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Directory is provided ----- ok" + let succeed++ +else + echo "test if output FILE Directory is provided ------------ FAILED" + let failed++ +fi + + +let count++ +$DIRPATH/bin/hru-delin_step4.sh ./empty_output_results_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Results is provided ----- ok" + let succeed++ +else + echo "test if output FILE Results is provided ------------ FAILED" + let failed++ +fi + +##Â test output FILE and RESULTS Directory is valid +let count++ +$DIRPATH/bin/hru-delin_step4.sh ./bad_output_files_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Directory is valid ----- ok" + let succeed++ +else + echo "test if output FILE Directory is valid ------------ FAILED" + let failed++ +fi + + +let count++ +$DIRPATH/bin/hru-delin_step4.sh ./bad_output_results_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if output FILE Results is valid ----- ok" + let succeed++ +else + echo "test if output FILE Results is valid ------------ FAILED" + let failed++ +fi + +##Â test data is valid +let count++ +$DIRPATH/bin/hru-delin_step4.sh ./bad_data_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if data exist ----- ok" + let succeed++ +else + echo "test if data exist ------------ FAILED" + let failed++ +fi + + +##Â test irrigation raster if provided +let count++ +$DIRPATH/bin/hru-delin_step4.sh ./bad_irrigation_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if Irrigation is provided ----- ok" + let succeed++ +else + echo "test if Irrigation is provided ------------ FAILED" + let failed++ +fi + + +#Â test step4 all OK +let count++ + +$DIRPATH/bin/hru-delin_step4.sh ./step4_ok_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if step 4 all OK ----- FAILED" + let failed++ +else + echo "test if step 4 all OK ------------ ok" + let succeed++ +fi + +echo " " +echo "**** test all step ****" + + + +#Â test all step all OK +let count++ + +$DIRPATH/bin/hru-delin_all-steps.sh ./step4_ok_config.cfg >out 2>/dev/null +if [ $? -ne 0 ];then + echo "test if all step all OK ----- FAILED" + let failed++ +else + echo "test if all step all OK ------------ ok" + let succeed++ +fi + + +echo " " +echo " $succeed tests on $count tests succeed" +echo " $failed tests on $count tests failed" +rm -rf ./out + + + diff --git a/tests/step1_ok_config.cfg b/tests/step1_ok_config.cfg new file mode 100644 index 0000000..6dfe0d6 --- /dev/null +++ b/tests/step1_ok_config.cfg @@ -0,0 +1,113 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1= +distance_tolerance_1= +# second rule +surface_tolerance_2= +distance_tolerance_2= + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit= + +#relocated_gauges:/home/chris/DONNEES/Rhone/gauges_def_fil_500.shp +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name= +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/step2_ok_config.cfg b/tests/step2_ok_config.cfg new file mode 100644 index 0000000..bab9f2d --- /dev/null +++ b/tests/step2_ok_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=10 +distance_tolerance_2=100 + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit=1 + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=S_BH +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface= + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/step3_ok_config.cfg b/tests/step3_ok_config.cfg new file mode 100644 index 0000000..dd8d0c6 --- /dev/null +++ b/tests/step3_ok_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=1 +distance_tolerance_2=10 + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit=1 + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=S_BH +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface=100 + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + diff --git a/tests/step4_ok_config.cfg b/tests/step4_ok_config.cfg new file mode 100644 index 0000000..dd8d0c6 --- /dev/null +++ b/tests/step4_ok_config.cfg @@ -0,0 +1,112 @@ + +# ----------- +# environment +# ----------- + +[dir_in] +dir:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata +[files_in] +dem:mnt_tille.tif +gauges:stations_tille.shp + +[data] +hgeo:hgeo_tille.tif +landuse:landuse_tille.tif +soil:soil_tille.tif + +[irrigation] +irrig_rast: + +[dir_out] +files:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_FILES +results:/home/michael.rabotin/1_HYBV/HRU_DELIN/hru-delin-master/tests/inputdata/OUT_RESULTS +# ------------------------- +# 1st step : hru-delin_init +# ------------------------- + +[surface] +#selection: total -> full dem +# polygon -> polygon: name of the shapefile +# coords -> give the coords upper left (west and north) and lower right (east and south) +selection:total +polygon: +west: +north: +east: +south: + + +[demfill] +# +# if demfill = yes : depressionless DEM will be generated +# no : no action on input DEM +# +demfill:yes + +# +# if rules_auto_* = yes : rules will be calculated by the module +# if no : fill the corresponding file (reclass_default_rules_*) +# +[reclass_dem] +rules_auto_dem:yes +step_dem:100 + +[reclass_slope] +rules_auto_slope:yes + +[reclass_aspect] +rules_auto_aspect:yes + +[basin_min_size] +# number of pixels +size=5 + +# --------------------------- +# 2nd step : hru-delin_basins +# --------------------------- +[auto_relocation] +to_do:yes +# first rule +surface_tolerance_1=1 +distance_tolerance_1=10 +# second rule +surface_tolerance_2=1 +distance_tolerance_2=10 + +# drained surface +gauge_area_col_name=S_BH + +# unit = 1 : m , = 2 : km +gauge_area_unit=1 + +relocated_gauges: + +[for_watershed_id] +# column name of the gauge attribute (attribute type must be numeric) +# used for identification of watersheds +col_name=S_BH +# --------------------------- +# 3rd step : hru-delin_hrugen +# --------------------------- + +[hrus_min_surface] +# +surface=100 + +# +# MNT-derived layers to be integrated in the overlay operation +# +[layer_overlay] +dem:x +slope:x +aspect:x + +# -------------------------------- +# 4th step : hru-delin_parms_J2000 +# -------------------------------- +[topology] +dissolve_cycle:y + + + + -- GitLab