[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