QGIS e il Calcolo Incidenza cumulativa settimanale dei contagi Regionale – DL 13 marzo 2021 n.30

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)

Plugin DataPlotly 3.7

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

RINGRAZIAMENTI


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.