gelinive

Créer des profils du manteau neigeux - retour accueil

git clone git://bebou.netlib.re/gelinive
Log | Files | Refs | README |

commit e5e0a3439f85b3e2e4550b6b347d22732fc22619
parent 674e3978b52dd4c3cb128857fe795093522414bc
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Tue, 12 Mar 2024 12:14:38 +0100

Modif format fichier + ajout test + factorisation

On modifie le format de fichier puisque H est en réalité calculé. Aussi
pour que ça suive l'ordre des champs des anciennes fiches de Météo France.

On ajoute un test.

On factorise le code dans le script, toute la première partie est faite
en un seul script awk, c'est beaucoup plus clair.

Aussi on change les bornes pour le graph. Police plus petite pour que ça
rentre.

Diffstat:
Mgelinive.1 | 9++++-----
Mgelinive.5 | 15+++++++++++----
Mgeliniveplot | 6+++---
Mgelinivetest | 38+++++++++++++++-----------------------
Dtests/data | 9---------
Dtests/data.png | 0
Dtests/intermediairedata | 9---------
Mtests/test | 6+++---
8 files changed, 36 insertions(+), 56 deletions(-)

diff --git a/gelinive.1 b/gelinive.1 @@ -7,13 +7,13 @@ gelinive - calcul la résistance au battage .SS SYNOPSIS .LP -[< \fIENTREE\fR] \fBgelinive\fR [\fIINTERMEDIAIRE\fR] +[< \fIENTREE\fR] \fBgelinive\fR [\fITABLEAU\fR] .SS DESCRIPTION .LP Calcul la résistance au battaque et l\(cqenfoncement total d\(cqune sonde dans la neige. En fait un graphique png à l\(cqaide de geliniveplot. -Pour le format en entrée et celui du fichier intermédiaire voir gelinive(5). +Pour le format en entrée et celui du tableau produit voir gelinive(5). .SS UTILISATION ET EXEMPLES .LP @@ -41,7 +41,7 @@ Ou les piper directement dans un visionneur d\(cqimage : < data gelinive | feh -. - .EE .PP -Si l\(cqon renseigne un chemin à la place de INTERMEDIAIRE alors un +Si l\(cqon renseigne un chemin à la place de TABLEAU alors un fichier sera créé à ce chemin avec les données calculées de résistance au battage et d\(cqenfoncement pour n coups. .LP @@ -49,8 +49,7 @@ battage et d\(cqenfoncement pour n coups. < data gelinive data_with_Re > image.png .EE .PP -Si l\(cqon ne renseigne pas INTERMEDIAIRE aucun fichier intermédiaire -ne sera créé. +Si l\(cqon ne renseigne pas TABLEAU aucun fichier ne sera créé. .SS VOIR AUSSI .LP diff --git a/gelinive.5 b/gelinive.5 @@ -11,7 +11,8 @@ gelinive .SS DESCRIPTION .LP -gelinive(1) prend en entrée des données concernant le manteau neigeux sous un certain format. +gelinive(1) prend en entrée des données concernant le manteau neigeux sous un +certain format. .SS CHAMPS SÉPARÉS PAR DES TABULATIONs .LP @@ -43,16 +44,22 @@ h la hauteur de chute (cm) .IP "5. " e enfoncement total de la sonde (cm) .LP -Si gelinive(1) est appelé avec un chemin en argument il créera un -fichier en calculant et ajoutant aux cinq précédents les deux éléments suivants : +Si gelinive(1) est appelé avec un chemin en argument il créera un fichier en +calculant et ajoutant aux cinq précédents les éléments suivants : .IP "6. " -d enfoncement pour n coups (cm) +d l\(cqenfoncement total de la sonde (cm) .if n \ .sp -1 .if t \ .sp -0.25v .IP "7. " R la résistance au battage +.if n \ +.sp -1 +.if t \ +.sp -0.25v +.IP "8. " +H la hauteur au-dessus du sol (cm) .SS VOIR AUSSI .LP diff --git a/geliniveplot b/geliniveplot @@ -11,7 +11,7 @@ # faq, bugs, etc: type "help FAQ" # immediate help: type "help" (plot window: hit 'h') # set terminal qt 0 font "Sans,9" -set term pngcairo size 1000,500 font "Sans,12" +set term pngcairo size 1000,500 font "Sans,9" # set terminal dumb size 150 75 # set output "|feh -" unset clip points @@ -136,13 +136,13 @@ set xlabel "Hauteur de neige (cm)" set xlabel font "" textcolor lt -1 norotate set x2label "" set x2label font "" textcolor lt -1 norotate -set xrange [ 0.00000 : 200.000 ] noreverse writeback +set xrange [ 0.00000 : 310.000 ] noreverse writeback set x2range [ * : * ] noreverse writeback set ylabel "Résistance au battage (Kg)" set ylabel offset character 2, -1, 0 font "" textcolor lt -1 rotate by -90 set y2label "" set y2label font "" textcolor lt -1 rotate -set yrange [ 0.00000 : 100.000 ] noreverse writeback +set yrange [ 0.00000 : 140.000 ] noreverse writeback set y2range [ * : * ] noreverse writeback set zlabel "" set zlabel font "" textcolor lt -1 norotate diff --git a/gelinivetest b/gelinivetest @@ -16,39 +16,31 @@ créé. exit 0 fi -calc_Re() { -awk -F'\t' '{ if($7=="0"){ print "print \"/\n\"" } else { printf "(%s*%s)/%s+%s+%s\n", $3, $4, $7, $1, $2 } }' | -bc -l | -cut -d'.' -f1 -} - -diffcol() { -awk -v col=${1:-1} ' -BEGIN { getline; prevcol=$col; print prevcol } -{print $col-prevcol;prevcol=$col} -' -} - makehistodata() { sed '$ a\ 0 0 0 0 0 0 0 0 2,$ p' | awk '{ - hcur=$6;dcur=$8 + rcur=$7;hcur=$8 getline - hnext=$6;dnext=$8 - for(i=hcur;i>hnext;i--) {print i" "dcur} + rnext=$7;hnext=$8 + for(i=hcur;i>hnext;i--) {print i" "rcur} }' | tr '/' '1' } -tempdir=$(mktemp -d);trap "rm -rf $tempdir" EXIT - -cat > $tempdir/in -< $tempdir/in diffcol 5 | - paste $tempdir/in - > $tempdir/temp -< $tempdir/temp calc_Re | - paste $tempdir/temp - | +tempfile=$(mktemp);trap "rm -rf $tempdir" EXIT +cat > $tempfile + +topheight=$(tail -n1 $tempfile | cut -f5) +awk -vH="$topheight" -vOFS='\t' ' +{ +q=$1;P=$2;n=$3;h=$4;e=$5;d=e-olde +H=H-(olde-volde) +if(d!=0) { R=int(n*h/d+q+P) } else { R="/" } +print $0,d,R,H +volde=olde;olde=e +}' $tempfile | tee "$1" 2> /dev/null | makehistodata | tac | diff --git a/tests/data b/tests/data @@ -1,9 +0,0 @@ -1 0 0 0 46 100 -1 1 0 0 46 54 -1 1 1 5 48 54 -1 1 2 5 50 52 -1 1 2 5 52 50 -1 1 5 5 55 48 -1 1 6 5 58 45 -1 1 1 5 98 42 -1 1 5 10 100 2 diff --git a/tests/data.png b/tests/data.png Binary files differ. diff --git a/tests/intermediairedata b/tests/intermediairedata @@ -1,9 +0,0 @@ -1 0 0 0 46 100 46 1 -1 1 0 0 46 54 0 / -1 1 1 5 48 54 2 4 -1 1 2 5 50 52 2 7 -1 1 2 5 52 50 2 7 -1 1 5 5 55 48 3 10 -1 1 6 5 58 45 3 12 -1 1 1 5 98 42 40 2 -1 1 5 10 100 2 2 27 diff --git a/tests/test b/tests/test @@ -10,12 +10,12 @@ fail() echo -n $red"fail"$norm echo "Launching test" -for file in data +for file in miribel hohneck do printf "Testing file $file | " -< tests/$file ./gelinivetest $tempdir/intermediaire$file > $tempdir/$file.png +< tests/$file ./gelinivetest $tempdir/${file}tab > $tempdir/$file.png printf "inter " -cmp --silent tests/intermediaire$file $tempdir/intermediaire$file && pass || fail +cmp --silent tests/${file}tab $tempdir/${file}tab && pass || fail printf " image " compare -metric AE tests/$file.png $tempdir/$file.png /dev/null 2> /dev/null && pass || fail echo