OSMIT 2013
Rassegna di toponomastica OpenData
(oltre a OSM)
Daniele Forsi
http://www.forsi.it/osm
Licenza Creative Commons Attribuzione 3.0
Open Data
●
"I dati aperti, comunemente chiamati con il termine inglese
open data anche nel contesto italiano, sono alcune
tipologie di dati liberamente accessibili a tutti, privi di
brevetti o altre forme di controllo che ne limitino la
riproduzione e le cui restrizioni di copyright eventualmente
si limitano ad obbligare di citare la fonte o al rilascio delle
modifiche allo stesso modo." http://it.wikipedia.org/wiki/Dati_aperti
Il progetto Open Definition di Open
Knowledge Foundation utilizza la seguente
frase per definire dati (e contenuti) aperti:
«un contenuto o un dato si definisce aperto
se chiunque è in grado di utilizzarlo,
ri-utilizzarlo e ridistribuirlo, soggetto, al
massimo, alla richiesta di attribuzione e
condivisione allo stesso modo»
Open Street Map
●
XML o PBF OdBL Open Street Map
●
Diversi modi per ottenere i dati
●
–
Scaricare “Planet” o “Italy”
–
Usare Overpass (linguaggio specifico), JOSM (GUI)
–
Più informazioni nel wiki di OSM: Downloading_data
Diversi programmi per leggere i dati:
–
Osmosis (Java), Osmium (solo un header C++)
–
Ricercare direttamente il testo nel file XML
–
Più informazioni nel wiki di OSM: Category:OSM_processing
count | key ­­­­­­­­+­­­­­­­­­­­­­­­­­­
826029 | name
7161 | name:it
5406 | name:de
326 | name:sl
251 | name:fur
131 | name:left
116 | name:right
46 | name:en
42 | name:sc
40 | name:old
33 | name:fr
30 | name:ru
27 | name:scn
18 | name:he
14 | name:sv
11 | name:
8 | name:pl
6 | name:la
5 | name2
5 | name:botanical
5 | name:explanation
5 | name:rm
3 | name:eml
3 | name:es
2 | name:als
2 | name:be
2 | name:da
2 | name:It
2 | name:lij
2 | name:loc
2 | name:sk
2 | name:vi
1 | name 1 | name_alt
1 | name:bridge
1 | name:Ghedi
1 | name_it
1 | name:Montirone
1 | name:nl
1 | name:pt
1 | name:short
1 | name:simple
1 | name:source
1 | name:u
1 | name:uk
1 | name:zh
(46 righe)
Esempio Osmosis+PostgreSQL
osmosis ­­read­pbf file=italy.pbf ­­tag­filter accept­ways highway=*
­­tag­filter accept­ways name=*
­­tag­filter reject­nodes
­­tag­filter reject­relations
­­write­pgsql­dump
●
SELECT tags­>'name'
FROM ways
WHERE tags­>'highway'
IN ('primary', 'secondary');
Query per postgresql con il “simple schema” che usa HSTORE per i tag.
●
Quale tag usare?
name name:* alt_name loc_name old_name
●
Oltre 826'000 highway + name (erano oltre 600'000 un anno fa)
●
name:botanical="via Marconi" ?!?
{24824182,33099697,118595556,161826802,188313884}
Catasto – Senza licenza – CSV
●
●
●
L'Agenzia delle Entrate rende disponibili alcuni dati senza una
licenza esplicita, sono open per default (Legge 17 dicembre
2012 n. 221)?
Non c'è l'indicazione della licenza né nel sito web, né nei
singoli archivi ZIP, né nel sito FTP (ho guardato in tutte le
cartelle superiori il 27/08/2013).
Ci sono 101 archivi provinciali per il Catasto: compresa AO,
escluse BZ e TN.
Archive: ark/ark_ag.zip
I nomi delle strade sono nei file
*-topo-th.dat contenuti in ogni
archivio
Length Date Time Name
­­­­­­­­­ ­­­­­­­­­­ ­­­­­ ­­­­
32 1998­06­11 09:36 ag/NCLAGV8A.DAT
65274 2006­06­07 17:41 ag/AG­TAR.DAT
3082236 2010­04­15 13:11 ag/AG­topo­th.dat
23028 1998­06­15 13:46 ag/AG­ZON.DAT
860 1998­06­11 09:36 ag/NCLAGV1.DAT
3432 2002­03­29 17:05 ag/NCLAGV2.DAT
2870 2002­03­29 17:06 ag/NCLAGV3.DAT
1344 2002­04­09 18:39 ag/NCLAGV4.DAT
4420 2002­04­09 18:39 ag/NCLAGV5.DAT
1720 1998­06­11 09:36 ag/NCLAGV7.DAT
1564 1998­06­11 09:36 ag/NCLAGV8.DAT
­­­­­­­­­ ­­­­­­­
3186780 11 files
Oltre OSM: alcune fonti “locali”
●
XLS CC0
Comune di Bari
●
CSV CC0
Comune di Cesena
●
SHP CC-BY Comune di Firenze
●
CSV ???
●
DBF CC-BY Comune di Pavia
●
SHP CC0
●
SHP IODL-2.0Comune di Venezia
●
CSV IODL-2.0Comune di Vicenza
Comune di Genova
Comune di Trento
1 XLS 3 CSV 3+1 SHP
Bari – CC0 – XLS
●
http://opendata.comune.bari.it/
●
Campi:
Circ.
DENOMINAZIONE
CARATTERISTICA BIOGRAFICA
LOCALITA'
PRECEDENTE INDIVIDUAZIONE
UBICAZIONE
NUMERAZIONE CIVICA
CAP
●
Sostituzioni (Python):
name .replace("Gen.","Generale") .replace("Mons.","Monsignor") .replace("Parall.","Parallela").replace("Prov.le","
Provinciale") .replace("Trav.","Traversa")
parentesi tonde e quadre e altri caratteri non alfabetici e qualche
lettera accentata (“Libertà”, “Strada dé”)
Bari – CC0 – XLS
•
2336 nomi (cognome nome DUG in un campo solo):
DENOMINAZIONE
ABBA’ GARIMA’ (Largo)
ABBAZIA SANTA SCOLASTICA (Largo)
ABBRESCIA F.SCO SAVERIO (Via)
ABRUZZI (Via)
ACACIA (Viale dell’)
ACCETTURA VITO (Via)
ACCOLTI-GIL BIAGIO (Viale) –
ACCOLTI-GIL SALVATI CAROLINA (Via)
ACQUAVIVA ANDREA MATTEO (Via)
Bari – CC0 – XLS
•
Prima converto da formato XLS a CSV con xls2csv
•
Poi leggo il csv con Python:
def __iter__(self):
with open(self.filename, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='"')
reader.next()
pred_name = None
for row in reader:
if row == ['\x0c']: continue
id, name = None, row[1].strip()
if pred_name != name:
yield id, name
pred_name = name
Cesena – CC0 – CSV
●
https://servizi.comune.cesena.fc.it/opendata/
●
Codifica ISO-8859
●
Campi:
Codice via
Tipo
Denominazione
Località
Quartieri
Estremi
●
Sostituzioni: "CIO": "CERCHIO", "COM": "COMUNALE", "CSO":
"CORSO", ecc. e ' SANT''', ' SAN ', ' SANTA ', ' SAN '
Cesena – CC0 – CSV
●
1852 nomi (DUG, cognome nome):
Tipo
Denominazione
VIA
ADUA
PZA
AGUSELLI
VIA
ALBERTINI ANNIBALE
PZA
ALBIZZI
VIA
ALBIZZI
VIA
ALDINI
GAL
ALMERICI
PZA
ALMERICI
PZA
AMENDOLA GIOVANNI
Cesena – CC0 – CSV
●
https://servizi.comune.cesena.fc.it/opendata/
●
Codifica ISO-8859
●
Campi:
Codice via
Tipo
Denominazione
Località
Quartieri
Estremi
●
Sostituzioni: "CIO": "CERCHIO", "COM": "COMUNALE", "CSO":
"CORSO", ecc. e ' SANT''', ' SAN ', ' SANTA ', ' SAN '
Firenze – CC-BY – SHP
●
●
●
http://opendata.comune.fi.it/
Maiuscole/minuscole “quasi come in OSM” (iniziali delle
preposizioni in minuscolo, dei mesi in maiuscolo)
Con ogr2ogr si può trasformare in molti formati, es. CSV
ogr2ogr ­f csv destdir ­select TOPONIMO trattistradaliLine.dbf
●
Oppure con shp2pgsql si può importare in PostgreSQL
shp2pgsql ­W latin1 ­D ­d ­s 3003 trattistradaliLine mio_stradario_firenze
| psql ­d osm
●
Posso fare lo zoom su un bounding box
Firenze – CC-BY – SHP
●
2340 nomi distinti (un campo solo):
TOPONIMO
Via Odoardo Spadaro
Via Ruggero Bonghi
Via Matteo Marangoni
Via Matteo Marangoni
Via Matteo Marangoni
Via Domenico Comparetti
Viale del Trotto
Viale del Trotto
Viale F�dor Mihajlovi� Dostoevskij
●
●
Ops, nomi duplicati, ops, codifica sbagliata :-)
Soluzioni: sort ­u | iconv ­f ISO­8859­1
Genova – Senza licenza – CSV
●
http://servizionline.comune.genova.it/opendata.asp
●
Campi:
"CODICE_VIA";"NOME_VIA";"NUMERO";"LETTERA";
"COLORE";"INTERNO";"LETTERA_INTERNO";"SCALA";
"ABITATIVO";"SEZIONE_CENSIMENTO_2011"
●
Abbreviazioni e spazi mancanti, grazie a sabas88 abbiamo
una tabella di corrispondenza (oltre ad alt_name):
OSM
Comune
Calata Giovanni Falcone e Paolo Borsellino
CALATA FALC BORS ECOMP SACRF
Campopisano
******** CAMPOPISANO
Giardini Carlo Alberto Dalla Chiesa
GIARDINI C.A.DALLACHIESA
Piazza dei partigiani caduti per la libertà
PIAZZA PART CADUTI LIBERTA
Piazza delle Vittime della Stazione di Bologna
PIAZZA VITTIME DI BOLOGNA
Salita nuova di Nostra Signora del Monte
SALITA NUOVA NS DEL MONTE
Genova – Senza licenza – CSV
●
3412 nomi distinti, 423765 righe, una riga per ogni numero
civico (DUG nome cognome in un campo solo):
name
VIA GIUSEPPE CESARE ABBA
VIA DELLE ACACIE
VICO ANTICA ACCADEMIA
VIA DELL ACCIAIO
SALITA ACCINELLI
VIA ACCINELLI
VIA GIOVANNI ACERBI
VICO ACQUACALDA
SALITA SUPER. ACQUAMARSA
Pavia – CC-BY – DBF
●
●
●
I nomi sono in un DBF separato dallo SHP, ma si può
usare ugualmente ogr2ogr
Questo file non era presente sul sito del Comune ma
grazie a SC tramite talk-it è stato aggiunto
ogr2ogr ­f csv ­sql "SELECT tp_str_cod, tp_str_nom FROM \"12822T030101\" WHERE tp_str_cod NOT IN ('30003', '30004', '30006')" stradario 12822T030101.dbf
Pavia – CC-BY – DBF
●
768 nomi (DUG cognome nome in un campo solo):
name
VIA AALTO ALVAR
VIA ABBIATEGRASSO
VIA ABRUZZO
VIA ACERBI EZECHIELE
STRADA ACQUANEGRA
VIA ACQUI
VIA ADDA
PIAZZA ADDOBBATI PIETRO
VIA ADIGE
Trento – CC0 – SHP
●
http://dati.trentino.it
●
Importo con shp2pgsql:
shp2pgsql ­D ­d ­W latin1 grafo_web.shp mio_stradario_trento | psql ­q ­d osm
●
Posso fare lo zoom su un bounding box
●
Per certe applicazioni è utile estrarre le parole:
SELECT DISTINCT regexp_split_to_table(desvia, ' ') AS word FROM stradario_trento;
●
Alcuni nomi di persona sono abbreviati, ma non tutti (non sembra
un problema di spazio, es. “VIA E. DE AMICIS” e “VIA EDMUND
MACH”, “VIA F. PETRARCA” e “VIA FRANCESCO FERRUCCIO”)
Trento – CC0 – SHP
●
1113 nomi 4972 righe
desvia
VIA DELLA CERVARA
VIA MISSIONI AFRICANE
VIA SANT'ANNA
STRADA DI VIGOLO BASELGA
VIA DEL PRAOL
PIAZZA NATALE TOMMASI
VIA MARGONE
VIA DEI POMARI
Venezia – IODL2.0 – SHP
●
http://dati.venezia.it/
●
Importo con:
shp2pgsql ­D ­d ­W latin1 ­s 3004 tp_str.shp mio_stradario_venezia | psql ­q ­d osm
●
NON posso fare facilmente lo zoom su un bounding box perché
le strade sono mappate come aree, sono interrotte agli incroci
con strade più importanti e gli stessi nomi sono usati in zone
diverse delle città
Venezia – IODL2.0 – SHP
●
6234 righe alcuni nomi esistono in diverse parti di Venezia
(DUG separato, nome e cognome)
ts_specie
ts_denom
VIA
ARCHIMEDE
VIA
LUCA SIGNORELLI
VIA
SANDRO BOTTICELLI
VIA
PITAGORA
VIA
PORFIRIO
VIA
ERACLITO
VIA
PLOTINO
VIA
ANTONIO VASSILACHI
VIA
JACOPO DA PONTE
Vicenza – IODL-2.0 – CSV
●
●
●
●
http://www.comune.vicenza.it/servizi/opendata/opendata.p
hp
CSV contemporaneamente delimitato e a larghezza fissa!
Campi:
CODVIA;TIPO;
DESCRIZIONE_BREVE;
DESCRIZIONE_ESTESA;
DEDICA;
ATTO_INTITOLAZIONE
Ricodifica (Python):
desc = row[3].strip()
.decode('ISO­8859­1').encode('utf­8')
Vicenza – IODL-2.0 – CSV
●
1126 nomi (DUG separato e a scelta cognome nome
abbreviato, oppure non abbreviato, confrontando le due
versioni riesco a girare nome e cognome, eccetto per
qualche errore nell'originale, quindi "DALLA CHIESA GEN.
C. A." diventa "GEN. CARLO ALBERTO DALLA CHIESA")
name
AUTOSTRADA MILANO-VENEZIA
VIA ABETONE
VIA Paolo ABRIANI
via pp
STRADA DELL'ACQUEDOTTO ROMANO
VIA ADDA
VIA Konrad ADENAUER
VIA ADIGE
VIA Eugenio ALBERI
Catasto – Senza licenza – CSV
●
●
●
L'Agenzia delle Entrate rende disponibili alcuni dati senza una
licenza esplicita, sono open per default (Legge 17 dicembre
2012 n. 221)?
Non c'è l'indicazione della licenza né nel sito web, né nei
singoli archivi ZIP, né nel sito FTP (ho guardato in tutte le
cartelle superiori il 27/08/2013).
Ci sono 101 archivi provinciali per il Catasto: compresa AO,
escluse BZ e TN.
Archive: ark/ark_ag.zip
I nomi delle strade sono nei file
*-topo-th.dat contenuti in ogni
archivio
Length Date Time Name
­­­­­­­­­ ­­­­­­­­­­ ­­­­­ ­­­­
32 1998­06­11 09:36 ag/NCLAGV8A.DAT
65274 2006­06­07 17:41 ag/AG­TAR.DAT
3082236 2010­04­15 13:11 ag/AG­topo­th.dat
23028 1998­06­15 13:46 ag/AG­ZON.DAT
860 1998­06­11 09:36 ag/NCLAGV1.DAT
3432 2002­03­29 17:05 ag/NCLAGV2.DAT
2870 2002­03­29 17:06 ag/NCLAGV3.DAT
1344 2002­04­09 18:39 ag/NCLAGV4.DAT
4420 2002­04­09 18:39 ag/NCLAGV5.DAT
1720 1998­06­11 09:36 ag/NCLAGV7.DAT
1564 1998­06­11 09:36 ag/NCLAGV8.DAT
­­­­­­­­­ ­­­­­­­
3186780 11 files
Catasto – Senza licenza – CSV
●
●
●
ftp://ftp.finanze.it/pub/docfa4/
Secondo me è utilizzabile perché non c'è una licenza
esplicita che lo vieta (né nel file, né nella pagina, né nel
sito) quindi ricade nel "open per default" (Legge 17
dicembre 2012 n. 221) vedi wikipedia
Nomi referenziati tramite Codice Belfiore (ark_comurb.zip
nell'FTP, formato proprietario? record dimensione fissa)
00000000 30 7e 00 00 00 00 00 00 30 30 31 31 31 37 30 38 |0~......00111708|
00000010 32 32 34 38 39 32 30 30 31 31 31 37 30 38 32 32 |2248920011170822|
00000020 34 38 39 32 00 3e 00 02 00 00 00 00 00 00 00 00 |4892.>..........|
00000030 01 00 00 00 00 00 00 00 00 46 00 00 00 46 00 00 |.........F...F..|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 02 00 01 00 |................|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 58 00 32 dc |............X.2.|
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000080 40 46 41 31 41 41 20 54 4f 52 49 4e 4f 20 20 20 |@FA1AA TORINO |
00000090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
*
000000b0 20 20 20 20 20 20 20 20 20 4c 32 31 39 54 4f 31 | L219TO1|
000000c0 20 20 20 20 20 20 20 20 40 46 41 31 41 43 20 41 | @FA1AC A|
Catasto – Senza licenza – CSV
●
1'233'526 nomi (nome cognome virgola DUG in un campo
solo)
ABETE, VIA DELL`
ABRUZZI, VIA
ACACIE, VIA DELLE
ACCIAIO, PIAZZALE DELL`
ACQUAPALOMBO, VOCABOLO
ACQUASPARSA, STRADA
ACQUAVIVA, VOCABOLO (COLLESCIPOLI)
ADDA, VIA
ADIGE, VIA
ADRIATICO, PIAZZA
Problemi generali
●
Trovare i link, scaricare i file singolarmente, convertirli da
formati eterogenei
●
Mancano le lettere accentate (ASCII 7 bit)
●
Errori di battitura “0VIDIO”
●
Apostrofi e virgolette singole mischiate
●
Ordine mischiato DUG/nome nello stesso dataset
●
Qualcuno, diverso da chi li ha creati, li controlla prima di
pubblicarli?
Risultati – Nomi dei Comuni
●
●
Confronto stradari comunali
http://www.forsi.it/osm/spellcheck/highway/stradario/
Esempio: Trento 721 entrambi, 138 OSM, 398 Comune
Risultati – Nomi del catasto
●
●
Ortografia strade
http://www.forsi.it/osm/spellcheck/highway/boundary/
Esempio: Rovereto 46 nomi da controllare su 292
Risultati – Nomi
del catasto
capoluogo
prima
Ancona
Dizionario per aspell con
169037
parole
diverse
(sono 22410 parole in
quello fornito con Linux),
1795 parole scartate (quelle
che contengono numeri
arabi e quelle con la E
accentata!)
dopo
%
8
6
-25%
93
68
-27%
Bari
183
56
-69%
Bologna
255
23
-91%
Cagliari
163
41
-75%
1
1
0%
50
18
-64%
Firenze
441
175
-60%
Genova
351
47
-87%
L'Aquila
47
12
-74%
Milano
178
30
-83%
Napoli
315
114
-64%
Palermo
400
97
-76%
Perugia
220
63
-71%
Potenza
17
9
-47%
Roma
2776
107
-96%
Torino
132
17
-87%
Trento
238
190
-20%
Trieste
328
55
-83%
Venezia
1059
476
-55%
Aosta
●
21/08/13
Campobasso
Catanzaro
Grazie. Domande?
Daniele Forsi
http://www.forsi.it/osm
[email protected]
Openstreetmap: dforsi
Credits
●
User:Aury88 immagine 256px-OSMItaly.svg.png (CC-BY-SA 3.0)
●
Open_Data_stickers.jpg (CC0)
●
http://opendata.comune.bari.it/ CC0 Comune di Bari
●
https://servizi.comune.cesena.fc.it/opendata/ CC0 Comune di Cesena
●
http://opendata.comune.fi.it/ CC-BY Comune di Firenze
●
http://servizionline.comune.genova.it/opendata.asp Comune di Genova (senza licenza
esplicita)
●
http://opendata.comune.pavia.it/ CC-BY Comune di Pavia
●
http://dati.trentino.it CC0 Comune di Trento
●
http://dati.venezia.it/ IODL-2.0 portale.comune.venezia.it
●
http://www.comune.vicenza.it/servizi/opendata/opendata.php IODBL-2.0 Comune di Vicenza
●
ftp://ftp.finanze.it/pub/docfa4/ dati del Catasto
Scarica

Rassegna di toponomastica OpenData (oltre a OSM) Daniele Forsi