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.

Autore: Tom Keffer