DECRETO
Dal 15 marzo al 6 aprile 2021, le misure stabilite dai provvedimenti di cui all’articolo 2 del decreto-legge n. 19 del 2020 per la zona rossa di cui all’articolo 1, comma 16-septies, lettera c), del decreto-legge n. 33 del 2020, si applicano anche nelle regioni e Province autonome di Trento e Bolzano individuate con ordinanza del Ministro della salute ai sensi dell’articolo 1, comma 16-bis, del decreto-legge n. 33 del 2020, nelle quali l’incidenza cumulativa settimanale dei contagi e’ superiore a 250 casi ogni 100.000 abitanti, sulla base dei dati validati dell’ultimo monitoraggio disponibile.
Nel “DECRETO-LEGGE 13 marzo 2021, n. 30“
INTRODUZIONE
Questo calcolo è interessante in quanto occorre calcolare l’incidenza cumulativa settimanale, ovvero, fissata una data, occorre fare la somma dei nuovi_positivi
dei 6 giorni precedenti e poi normalizzarli (per ottenere l’incidenza) rispetto la popolazione (moltiplicata per 100.000); questo calcolo è semplice usando SQL (dialetto SQLite), sotto la query che calcola la somma settimanale con finestra temporale di 6 giorni precedenti alla data corrente (grazie Andrea):
SELECT data,
codice_regione,
denominazione_regione,
SUM(nuovi_positivi)
OVER (PARTITION BY denominazione_regione
ORDER BY data
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) nuoviContagiSettimanali
FROM "dpc_covid19_ita_regioni"
in questo blog post voglio realizzare gli stessi calcoli usando solo QGIS e le sue espressioni, SOTTO l’espressione utilizzata e una simulazione di finestra temporale tramite array:

sotto il calcolo della somma dei dati della finestra temporale (ovvero somma i dati dell’array):

per ottenere l’incidenza occorre dividere la somma precedentemente calcolata, con il valore della popolazione regionale (j_OBS_VALUE) e infine moltiplicare per 100.000; sotto l’intera espressione:
/*incidenza cumulativa settimanale*/
(with_variable('pos',
array_find(array_agg( expression:="data"),"data"),
with_variable('dat',
array_length(array_agg("data")),
array_sum(
array_slice(
array_agg("nuovi_positivi","denominazione_regione"),
-@dat+@pos-6,
-@dat+@pos)))
)
/ "j_OBS_VALUE") * 100000
Esempio: Regione Abruzzo, data: 15/03/2021 (finestra temporale: ultimi 6 giorni)
NOTE FINALI: Usare SQLite (e la query) è indubbiamente la soluzione migliore e più veloce, ma volevo mettermi alla prova e vedere se fosse possibile fare gli stessi calcoli tramite l’uso di finestre temporali. L’espressione ottenuta è utilizzabile a partire da QGIS 3.18 in poi in quanto utilizza la funzione array_sum
, altrimenti occorrerebbe installare il Plugin ArrayPlus.
RIFERIMENTI
- SQLite : https://www.sqlitetutorial.net/
- QGIS : https://qgis.org/it/site/
- Plugin DataPlotly : https://plugins.qgis.org/plugins/DataPlotly/
- Repository OnDATA : https://github.com/ondata/covid19italia/blob/master/elaborazioni/dpc_covid19/soglia250/README.md
RINGRAZIAMENTI
