[Talk-it] Nuova procedura per importare i file shp: ogr2osm

Leonardo kinetocore86 a gmail.com
Dom 14 Set 2014 20:53:13 UTC


Ciao a tutti,

l'importazione dei file shp ha richiesto fino ad ora un passaggio 
d'intermezzo di conversione tramite un'applicazione che interpretava i 
dati shp e li trasformava in osm, utilizzando un file "guida" per 
taggare i nodi/poligoni in maniera appropriata. Fino ad ora si è 
utilizzato il programma shp2osm, programma scritto in java che è stato 
utilizzato in questi import conclusi o ancora in corso:

-Edifici e utilizzi del suolo del Veneto
-Edifici della Sardegna / possibile import degli utilizzi del suolo 
della Sardegna
-Utilizzi del suolo dell'Emilia Romagna

Purtroppo questo strumento comincia a dimostrare i suoi grossi limiti, 
dati dal fatto che non è più attivamente sviluppato da Novembre 2012, 
che presenta alcuni bug che costringono a utilizzare una vecchia 
versione e che spesso è necessario effettuare "accrocchi" tramite QGIS 
per far accettare il file shp al programma. Inoltre il file delle regole 
è abbastanza limitato per quanto riguarda la possibilità di confrontare 
due o più campi di uno shp per determinare un tag. Infine da qualche 
versione di JOSM i file .osm prodotti non sono più accettati dal 
programma, il quale avvisa che l'API 0.5 utilizzata è ormai deprecata 
(JOSM accetta solo la 0.6 in su).

Mi sono documentato un pò per trovare una soluzione al problema e credo 
che tutti i futuri import debbano basarsi su ogr2osm 
(https://github.com/pnorman/ogr2osm). Ogr2osm è un script python che 
funziona esattamente come shp2osm, ovvero traduce gli shp in osm usando 
un file guida ma è molto più flessibile e potente. I vantaggi sono i 
seguenti:

-Rimane la cross-compatibilità Win,Linux,Mac, dato che si appoggia alla 
OSGeo4W Shell, installata assieme a QGIS.

-Accetta file molto grossi in input (testato con un file SHP di 400Mb), 
l'unico limite è la RAM a disposizione della macchina.

-Il file delle regole è un file scritto in python molto semplice, in cui 
è possibile indicare diversi campi di controllo per assegnare un tag 
(es. se Campo1=X AND Campo2=Y allora tagga in un modo altrimenti ecc...) 
e possono essere creati dei sottogruppi di controllo nella stessa 
funzione. Inoltre i commenti al codice sono molto più leggibili e 
utilizzando un editor di testo come Notepad++, risulta più facile 
identificare la linea interessata. Un esempio lo potete trovare qui: 
http://wiki.openstreetmap.org/wiki/Veneto/Uso_del_suolo#File_delle_regole_in_formato_python 
, è il file delle regole della vegetazione del Veneto che da poco ho 
riscritto per ogr2osm.

-Il file delle regole permette anche di effettuare operazioni più 
complesse quali la creazione di valori a partire da diversi campi (es. 
name = Campo1+Campo2+Campo3, nel caso di nomi di vie divisi nello SHP 
originale), le modifiche direttamente sui valori (es. se è tutto 
maiuscolo è possibile trasformarlo con la prima lettera in maiuscolo e 
il resto in minuscolo o cambiare certi caratteri con altri). Chiunque 
qui abbia un pò di dimestichezza con Python si potrà sbizzarrire!

-Non ha problemi con i multipoligoni e effettua automaticamente la 
relazione necessaria come shp2osm.

-Non spezzetta il file shp se supera i 5000 nodi, creando un unico file 
.osm alla fine del processo. Questo risulta estremamente comodo quando 
si tratta di shp molto densi di nodi, che nel metodo vecchio 
porterebbero alla creazione anche di 50+ file osm che dovevano essere 
rifusi assieme uno alla volta!

-Effettua automaticamente l'unione dei nodi duplicati.

-È possibile riproiettare direttamente dalla linea di comando, 
specificando il codice EPSG desiderato.

Ho voluto subito metterlo alla prova con uno dei file più grossi e 
complessi che avevo a disposizione, ovvero la vegetazione della 
provincia di Belluno e i risultati sono stati più che soddisfacenti, 
generando un file che è stato aperto da JOSM senza alcun problema, 
pronto ad essere ulteriormente controllato prima del possibile import.

Ho abbozzato anche la nuova procedura di conversione di un file SHP, la 
potete trovare a questo indirizzo:

http://wiki.openstreetmap.org/wiki/Veneto/Uso_del_suolo#Istruzioni_per_la_conversione_.28org2osm.29

Ora mi dedicherò alla trasformazione dei vecchi file delle regole per 
shp2osm al nuovo metodo (edifici del Veneto e Ville Venete).

Chiunque sia interessato o ha qualche commento/suggerimento/critica, 
faccia sentire la sua voce! :D

Ciao!

Leonardo



Maggiori informazioni sulla lista Talk-it