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
_______________________________________________ Talk-it mailing list [email protected] https://lists.openstreetmap.org/listinfo/talk-it

