L'ANAS pubblica sul suo sito la pagina “Info Cantieri” per conoscere i lavori in corso per la costruzione di nuove opere e per la manutenzione straordinaria.
Lo stato dei lavori viene aggiornato a cadenze regolari. Le informazioni e le date riportate riguardano gli “Stati di Avanzamento Lavori” comunicati dalle imprese e gli impegni contrattuali previsti per la conclusione delle opere.
I dati sono consultabili da interfaccia web, ma scegliendo prima la regione e poi le singole strade; estrarne un quadro con i dettagli per tutte le strade gestite è laborioso e richiede tempo. E non è disponibile per il download un file di insieme.
La posizione di ogni lavoro è indicata con annotazioni chilometriche relative alla strada interessata (ad esempio dal km 5 al 12 della SS113).
Grazie a Laura Camellini per averci messo una pulce nell'orecchio.
Lo script anas.sh
fa il download dei dati di circa 180 strade (è il dato al 17 luglio 2018) e ne crea un unico file di insieme in due formati: CSV e JSON. Quelli presenti del repo "non saranno aggiornati".
Nota bene: una versione del file CSV (encoding utf-8
, separatore ,
) viene aggiornata ogni settimana ed è disponibile a questo URL https://query.data.world/s/slpppilpda5p2ce2xmn7a3wpdpdzsx.
Il Jupyter Notebook anas.ipynb trasforma le annotazioni chilometriche in archi e li salva in formato GeoPackage e GeoJSON.
ANAS è una S.p.A. quindi - salvo non specificato diversamente - tutti i diritti sui dati che pubblica sono riservati.
C'è da chiedere di associare a questi dati una licenza che ne consenta il riuso.
I dati sul posizionamento dei lavori, sono espressi in termini di kilometraggio dei punti di inizio e fine lavori lungo la "strada" interessata. Si sa ad esempio che un lavoro con un certo id
interessa la SS113, dal km 3.2 al km 8.
ANAS in queste pagine non rende disponibile per il download la rete stradale (meglio dire il "grafo") su cui sono basate queste annotazioni geografiche. Quindi l'utente può avere solo un quadro generico e a spanne sul "dove".
Per fortuna Gianni Vitrano (grazie) ci ha segnalato che sul sito del Ministero dei Trasporti esiste il dataset opendata del grafo stradale del 2015 http://dati.mit.gov.it/catalog/dataset/grafo-stradale-anas. Aprendolo si evince come sia predisposto per applicare le funzioni di linear referencing, con cui è possibile trasformare le annotazione chilometriche nei tratti geometrici corrispondenti.
Le problematicità correlate sono le seguenti:
- il grafo è aggiornato al 2015;
- non è detto che sia lo stesso usato da ANAS per creare l'anagrafica dei lavori in corso pubblicato sul loro sito;
- diverse decine di lavori sono associati alla tratta stradale denominata "VARIE". Questi non sono trasformabili in modo automatico in geometrie;
- molti nomi di strada sono duplicati, e quindi non per tutte le anagrafiche lavori è possibile estrarre gli archi geometrici correlati.
Nei JSON di origine i valori numerici sono espressi in questo modo "importo_lav_principali": "438.733,76"
. Nello script è stato inserito un filtro jq
che fa in modo che nel file JSON di output di insieme siano espressi come "importo_lav_principali": 438733.76
(e nel CSV di insieme da 438.733,76
a 438733.76
) (vedi #3).
Ci sono dei record in cui la data è espressa come 07/02/
, manca l'anno. Nello script è stato aggiunto un comando che estrae gli elementi con questa problematicità nel file problemi/stradeAnasNoAnnoUltimazione.csv
(vedi #4).
Alcuni lavori in corso hanno i descrittori dal_km
al_km
impostati a zero. Da questi è impossibile estrarre automaticamente la posizione geografica.
Creato un file di output che ne da conto: problemi/stradeAnasAnnotazionKmNulla.csv
.
Da verificare se si tratta di annotazioni corrette e che quindi facciano riferimento al fine linea.
dal_km | al_km | descrizione | tipo_lavoro | importo_lav_principali | importo_lav_totale | data_consegna_impresa | avanzamento_lavori | ultimazione | sospesa | impresa | id | regione | strada |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 14.7 | (CUP-F77H18000410001) RA 12 Chieti- Pescara dal km. 0+000 al km. 14+800 Lavori di ripristino di funzionalita e di completamento degli impianti di illuminazione lungo l?asta principale e gli svincoli. 1? Lotto | Lavori di manutenzione straordinaria. | 438733.76 | 506388.76 | 09/05/2018 | 4.26 | 21/09/2018 | ATI STACCHIO IMPIANTI SRL-IGE IMPIA SRL-TATANGELO CIRO SRL | 14076 | ABRUZZO | RA12 | |
0 | 14.7 | (CUP-F77H18000510001) RA 12 Chieti- Pescara dal km. 0+000 al km. 14+800 Lavori di ripristino di funzionalita e di completamento degli impianti di illuminazione lungo l?asta principale e gli svincoli. 2? Lotto | Lavori di manutenzione straordinaria. | 436022.44 | 493727.44 | 31/05/2018 | 0.00 | 28/10/2018 | ATI STACCHIO IMPIANTI SRL-IGE IMPIA SRL-TATANGELO CIRO SRL | 14077 | ABRUZZO | RA12 |
[
{
"dal_km": 0,
"al_km": 14.7,
"descrizione": "(CUP-F77H18000410001) RA 12 Chieti- Pescara dal km. 0+000 al km. 14+800 Lavori di ripristino di funzionalita e di completamento degli impianti di illuminazione lungo l?asta principale e gli svincoli. 1? Lotto",
"tipo_lavoro": "Lavori di manutenzione straordinaria.",
"importo_lav_principali": 438733.76,
"importo_lav_totale": 506388.76,
"data_consegna_impresa": "09/05/2018",
"avanzamento_lavori": 4.26,
"ultimazione": "21/09/2018",
"sospesa": "",
"impresa": "ATI STACCHIO IMPIANTI SRL-IGE IMPIA SRL-TATANGELO CIRO SRL",
"id": "14076",
"regione": "ABRUZZO",
"strada": "RA12"
},
{
"dal_km": 0,
"al_km": 14.7,
"descrizione": "(CUP-F77H18000510001) RA 12 Chieti- Pescara dal km. 0+000 al km. 14+800 Lavori di ripristino di funzionalita e di completamento degli impianti di illuminazione lungo l?asta principale e gli svincoli. 2? Lotto",
"tipo_lavoro": "Lavori di manutenzione straordinaria.",
"importo_lav_principali": 436022.44,
"importo_lav_totale": 493727.44,
"data_consegna_impresa": "31/05/2018",
"avanzamento_lavori": 0,
"ultimazione": "28/10/2018",
"sospesa": "",
"impresa": "ATI STACCHIO IMPIANTI SRL-IGE IMPIA SRL-TATANGELO CIRO SRL",
"id": "14077",
"regione": "ABRUZZO",
"strada": "RA12"
}
]
Sitografia
- PostGIS
- GRASS GIS
- Spatialite (cercare
LocateBetweenMeasures
) - una introduzione di Boundless
Il dataset di ANAS è di tipo MULTILINESTRINGZM
: contiene al suo interno le informazioni chilometriche progressive. In import è necessario specificarlo altrimenti vanno perse. Il comando di base è:
ogr2ogr -overwrite -lco LAUNDER=No -f PostgreSQL PG:"dbname=test_andy host=localhost port=5432 user=postgres password=password" "grafo_Anas.shp" -nln "anaszm" -nlt "MULTILINESTRINGZM"
La query di base per trasformare un'annotazione chilometrica in una geometria è:
select ST_CollectionExtract(ST_LocateBetween(wkb_geometry,18000,50000),2) from anaszm where "COD_STRA" like 'SS113'
Note:
- la funzione
ST_LocateBetween
è la funzione principale. Richiede la geometria a cui essere applicata, la distanza da cui partire (che abbiamo trasformato in metri, perché è l'unità di misura del grafo ANAS), la distanza a cui finisce la tratta; - l'output
ST_LocateBetween
è una geometry collection. Per estrarre da questa soltanto i segmenti viene usata la funzioneST_CollectionExtract
; - la query è applicata, come esempio, alla sola strada
SS113
.