Dal 14 al 19 settembre si terra’ a Vicenza (Parco Citta’) la “settimana del software libero” organizzata dal LUG Vicenza (un grazie particolare a Luca!). Grazie alla disponibilita’ dei proprietari di “Parco Citta’”, che hanno messo a disposizone degli spazi, sara’ possibile toccare piu’ da vicino il pinguino.
Gli appuntamenti sono densi e ricchi. A questa pagina si trovano i dettagli di tutti gli eventi.
Mi permetto di segnalare gli incontri previsti per mercoledi’ 16 settembre. Si parlera’ di OSM. OpenStreetMap e’ un progetto mondiale che mira a creare una mappa (si, la mappa geografica e stradale) libera di tutto il mondo. Contribuire e’ semplice e non servono particolari skill o professionalita’……..Per chi e’ curioso di saperne di piu’, appuntamento a Parco Citta’. ![]()
Settimana del software libero a Vicenza
7 Settembre 2009OSM | data import
9 Giugno 2009Il “fenomeno” OpenStreetMap (la mappa del mondo libera creata da migliaia di utenti in tutto il mondo) si sta diffondendo in maniera vertiginosa.
Al contributo degli utenti (i cosiddetti “mappers”) si aggiunge la sensibilita’ di alcune amministrazioni (detentrici di dati cartografici) che hanno “liberato” i dati cartografici. Per citare alcuni esempi in Veneto in ordine di “liberazione”: comune di Schio, comune di Montecchio Maggiore, comune di Vicenza.
Le delibere con le quali questi dati sono stati liberati parlano di utilizzo per qualsiasi scopo: in particolare possono essere utilizzati e caricati all’interno del Db del progetto OSM. Ma come si caricano questi dati?
Parlando di dati territoriali (in genere gestiti mediante sofware G.I.S. – Geographic Informazion System) vengono forniti in un formato standard in ambito GIS: il formato Esri Shape (brevemente SHP). Questo formato contiene informazioni relative alla geometria degli oggetti che rappresenta (coordinate dei vertici) e informazioni alfanumeriche (tabelle degli attributi) associate agli oggetti. In ambito OSM questo e’ importante in quanto consente di mantenere attributi quali il nome della strada, il tipo di strada, ecc.
Tecnicamente bisogna anche affrontare un problema relativo al sistema di proiezione usato per rappresentare questi dati. I dati di OSM sono in coordinate lat-long (latitudine-longitudine) che in termini di EPSG code (codice mondiale per l’identificazione di un sistema di coordinate) corrisponde a 4326.
Mentre i dati forniti dalla amminstrazioni (Veneto in particolare) sono in Gauss-Boaga (fuso Ovest nella nostra zona, Vicenza).
Si tratta quindi di convertire i dati dal sistema Gauss-Boaga (codice EPSG 3003) al WGS84 (codice EPSg 4326).
Per fare questo ci sono piu’ metodi e/o software (nel campo del software libero in particolare). In genere io agisco in questo modo (ma non e’ il modo migliore, solo quello che mi pare piu’ comodo e che mi permette di fare controlli nei passaggi di conversione).
- Importazione deggli SHP in GRASS mediante il modulo v.in.ogr;
- riproiezione dei vettoriale così ottenuti dal sistema 3003 al 4326 mediante il modulo v.proj;
- esportazione dei vettori riproiettati in SHP (nuovamente);
- Eventuale modifica/correzione/aggiunta di attributi delle tabelle alfanumeriche collegate. Cito per es. il caso dei dati del Comune di Vicenza. Gli SHP fornitici (molto ben fatti, tra l’altro) conservavano solo il nome della strada (ma e’ gia’ molto importante questo). Mediante Qgis ho modificato la tabella degli attributi aggiungendo un campo “highway” popolato per tutti con “unclassified” ed un campo “source” popolato per tutti con “Comune di Vicenza”.
- Conversione degli SHP in OSM mediante lo script shp2osm reperito da qui. Si tratta di uno script in perl (e’ necessario avere installato Perl). Il comando per lanciarlo e’:
$ perl shp2osm nome_file.shp > nome_file.osm
In questo modo viene salvato l’output di elaborazione del processo nel file nome_file.osm;
- JOSM: apertura del nuovo nome_file.osm creato e download della zona di interesse dal server OSM.
A questo punto abbiamo due layers: nome_file.osm e data.osm.
- Adesso il lavoro diventa delicato: si tratta di vedere quali sono le strade non ancora presenti nel DB osm. Attivando alternativamente i 2 layers si vedono le differenze.
Caso 1: strada non presente nel db OSM: e’ il caso piu’ semplice (relativamente
). Selezionare la strada (o le strade tenendo premuto il tasto “Shift” da tastiera), selezionare la voce “Copy” dal menù “Edit”. Rendere attivo il layer di OSM e dal menù “Edit” selezionare “Paste”. In questo modo abbiamo copiato gli oggetti selezionati nel nuovo layer. Controllare i nodi di intersezione con le altre strade per verificarne il merge. Se la parte terminale di una strada si avvicina ad un vertice di una strada esistente selezionare i due nodi e schiacciare il tasto “M” (merge). Se la parte terminale si avvicina ad un arco (privo di nodi in prossimità) selezionare il nodo finale della nuova strada importata e schiacciare “J” (Join) per unire le due strade nella prossimità di quel punto. (Attenzione: a volte schiacciando il tasto “J” non succede niente. Questo e’ dovuto ad una distanza troppo grande tra vertice e arco. La tolleranza non rileva la presenza del nodo. Per ovviare a questo “avvicinare” il vertice all’arco e riprovare con “J”). Controllare poi i dati legati agli oggetti. Se tutto è in ordine la strada può considerarsi a posto.
Caso 2: strada gia’ presente nel db (layer) OSM: e’ il caso più delicato. In questo caso si verifica la “vicinanza” delle due tracce. Spesso lascio le tracce presenti limitandomi a verificare il merge dei nodi e la coerenza deggli attributi. Scostamenti notevoli si hanno soprattutto nelle zone del centro storico o nelle strade in cui si presenta “l’effetto canyon” (il segnale del GPS viene disturbato dalla presenza di edifici alti su entrambi i lati della strada). In questo caso rettifico la traccia pesente adattandola a quella importata. E controllo merge dei nodi e “allineamento” degli attributi.
Alla fine si può procedere all’upload dei dati sul server.
OSMit2009
8 Giugno 2009Venerdi’ 5 giugno e sabato 6 giugno a Trento si e’ tenuta la prima conferenza italiana OpenStreetMap!
Osptite d’onore con sorpresa di tutti: Steve Coast!!!
Interventi interessantissimi. Tania Fabrello di Piazza Telematica mi ha chiesto di affiancarla in un intervento che illustrava la positiva esperienza di Piazza Tech di Schio. Si sono tenute anche un paio di tavole rotonde. Una improntata sulla nuova licenza ODBL (OpenData BaseLicense) che sta avanzando: in compagnia di Steve e con l’aiuto di Simone Aliprandi e Andrea Rossato, giuristi “afferrati” in tema di licenze e copyleft, si e’ cercato di capire la “bonta’” della bozza attualmente proposta. Sembra che questa nuova licenza sia “buona”…..
Si e’ poi parlato di integrita’ del dato.
Mi piace sottolineare la risposta di Steve ad una domanda di Simone Cortesi:
Q: “Quando OSM sarà completo?”
A: “In the future!”
maemo mapper | again!
1 Giugno 2009Sto testando alla grande maemo -mapper (applicativo per navigazione che gira su nokia internet tablet).
La navigazione avviene tramite pre-caricamento di un file GPX dal menu “Rotte”.
Il file GPX puo’ essere generato mediante alcuni servizi disponibili on-line. Ho testato openrouteservice.org che permette di generare un percorso definendo indirizzo di partenza e di arrivo. Si basa su dati openstreetmap e fornisce in output un file in formato GPX o XML. Il file GPX puo’ essere caricato in Maemo-mapper ma non contiene la descrizione del percorso tale da poter essere interpretato dal sintetizzatore vocale (disponibile solo previa installazione del pacchetto “flite”). Il file XMl invece contiene la descrizione del percorso ma non e’ caricabile in maemo-mapper:
.
In alternativa si possono usare i servizi forniti da http://gnuite.com/cgi-bin/gpx.cgi; si tratta di un servizio che sfrutta la “rete” di googlemaps
. In questo modo si ottiene un GPX interpretabile dal sintetizzatore vocale.
Sono alla ricerca di un modo per convertire il file XML fornito da www.openrouteservice.org in GPX “valido” per il navigatore di maemo-mapper. Tuttavia ho anche scoperto che esiste un progettino (mi pare mantenuto dal creatore di maemo-mapper, John Costigan) che ha il lodevole scopo di creare un sistema di definzione dei percorsi interno a maemo-mapper. Una descrizione si trova qui.
maemo mapper | navigazione
29 Maggio 2009Maemo mapper funziona come navigatore, registratore di tracce, wpt,…
Per la navigazione e’ necessario avere pianificato in precedenza il percorso (non presenta un sistema di ricerca di indirizzi).
La navigazione avviene caricando una “rotta” da file GPX. Per un primo test mi sono appoggiato all’ottimo servizio di routing OpenRouteService.org.
Basta indicare l’indirizzo di partenza e si ottiene una descrizione del percorso (in aggiunta alla visualizzazione sulla mappa). Questo si puo’ scaricare in fromato GPX.
Fatto questo lanciare MP. Dal menu’ scegliere “Rotte” -> “Apri” e selezionar eil GPX appena scaricato.
In questo modo viene visualizzato il tracciato in verde che verra’ seguito durante il routing.
maemo-mapper | nokia N810
27 Maggio 2009Mi e’ arrivato il Nokia N810. Diversamente da quello che si può pensare parlando di Nokia, l’N810 e’ tutto tranne un telefono
.
E’ basato su SO Maemo (Debian based).
Ho “tribolato” un pochettino prima di riuscire ad installare maemo-mapper. Ma alla fine ci sono riuscito.
Inizialmente il problema era dovuto al fatto che non tutti gli ISP (Internet Service Provider) possono accedere ai repository di maemo: dalla rete aziendale infatti venivano bloccati gli accessi. Trovata la rete giusta sono riuscito a recuperare la lista dei pacchetti da una serie di report recuperati da qui.
Cercando di installare l’applicazione dal gestore delle applicazioni mi risultavano errori di dipendenze non risolte con alcune librerie: libgdbm3, libglib2.0-0,libhildonfn2, libhildonhelp0, libosso1. Ho “smazzato” la rete per un po’ fino a quando ho trovato un post illuminante per installare un piccolo pacchetto che consentisse di autenticarsi come root (per la console) e agire via apt-get. Il pacchetto installato si chiama “easyroot”. Una volta installato lanciare la console e digitare
$ sudo gainroot
A questo punto il prompt cambia presentando il “famoso” cancelletto (#) di root.
Da li ho lanciato un
# apt-get update
# apt-get dist-upgrade
# apt-get install maemo-mapper
Durante questa fase viene chisto se installare o meno software non autenticato con alternative di risposta [y,N].
Bisogna rispondere con una “s” se si intende installare (usa la lingua di default del sistema; nel mio caso l’italiano). Schiacciando “y” come proposto si presenta un “aborted”. Superato questo scoglio l’installazione e’ andata liscia. Al primo lancio lo stupore: gran software!!! Usa OSM come cartografia di base…ma questo e’ solo l’inizio.
Un’ottima guida per iniziare con maemo-mapper si trova qui
Il Nokia N810 e’ dotato di ricevitore GPS integrato. Ma non si “viaggia” bene con questo dispositivo. L’aggancio dei satelliti richide tempi lugnhi (>5 minuti quando va bene). Ho provato (come indicato in varie guide reperite dalla rete) a collegalo via BT all’iblue 747. Durante la connessione viene richiesto di inserire il codice di accesso. Ho perso un tot di tempo per capire che bastava inserire “0000″ (quattro zeri). Dopo di chè l’aggancio e’ stato quasi immediato!
Render di dati OSM con Mapnik: uno stile slippy map like
27 Aprile 2009Da un po’ di tempo sto cercando di approfondire Openlayers. Tra le tante cose sto cercando di creare delle tiles “in casa” attraverso Mapnik e di “vestirle” con uno stile per quanto possibile simile alla slippy map do OSM.
Per il render con Mapnik è necessario disporre di un file (notoriamente ma non ncecessariamente chiamato osm.xml) per l’impostazione degli stili di render delle way, dei simboli, ecc… alle varie scale. Attualmente non è disponibile un osm.xml che crei in maniera fedele lo stile della slippy map. Per questo motivo ho cercato di crearne uno a partire dal file reperibile da qui.
Le modifiche fatte sono, per ora, molto ridotte ma consentono di ottenere delle tiles un po’simili a quelle di OSM. Il file per gli stile è scaricabile da qui. Il formato è l’odt (wordpress non consente di caricare file XML). L’intenzione è di rendere disponibili i futuri aggiornamenti. Stay tuned sul link riportato.
Mapnik | un tiles cacher di dati OSM
15 Aprile 2009Creare delle tiles a partire dal db OSM? Si può fare in locale. Come? Basta installare Mapnik, Postgresql con estensione spaziale postgis e scaricare un planet di OSM.
Ecco come ho fatto i miei test. Molto probabilmente non è la strada più diretta e corretta, ma a volte “smazzarsi” un po’ di codice e un po’ di errori aiuta a comprendere un po’ di più le cose. In questo/i post faccio riferimento a operazioni svolte con Debian (Lenny).
Partiamo dall’inizio:-
- installare Postgresql con estensione spaziale postgis (per questo rimando alle pagine relative);
- installare mapnik con
# apt-get install mapnik (oppure tramite “synaptic”);
- reperiamo i dati del planet che ci interessa: io ho scaricato il planet italiano da qui. Si ottine il file italy.osm.bz2.
- creare il database che riceverà i dati. Diventare utente postgres e creare il db con:
# createdb -E UTF8 -O sit osm
dove “osm” è il nome del db e “sit” è il nome dell’utente
- creare il linguaggio per il db:
# createlang plpgsql osm
- aggiungere le tabelle per fare in modo che sia un geodb:
# psql -d osm -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
- Fare in modo che le tabelle spaziali siano di proprietà dell’utente sit:
# echo “ALTER TABLE geometry_columns OWNER TO sit; ALTER TABLE spatial_ref_sys OWNER TO sit;” | psql -d osm
- popliamo il db creato tramite “osm2pgsql”
# osm2pgsql -m -d osm /home/sit/osm/data/italy.osm.bz2
- posizionarsi nella home directory e lanciare il comando:
$ svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik
In questo modo reperiamo una serie di file e directory già strutturate per effettuare le operazioni di rendering. Viene creata una directory “mapnik”.
- Posizionarsi in “mapnik”
$ cd mapnik
- scaricare gli SHP di linee di costa e boundary:
$ wget http://tile.openstreetmap.org/world_boundaries-spherical.tgz
$ tar zxvf world_boundaries-spherical.tgz
$ wget http://hypercube.telascience.org/~kleptog/processed_p.zip
$ unzip processed_p.zip
$ mv coastlines/* world_boundaries/
$ rmdir coastlines
- spostarsi nella directory world_boundaries:
$ cd world_boundaries
$ wget http://tile.openstreetmap.org/shoreline_300.tar.bz2
$ tar xvjf shoreline_300.tar.bz2
- fare una copia del file set-mapnik-env e chiamarla, per esempio, z0-set-mapnik-env.
$ cp set-mapnik-env z0-set-mapnik-env
- editare questo file indicando il nome corretto del database postgresql da usare ed il nome corretto dell’utente che ha accesso al db stesso. Nell’header del file c’è una chiara e semplice spiegazione dei settaggi.
- lanciare il comando:
$ source ./z0-set-mapnik-env
- poi:
$ ./customize-mapnik-map >$MAPNIK_MAP_FILE
- creare una copia del file generate_tiles.py (chiamarla i.e. “z0_generate_tiles.py”) e modificarla adattando la bbox alla zona di interesse. Nel mio caso, dovendo operare in un’area ristretta della Provinica di Vicenza ho editato nel modo seguente (riporto un estratto della parte finale del file, l’unica modificata). Basta commentare le parti da omettere con un “#” seguito da uno spazio ” “.
—————————————————————————————————
# Change the following for different bounding boxes and zoom levels
#
# Start with an overview
# World
# bbox = (-180.0,-90.0, 180.0,90.0)
# bbox = (11.0,45.0, 12.0,46.0)
# render_tiles(bbox, mapfile, tile_dir, 0, 0, “World”)
# minZoom = 10
# maxZoom = 16
# bbox = (-2, 50.0,1.0,52.0)
# render_tiles(bbox, mapfile, tile_dir, minZoom, maxZoom)
# Montecchio Maggiore
bbox = (11.37,45.47, 11.45,45.56)
render_tiles(bbox, mapfile, tile_dir, 1, 12 , “Montecchio”)
# Muenchen
# bbox = (11.4,48.07, 11.7,48.22)
# render_tiles(bbox, mapfile, tile_dir, 1, 12 , “Muenchen”)
—————————————————————————————
- infine lanciare il comando che genera la tiles
$ ./z0_generate_tiles.py
Nella directory “tiles” vengono generate le tiles (appunto
).
Le immagini così generate (PNG) possono essere usate in locale in caso di mancanza di connessione alla rete o solo per caricare dati locali invece di doverli scaricare dai server OSM. A titolo di esempio riportiamo il caso di un applicativo basato su Openlayers. In questo caso basta indicare un nuovo layer (nella pagina HTML che visualizzerò i dati) con la seguente sintassi:
———————————————————————————————————————————————————————
var newLayer = new OpenLayers.Layer.OSM(“Mapnik@home”, “http://localhost/openlayer/tiles/”, {numZoomLevels: 19});
map.addLayer(newLayer);
———————————————————————————————————————————————————————
dove “http://localhost/openlayer/tiles/” è il percorso locale per raggiungere le immagini PNG (questa direcotry deve essere accessibile all’utente www-data).
Sotto è riportato un esempio di render di dati OSM realizzato con mapnik; il tutto visualizzato con tramite Openlayers.
Openlayers | il webgis nel sito della nonna
9 Aprile 2009Il titolo di questo post è ovviamente scherzoso: non voglio togliere nulla alle nonne!
Ma uno strumento come openlayers merita davvero data la sua semplicità: consente di “annegare” all’interno di pagine HTML del codice javascript per visualizzare un webgis perfettamente funzionante. Se poi questo webgis consente di utilizzare i dati di Openstreetmap abbiamo fatto Bingo! Ed è proprio così.
Sullla pagina principale del progetto sono riportate le righe di codice da copiare e incollare su una propria pagina e vederne il funzionamento: provare per credere. Certo, come tutti gli strumenti offerti dal mondo open source, le cose che si possono fare sono tantissime, più o meno complesse/complicate. Sto cercando di mettere in piedi una serie di “applicativi” o meglio “soluzioni” che sfruttano openlayers per caricare dati OSM a cui sovrapporre dati “custom”. Esempio: un amministrazione comunale può essere invogliata a liberare i suoi dati cartografici (e quindi, ovviamente, concederne l’uso per OSM) e su questa base georiferire una serie di informazioni. Penso alla localizzazione di servizi, punti di interesse, cantieri in essere e/o previsti, localizzazione di qualsiasi cosa ritenuta importante ai fini della gestione della macchina comunale.
Openlayers è una raccolta di librerie in javascript che permettono di visualizzare cartografia in una qualsiasi pagina HTML senza avere bisogno di installare alcunchè sul server. Tutto funziona via javascript. Consente di caricare dati da googlemaps, yahoo!,…..e anche OSM!
Questo è il primo di una serie di post che vorrei pubblicare. Se non altro per stare in linea con lo scopo di questo blog (una sorta di quadernone degli appunti) e costruire una documentazione per quanto possibile esaustiva sull’utilizzo di questo strumento a mio avviso eccezionale.
Ad altro post un esempio di codice per la localizzazione di elementi puntuali (in formato GML) con visualizzazione a popup (cloud) degli attributi facendo click su uno di essi.
Openstreetmap | Montecchio Maggiore is “up”!
12 Marzo 2009E due!
Dopo Schio anche Montecchio Maggiore è su Openstreetmap. L’upload dei dati liberati dall’amministrazione comunale lo scorso novembre è stato ultimato.
Questa la bounding-box:
http://www.openstreetmap.org/?lat=45.5059&lon=11.4217&zoom=14&layers=B000FTF
Il prossimo passo sarà l’inserimento dei POI

Pubblicato da flaviorigolon 
Pubblicato da flaviorigolon 

Pubblicato da flaviorigolon 







