[Talk-it] Import civici Milano - primi passi
Andrea Musuruane
musuruan a gmail.com
Ven 24 Ago 2018 10:46:57 UTC
Ciao a tutti,
stimolato da Maurizio durante l'ultimo SOTM, ho iniziato a scrivere una
pagina wiki per l'import dei numeri civici di Milano:
https://wiki.openstreetmap.org/wiki/Import/Catalogue/Address_import_for_Milan
Mancano ancora un po' di cose, tra cui il workflow.
A tal proposito, inizierei a parlare dello stradario.
Nel file ZIP "OpenData_Civici.zip" che trovate all'indirizzo indicato nella
wiki, è presente il file "Viario_20180718.csv", che riporta l'elenco di
tutti i toponimi stradali. Ovviamente in nessuno dei campi (anche se ce n'è
uno chiamato OPENSTREETMAP) c'è il nome della highway inserito con le
regole che usiamo in OSM (
https://wiki.openstreetmap.org/wiki/IT:Editing_Standards_and_Conventions#Nomi_delle_strade
).
Tra i vari campi però è presente anche il CODICE_VIA, ovvero il codice
identificativo del toponimo stesso, che viene usato anche per identificare
la strada su cui si trova il civico nel file Civici_20180718.csv (ne
parleremo approfonditamente più avanti).
In OSM, sulle highway, nel tag loc_ref è presente il codice arco AMAT così
composto: vvvv_aaaaa dove vvvv è il codice numerico via secondo la
toponomastica del Comune, mentre aaaaa è il codice arco. Questi tag sono
stati inseriti nel corso del progetto di integrazione dei dati viabilistici
del Comune di Milano in OpenStreetMap:
https://wiki.openstreetmap.org/wiki/Agenzia_mobilit%C3%A0_ambiente_territorio
A questo punto è evidente che è possibile creare uno stradario che includa
anche il nome attualmente usato in OSM.
Ho scaricato quindi i dati di Milano da
https://osm-estratti.wmflabs.org/estratti/Lombardia/Milano/Milano (io ho
preso quelli del 2018-08-10).
Poi ho generato un file CSV con lo stradario presente in OSM, per mezzo di
osmfilter e osmconvert, avendo cura di inserire nel campo loc_ref solo la
parte con il codice numerico via.
$ osmfilter --keep="highway=* and loc_ref=* and name=*" 015146---Milano.osm
| osmconvert - --csv="name loc_ref" --csv-separator=";" |awk -F"_" '{print
$1}' |sort |uniq >> Stradario_OSM.csv
$ echo "loc_ref;name" > Stradario_OSM_20180810.csv && awk -F";" '{print
$2";"$1}' Stradario_OSM.csv | sort | uniq >> Stradario_OSM_20180810.csv
Infine ho fatto un programma in python che fa il merge dello stradario del
Comune di Milano con i dati di OSM.
./build_street_dir.py
Il merge avviene ovviamente per mezzo del CODICE_VIA. In output viene
generato il file Viario_OSM_20180718.csv.
Purtroppo però può capitare che il CODICE_VIA presente in OSM sia
associato a strade con nomi differenti. Immagino siano tutti degli errori.
E' possibile modificare il programma per trovare questi casi ed
eventualmente correggerli. Questo lavoro è lasciato come esercizio al
lettore ;-)
Per scegliere quindi qual è il nome migliore tra i diversi nomi delle
highway associati allo stesso CODICE_VIA uso un algoritmo fuzzy e inserisco
anche il ratio (la bontà del match) nel file CSV risultante.
Se esaminiamo il file CSV, si nota che:
- ci sono 6 toponimi con STATO=3 (soppresse) che hanno un nome in OSM.
E' probabile quindi che le informazioni in OSM non siano aggiornate
- ci 164 diverse strade con STATO=2 (attive) ma che non hanno un nome in
OSM. Questo può voler dire nei dati OSM manca il CODICE_VIA o il toponimo
- I toponimi OSM che contengono "privata" a volte sono scritti
erroneamente con la lettera maiuscola (es: Via Privata Pietro Calderon de
la Barca)
- i toponimi OSM che hanno una RATIO < 76 sono da rivedere perché il
match è molto probabilmente errato (il toponimo OSM potrebbe non essere
corretto oppure il CODICE_VIA potrebbe essere errato).
- non è ovviamente detto che il toponimo OSM rispetti
https://wiki.openstreetmap.org/wiki/IT:Editing_Standards_and_Conventions#Nomi_delle_strade.
Questa sarebbe una buona occasione per rivederli.
I file sono disponibili su github:
https://github.com/musuruan/osm_imports/tree/master/milano
Non sparate sul pianista.
Ciao,
Andrea
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/talk-it/attachments/20180824/21cdf08e/attachment.html>
Maggiori informazioni sulla lista
Talk-it