Eliminare i valori spuri
Introduzione
Molte stazioni meteorologiche emetteranno occasionalmente dei valori errati. Ciò non solo farà apparire dei picchi nei tuoi grafici, ma può anche causare molti errori nei massimi/minimi storici, nei rapporti NOAA, ecc.
Ecco un metodo per eliminare questi valori in un database SQLite.
Pulizia dei valori dal database
Avrai bisogno dell'utilità da riga di comando sqlite3. Per installarlo su un sistema Debian:
sudo apt-get install sqlite3
Come sempre, è prudente lavorare su una copia di backup del tuo database. Ferma Weewx. Copia il tuo database in /var/tmp o in un'altra posizione iniziale. Lavoraci lì. Copia la versione modificata al suo posto (avendo salvato quella originale per ogni evenienza).
Dati errati
Per fare un esempio concreto, supponiamo che tu stia cercando di trovare e rimuovere alcuni valori windSpeed e windGust maggiori di 100. Hai copiato il tuo database SQLite in /var/tmp/backup.sdb.
Per trovare i valori errati:
echo "SELECT * FROM archive WHERE (windSpeed > 100);" | sqlite3 /var/tmp/backup.sdb echo "SELECT * FROM archive WHERE (windGust > 100);" | sqlite3 /var/tmp/backup.sdb
Sostituisci i campi errati con il valore null:
echo "UPDATE archive SET windSpeed=NULL WHERE (windSpeed > 100);" | sqlite3 /var/tmp/backup.sdb echo "UPDATE archive SET windGust=NULL WHERE (windGust > 100);" | sqlite3 /var/tmp/backup.sdb
Ora salva il tuo vecchio database, quindi sostituiscilo con /var/tmp/backup.sdb.
Eliminazione di record indesiderati
Ecco un altro esempio. Uno scenario comune è avere alcuni record indesiderati all'inizio del database, causati da un errore nell'avvio corretto dell'orologio del computer. Vuoi eliminare questi dati. Ai fini di questo esempio, supponi di sapere che il tuo primo record valido è 12 maggio 2018 11:20 UTC.
Usa uno strumento come il sito Web epochconverter.com per capirne il rispettivo timestamp in Unix Epoch. La risposta per l'esempio è 1526124000.
Ora usa lo strumento sqlite3 per vedere quali record lo precedono. Supponiamo che tu abbia copiato il tuo database SQLite in /var/tmp/backup.sdb.
sqlite3 /var/tmp/backup.sdb sqlite> select datetime(dateTime, 'unixepoch', 'localtime'), dateTime from archive where dateTime < 1526124000;
Se sono tutti valori indesiderati, allora è sicuro eliminare questi dati:
sqlite> delete from archive where dateTime <1526124000; sqlite> .quit
Ora salva il tuo vecchio database SQLite, quindi sostituiscilo con /var/tmp/backup.sdb.
Eliminare i riepiloghi giornalieri
Infine, è necessario eliminare i vecchi riepiloghi giornalieri, che altrimenti includerebbero questi dati errati. Usa lo strumento wee_database per fare ciò:
wee_database weewx.conf --drop-daily
I riepiloghi verranno ricostruiti al successivo avvio di Weewx. Poiché questo può richiedere molto tempo, potresti volerlo fare prima:
wee_database weewx.conf --rebuild-daily
Rigenerare le pagine web
La maggior parte delle vecchie pagine web e i grafici verrà rigenerata automaticamente, ma potrebbe volerci un po' di tempo. L'eccezione sono i rapporti "NOAA" - solo il più recente verrà rigenerato. Se i dati errati sono presenti nel passato, allora dovresti eliminare i file NOAA incriminati e lasciare che Weewx li rigeneri.
Prevenire problemi futuri
Infine, per evitare problemi in futuro, assicurati di impostare un intervallo di valori accettabili per il servizio StdQC. Vedere la sezione StdQC nella Guida per l'utente per i dettagli su come eseguire questa operazione.