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

_______________________________________________
Talk-it mailing list
Talk-it@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-it

Rispondere a