Closed edigiacomo closed 3 years ago
Just a thought: looking at dballe.txt, B13211 is coded with 37 bits and 37 > 32, maybe some overflow occurs due to the use of 32 bit int? B13211 is the only non-character variable with so many bits, since it is local, could we set a scale factor to reduce bits? I remember some thoughts concerning the max. volume of Italian basins (lago di Campotosto?).
Trovato. In wreport/varinfo.h
:
/**
* Encode a double value into a positive integer value using Varinfo binary
* encoding informations (bit_ref and scale)
*
* @param fval
* Value to encode
* @returns
* The double value encoded as an unsigned integer
*/
uint32_t encode_binary(double fval) const;
Quindi i valori interi hanno al momento una codifica che deve stare nei 32bit.
Se serve avere interi piú grandi (e se gli altri decoder BUFR lo supportano), apriamo un issue in wreport?
Intanto ho fatto push del test riprodotto nel branch issue239
Grazie a entrambi! Non so se possiamo usare un fattore di scala, perché come specifiche avevo una precisione di 1m³ (@dcesari vedi email "Volume invaso Ridracoli" del 2017).
Parlando con Emanuele, vediamo tre possibilità:
Non ho visto nelle tabelle WMO nessuna variabile numerica con piú di 32bit di ampiezza nella codifica BUFR. Questo mi rende abbastanza pessimista sulla possibilità di usare una variabile del genere mantenendo compatibilità con altri decoder, e non mi è chiaro come poter testare altri decoder su variabili cosí grandi a meno di non andargli a manomettere la loro definizione dei codici B.
Altra possibilità: non salvare BUFR, e salvare solo JSON
Dopo valutazione interna, si è deciso di correggere la dimensione in bit della variabile e portarla a 32.
The
Var
object seems ok:But when I export the message, the value becomes zero: