ARPA-SIMC / meteo-vm2

C++ library for VM2 data
GNU General Public License v2.0
0 stars 0 forks source link

`bufr-to-meteo-vm2` genera record VM2 non validi #26

Closed mnuccioarpae closed 1 year ago

mnuccioarpae commented 1 year ago

Nelle specifiche del formato VM2 c'è scritto che, se nei flag "AXXYYZZWW" A=2, allora il valore da usare è sempre quello contenuto nel campo ausiliario.

Quindi se A=2 il campo ausiliario è obbligatorio, ma:

$ echo '202301270809,1,161,4,5,,200000000' | meteo-vm2-to-bufr | bufr-to-meteo-vm2
20230127080900,1,161,5.000000,,,200000000

cioè bufr-to-meteo-vm2 genera un record non valido se A=2.

Il problema è che meteo-vm2-to-bufr può salvare solo uno tra valore principale e valore ausiliario perché non è stato definito un b-code per il secondo valore. Salva però i flag e questi vengono lasciati tali e quali da bufr-to-meteo-vm2.

Per risolvere il problema ci sono due strade:

  1. rinunciare a salvare nel bufr tutte le informazioni contenute nel VM2 e modificare bufr-to-meteo-vm2 per scrivere A=0 quando A=2.
  2. risolvere il bug #9
pat1 commented 1 year ago

L'approccio di mantenere due valori esula dal data model adottato che prevede di utilizzare due reti differenti per dati elaborati o da fonti differenti. L'approccio a due valori sarà fonte di grossi problemi, complicazioni in vari ambiti e una maledizione per le future generazioni ...

mnuccioarpae commented 1 year ago

@pat1 Quindi che soluzione proponi? La 1?

pat1 commented 1 year ago

decidere quali sono i dati "ufficiali" e utilizzare reti differenti per archiviare altre informazioni ad uso interno. Perchè se dovessimo aggiungere volore3 poi come facciamo ? Valore2 (o valore 1 quando si utilizza il 2) dovrebbe migrare a un'altra rete e diventare inutilizzato.

mnuccioarpae commented 1 year ago

Dalle specifiche del VM2 mi sembra chiaro che il dato "ufficiale" è quello ausiliario (valore2) quando A=2. Per questo ho fatto il merge di #22.

Un dubbio che ho è se il problema debba essere risolto in meteo-vm2-to-bufr perché scrive A=2 nel bufr senza fornire il valore ausiliario. Mi sembra più corretto che sia meteo-vm2-to-bufr a mettere A=0 nel bufr.

pat1 commented 1 year ago

io eliminerei il caso A=2 (completamente dal mondo) e metterei quando A=2 valore2 in valore1 e porterei il vecchio valore1 in un'altra rete; questo una volta unatantum nella vita e annullerei la soluzione a #22 . Poi ad esempio è il concetto di priorità associata alla rete che risolve ad esempio in una estrazione da dballe se preferisco avere valore1 o valore 2 a piacere. Questo il mio suggerimento.

mnuccioarpae commented 1 year ago

@pat1 ok, ora è chiaro cosa proponi. Per me va benissimo, ma temo che manchino le risorse umane per implementare questa soluzione in tempi ragionevoli. Io aprirei un altro issue con questa proposta come sviluppo futuro. Nel frattempo propongo di metterci la pezza che ho proposto, cioè modificare meteo-vm2-to-bufr per impostare A=0 quando A=2.