Closed dcesari closed 4 years ago
Non ho resistito dal guardare il codice, il punto sembra essere qua:
https://github.com/ARPA-SIMC/wreport/blob/master/wreport/bufr/decoder.cc#L61
bisogna capire qual'è il ruolo di quel 18-esimo byte della sezione 1 che eccodes chiama "padding".
Secondo questa documentazione WMO https://www.wmo.int/pages/prog/www/WDM/Guides/Guide-binary-1A.html il 18-esimo byte è riservato per uso locale, non è standardizzato che si riferisca al secolo.
Purtroppo il codice che interpreta cosíil 18esimo byte è stata scritto prima del 2010, ed è fuori dalla storia dei commit per capire da dove arrivi.
Ho stampato il valore di quel byte per i vari BUFR che abbiamo nella test suite, e di solito è '20' o '21', che me lo fa sembrare di fatto standardizzato sul secolo 20esimo o 21esimo.
Possiamo dire che, se quel byte ha un valore diverso da '20' o '21', lo ignoro e tiro a indovinare per il secolo come faccio nel caso sia zero?
Come non detto, ci sono BUFR che hanno secolo 20 e anno 7, e immagino non siano del 1907, ma che sia piú probabile che a seconda di chi li scrive, qualcuno pignolizza che il 20xx è il 21esimo secolo, e qualcuno va a buon senso e ci mette le prime due cifre dell'anno.
A questo punto, direi di ignorare del tutto il byte, e continuare a aggiungere 1900 se l'anno è maggiore di 50
Ho aggiunto test per i valori degli anni nei var BUFR nella test suite. Ignorando il secolo mi sembra che i risultati siano sensati, a parte per bufr/gts-synop-rad2.bufr
che è un bufr ed. 4 in cui l'anno è segnato a 15
invece di 2015
, ma lí direi ci sia poco da fare: l'edition 4 specifica l'anno per intero su 16 bit.
Il problema è comparso in bufr2netcdf ma risale a wreport. In allegato un file con 2 messaggi bufr, wind profiler, presumibilmente corretti. Se li vado a decodificare, la sezione 1 in un caso ha l'anno corretto, nell'altro caso un anno assurdo 7120:
L'anno codificato successivamente nella sezione dati con B04001 è giusto. Analizzando con
bufr_dump -O
vedo che nella sezione 1 c'è solo l'anno del secolo ma non il secolo, possibile? come viene calcolato il secolo in questo caso? Da cosa dipende? Le due sezioni 1 differiscono solo per il byte di padding e poco altro.wprof.zip