OpenStreetMap

Strade d'Italia

Posted by Cascafico on 21 June 2018 in Italian (Italiano)

Qualcuno in ML si era chiesto come rappresentare la diffusione dei vari odonimi nazionali. Il metodo grezzo è di scaricare qualche Gbyte di pbf dai Geofabrik e lavorare di osmconvert e osmfilter. Facciamo invece lavorare overpass-turbo per noi :-)

Codice ISTAT

E' noto che ogni comune italiano non può avere lo stesso odonimo per strade diverse, per cui la query deve essere eseguita per ogni comune. Come individuare univocamente un comune? Il codice ISTAT assegnato al tag ref:ISTAT ci viene in aiuto. Facciamoci un'idea di quanti comuni abbiamo e quel'è il loro codice: query codici ISTAT comuni italiani

Sintetizzo l'output (7955 linee) con le prime e le ultime:
001001
001002
001003
...
111105
111106
111107

Bene, ora sappiamo che è numerico, composto da 6 cifre e che l'Italia ne ha oltre 7955; internet ci viene in aiuto rivelandoci che le prime 3 sono il codice provincia. Se poi ci viene la cursiosità di sapere quante sono, sul listone ottenuto sopra eseguimo un:
pi@raspberrypi:~ cat listone | cut -c 1-3 | sort -u | wc -l
109

Script di query overpass-turbo

Usiamo il listone come spunto per estrarre a pezzi in overpass-turbo tutti i nomi delle highway: lo script ItalyHighwayNames.sh accetta come argomento un intervallo definito da due codici provincia ricavati precedentemente, in modo da limitare le richieste ed eseguirle in più tempi. Per esempio:
pi@raspberrypi:~ ./ItalyHighwayNames.sh 001 041
Inoltre lo script sceglie la prima occorrenza dell'odonimo, evitando di elencare gli eventuali altri pezzi di way. Formisce poi le coordinate del centro, in modo da poter facilmente generare una umap.
Una successiva esecuzione dello script su provincie già elaborate, non sovrascrive i risultati: può quindi essere necessario rimuovere i file con estensione lst se sono vuoti (a causa per esempio di disconnessioni o timeout overpass).

Elaborazione risultati

Che ce ne facciamo di questo centinaio di file .lst? Possiamo per esempio filtrare "Rosmini" e preparare il file per essere importato sulla umap degli Odonimi italiani:
pi@raspberrypi:~ cat ???.lst | grep Rosmini > Rosmini.csv
aggiungendo gli header necessari alla rappresentazione spaziale:
pi@raspberrypi:~ sed -i '1 i\odonimo,lat,lon' Rosmini.csv

Per chi vuole sbizzarrirsi, il listone compresso è in github (incompleto, vedi nota sotto).

Nota

Alcune query non sono andate a buon fine (file .lst di dimensione 0): da ripassare.

Login to leave a comment