Questa repository contiene il codice per lo sviluppo dell'applicazione sul moritoraggio della qualità dell'aria a Roma.
Il progetto, al momento Work In Progress è stato realizzato dal Team per la Trasformazione Digitale per il Roma Capitale.
@TODO: inserire la ToC
La figura seguente mostra il funzionamento dell'app in back end.
Per ogni giorno dell'anno, a partire dal 1999, ARPA mette a disposizione le rilevazioni orarie delle stazioni per il controllo della qualità dell'aria situate a Roma. I dati sono forniti per 9 agenti chimici (o inquinanti). Per l'applicazione di pone l'attenzione su cinque di essi in quanto, solo per loro sono disponibili i valori limiti utili al calcolo dell'indice di qualità dell'aria. Gli inquinanti di interesse sono:
N.B. questa parte verrà arricchita insieme al dipartimento ambiente del Comune.
- Benzene
- NO2
- O3
- PM10
- PM2.5
I dati grezzi vengono ingeriti all'interno del DAF tramite il processo dettagliatamente descritto qui. Il codice del download dei file è contenuto nei file:
main.py
main_update.py
Oltre i dati di ARPA si da riferimento a due ulteriori dataset:
-
Open Data della Regione Lazio
Mette a disposizione un dataset che geolocalizza le stazioni da cui sono fatte le rilevazioni (
static/data/default_info/arpaaria.csv
). -
Open Data Roma Capitale
Limiti imposti dalla legge [inserire decreti legge] per la concentrazione di agenti chimici nell'aria.
Utilizzando l'applicazione, il cittadino può ottenere informazioni relative alla qualità dell'aria nella sua zona.
In particolare egli può visualizzare su mappa la disposizione delle centraline sul territorio cittadino. Per ogni centralina è inoltre possibile conoscere delle informazioni aggiuntive riguardo le rilevazioni di concentrazione degli inquinanti.
Nello specifico:
- Il colore del cerchio che rappresenta la centralina corrisponde alla fascia dell'indice della qualità dell'aria (IQA)
- Il numero sul tooltip, che si apre al passaggio del mouse sulla centralina, è il valore dell'IQA per quella centralina
- Il grafico a torta indica la porzione di giorni dell'anno in cui la centralina ha un'aria positiva o negativa. La scala è fornita [qui - aggiungi link]
- Il grafico a barre mostra la quantià di ogni inquinante. In particolare, il colore varia rispetto alla stessa scala fornita prima
All'utente è data la possibilità di visualizzare i dati in un altro formato con l'intento di dargli la possibilità di comparare tra loro le stazioni.
- Per ogni centralina si costruisce una bolla la quale grandezza corrisponde all'IQA medio di tutti gli inquinanti registrato dalla centralina nell'anno di interesse. Per fargli un'idea migliore, all'utente è data la possibilità di ordinare le bolle.
- Passando il mouse sulle bolle è possibile vedere sulla mappa radar la quantità media di inquinante che la centralina ha rilevato nell'anno di interesse. Cliccando sulla centralina si blocca l'area corrispndente sul radar ed è possibile passare il mouse sulle altre centraline per adoperare un confronto. Per deselezionare le centraline bloccate occorre un doppio click! Sullo sfondo del radar:
- L'area arancione mostra la media degli inquinanti su tutte le centraline
- Le linee tratteggiate mostrano i range dell'IQA
- Infine è possibile visualizzare, facendo una media tra le varie centraline, le serie storiche mensili dei sincoli inquinanti. Anche questo grafico è interattivo in quanto da all'untente la possibilità di scegliere le serie da visualizzare.
Per eseguire l'applicazione è necessario clonare questa repository ed usare il branch development
.
$ git clone https://github.com/CriMenghini/daf-QuAR.git
$ cd daf-QuAR
$ git checkout development
Quindi assicurarsi che tutti i requirements(requirements.txt
) siano soddisfatti.
Per installare i requirements:
Con Conda:
$ while read requirement; do conda install --yes $requirement; done < requirements.txt
Senza:
$ pip install requirements.txt
Una volta verificati i requisiti:
$ python server.py <your_DAF_user> <your_DAF_psw> <daf_API_endpoint>
Once the server is ready open the page 0.0.0.0:5000
sul tuo browser.
[IT] Il progetto è in via di sviluppo ed interamente disponibile in questa repository. Pertanto si incoraggia chiunque a partecipare alla sua completa realizzazione. Il codice non è complesso e documentato per quanto possibile, pertanto appetibile anche per i programmatori inesperti.
Il tipo di contribuzioni sono:
PROPOSAL
: l'utente propone una nuova feature per l'appPATCH
: l'utente fixa dei bugSTYLE
: l'utente modifica colore e stile dell'app
Per coloro che vogliono contribuire si richiede di utilizzare le suddette label per identificare il tipo di pull request
.
[EN] This is a work in progress project. It is entirely open source thus everyone is invited to contribute! The code is not difficult and documented as far as it's possible. So, newbies you are more than welcome!
The kind of contributions:
PROPOSAL
: the users proposes a new feature for the appPATCH
: the user fixes bugsSTYLE
: the user modify the color, the style and the content of the app
To all those who wants to contribute, we kindly ask you to use the aforementioned labels such that we can identify the different typology of pull requests
.
[IT] La repository è organizzata nel seguente modo:
-
shape_files
: raccoglie gli shape file utili alla generazione del topojson. -
static
:css
: stylesheet per le paginehtml
data
: cartella contenente i dati utilijs
: cartella contenente i file JS per le visualizzazionisrc
: script per modificare e modellare i dati
[EN] The repository is organized as follows:
-
shape_files
: raccoglie gli shape file utili alla generazione del topojson. -
static
:css
: stylesheets for thehtml
pagesdata
: folder that contains all the datajs
: Javascript files for the viz (d3
)src
: scripts to dynamically change data and viz
[IT] Se siete interessati a modificare:
-
la mappa fare riferimento ai seguenti file:
templates/mappa.html
: contiene html e JS per la visualizzazione della mappastatic/css/style.css
: stile generale della pagina (header)static/css/mappaStyle.css
: stile della mappastatic/src/utils.py
: linee 110-141 per l'elaborazione del topojson
-
le bolle considerare i file:
static/js/bubbleCentraline.js
: JS per la visualizzazionestatic/css/style.css
: stilestatic/src/plot_utils.py
: la funzionebubble_data
modella i dati per la visualizzazione
-
il radar fare riferimento ai file:
static/js/radarAgentiChimici.js
: JS per la visualizzazionestatic/css/style.css
: stilestatic/src/radar_data.py
: la funzionebubble_data
modella i dati per la visualizzazione
-
la serie storica considera i file:
static/js/lineAgentiChimici.js
: JS per la visualizzazionestatic/css/style.css
: stilestatic/src/linee_data.py
: la funzionebubble_data
modella i dati per la visualizzazione
[EN] If you are interest in adding your contribution into:
-
the map ftake a look here:
templates/mappa.html
: html and JS to generate the mapstatic/css/style.css
: general page style (header etc)static/css/mappaStyle.css
: mappa stylestatic/src/utils.py
: lines 110-141 to write the topojson
-
the bubbles take a look here:
static/js/bubbleCentraline.js
: JS for the vizstatic/css/style.css
: stylestatic/src/plot_utils.py
: functionbubble_data
to model data for the viz
-
il radar fare riferimento ai file:
static/js/radarAgentiChimici.js
: JS for the viz *static/css/style.css
: stylestatic/src/plot_utils.py
: functionradar_data
to model data for the viz
-
la serie storica considera i file:
static/js/lineAgentiChimici.js
: JS for the viz *static/css/style.css
: stylestatic/src/plot_utils.py
: functionlinee_data
to model data for the viz
[IT] L'intento è quello di estendere l'applicazione alle altre città e regioni di Italia.
Il codice è generalizzato perciò, a meno di alcuni fattori:
- URL dell'API da cui sono estratti i dati
- Shape file geografici
- [fare un check di ciò che manca]
è possibile replicare i risultati per la propria amministrazione utilizzando il seguente schema per i dati.
@TODO: DEFINIRE UFFICIALMENTE LO STANDARD
[EN] Our aim is to extend the use of the app to public administations other than Rome. The code has been generalized, but some factors:
- API endpoint to get data
- Shape files
- [check whatelse should be pointed out]
It is possible to reproduce the results for your own administration using the same schema for the data.
@TODO: OFFICIALLY DEFINE THE STANDARD
[IT] Se non siete programmatori ma volete comunque dare il vosto contributo a questo progetto, andate nella sezione Issue ed apritene una in cui descrivete la modifica che vorreste fare e dategli una label seguendo quelle indicate [qui(aggiungi link sezione)]