Clonare un disco Virtualbox: il problema dell’UUID

In Virtualbox ciascun disco è rappresentato da un file. Quindi, per clonare un disco è sufficiente fare una copia del file. C’è però un inghippo: ogni disco fisso virtuale è rappresentato da un UUID, un identificativo UNICO. E Virtualbox non permette di aggiungere a una macchina due dischi con lo stesso UUID. La soluzione è nascosta in una funzioncina da riga di comando, da eseguire sul file copiato e che ne modifica l’UUID:

vboxmanage internalcommands sethduuid .\MyVM.vdi

Lascio qui questa perla per chi ne dovesse avere bisogno un domani.

Steam Locomotive

Il più inutile tra i programmi inutili in circolazione per Linux. Quante volte nella vostra vita di utenti Linux (o Mac Os) usate il comando LS? E quante volte, nella fretta, vi capita di sbagliare e scrivete invece SL? Normalmente il sistema vi risponde con un tristissimo:

-bash: sl: command not found

Da adesso possiamo unire l’utile al dilettevole con un simpatico programma che, rispondendo al nome di SL “Steam Locomotive”, disegna sul terminale… indovinate cosa…

Un simpatico modo per spezzare un pò la monotonia delle lunghe ore passate a compilare roba con nomi strani.. Il programmino è scritto in C, è stato realizzato da un tal Masashi Toyoda, e potete scaricare il sorgente a questo indirizzo. Una volta scompattato l’archivio TAR (qualcosa del tipo tar -xf sl.tar) basta dare il comando make per compilare il tutto. A questo punto è sufficiente copiare il file eseguibile in “/usr/local/bin” per averlo sempre a disposizione!

Ciao a tutti!

Quick Bash Tip: come estrarre nome file ed estensione da un path

Continuano le piccole note di bash. Stavolta vediamo un paio di facili comandi per estrarre nome file ed estensione da un path. Inserisco il tutto in un piccolo script che analizza tutti i file nella directory corrente e ne stampa prima il nome e poi l’estensione.

for file in $(ls) ; do
  filename=${file##*/}
  basename=${filename%\.*}
  extension=${filename##*.}
  echo Nome: ${basename}, estensione: ${extension}
done

Ulteriori informazioni (per i non deboli di cuore) a questo indirizzo.

Quick tip: come creare un PDF da riga di comando a partire da un TXT

Piccolo suggerimento su un modo rapido per creare un pdf a partire da un file di testo con un unico comando da terminale (come sempre vale per Linux e Mac Os X). Supponiamo di voler convertire un file di nome “prova”:

cat prova | enscript -p - | ps2pdf - file.pdf

La prima parte apre il file e ne passa il contenuto alla seconda parte.

Nella seconda parte il programma “enscript” trasforma quanto ricevuto in formato PostScript e lo passa alla terza parte. Da notare che si deve usare l’opzione “-p” seguita da uno spazio e un altro trattino, per dire che il postscript deve essere inviato allo stdout (altrimenti viene inviato alla stampante di sistema).

Nella terza parte il programma “ps2pdf” trasforma quanto ricevuto nel file “file.pdf”.

Facile e indolore, ma lo scrivo perchè ci ho messo tipo mezz’ora a scoprirlo e magari in questo modo risparmio un pò di fastidio a qualcun altro.

Quick tip: come splittare un file in più parti

Piccolo suggerimento su come suddividere un file in più parti di dimensione nota: il comando SPLIT, disponibile su Linux e Mac Os X.

split -b DIM FILE PREFISSO

l’opzione -b serve a specificare la dimensione dei componenti da creare (in byte). Si possono usare anche i suffissi b (512 byte), k (1 kb) e m (1 Mb). Ad  esempio, se scrivo “-s 4k” significa che voglio frammenti di 4 kbyte l’uno.

FILE è il nome del file da scomporre

PREFISSO è il prefisso con il quale verranno chiamati i frammenti creati, che di default saranno una cosa del tipo PREFISSOaa, PREFISSO ab, PREFISSOac, PREFISSOad… ecc… volendo è possibile intervenire con le opzioni -a (imposta la lunghezza del suffisso, che di default è 2) e -d (suffissi numerici invece che letterali).

Esempio: mi serve dividere il file bob.dat in frammenti di 4Kb da dare in pasto a un altro programma per un’analisi statistica:

split -s 4k bob.dat bob

I frammenti si chiameranno bobaa, bobab, bobac, bobad, ….. e così via fino alla fine del file (o fino a bobzz, dopodichè lo split si blocca perchè ha finito lo spazio dei nomi; si può ovviare con l’opzione -a).

Per ulteriori informazioni:

split --help

Saluti!

Internet mobile con Ubuntu, LG U960 e Naviga Tre

Come forse saprete da post passati, ho di recente messo le mani su un LG U960 e grazie all’opzione Naviga Tre ho potuto apprezzare i vantaggi della mobilità (9 euro al mese per 50 megabyte al giorno, uniti a Opera Mini e al client GMail fanno spettacolo).

Stasera ho voluto fare il passo successivo: tentare di utilizzare un pò di quel traffico dati col mio Asus eee, con Ubuntu. Un pò di smandruppamenti, ma il sistema funziona: posso navigare in assoluta libertà anche col computer, almeno finchè tengo d’occhi la soglia di traffico. Che figata!

Posto qui un riassunto delle procedure. Non mi dilungherò troppo, dato che altri blogger (di cui indicherò i link) hanno fatto un ottimo lavoro al riguardo.

1) Configurare la connessione tra il computer e il cellulare (io userò il bluetooth). Suppongo che il sistema bluetooth sia già installato e funzionante sul computer. Individuare l’indirizzo fisico del proprio cellulare con un “hcitool scan“, indi individuare il canale per il dialup con un “sdptool scan XX:XX:XX:XX” (le X rappresentano ovviamente l’indirizzo bluetooth del cellulare individuato in precedenza).

2) Modificare il file /etc/bluetooth/rfcomm.conf, aggiungendo una sezione (nel mio esempio rfcomm1) seguendo la sezione d’esempio presente commentata nel file. I dati da inserire sono “yes” (specifica di mantenere attiva la connessione BT col cellulare, non ha a che fare col traffico dati, tranquilli), l’indirizzo, il canale e una breve descrizione del dispositivo. Per concludere, dopo aver salvato il file riavviare il bluetooth (sudo /etc/init.d/bluetooth restart). A questo punto il computer dovrebbe tentare automaticamente la connessione al cellulare, chiedendo il pin prima sul cellulare stesso e poi sul desktop. Come sempre, usate il pin che volete basta che sia uguale su entrambi i dispositivi. Ulteriori dettagli sulle procedure sono descritti con più amore qui.

3) Installare gnome-ppp (sudo apt-get install gnome-ppp ppp). Ah, ovviamente bisogna essere connessi a internet in qualche altro modo.

4) Avviare gnome-ppp (come root, quindi con sudo). Per la configurazione vi rimando a questo post (lo stesso di prima), faccio solo un riassunto rapido delle configurazioni:

Username: uno a caso
Password: una a caso
Memorizza password: selezionato
Numero: *99***1#
Dispositivo: rfcomm1 (quello creato in precedenza)
Tipo: modem analogico
Velocità: la più alta
Composizione: Toni
Volume: Spento
Stringhe di inizializzazione: AT+CGDCONT=1,”IP”,”naviga.tre.it”,,0,0

Tutto il resto va lasciato come di default, tranne che per le opzioni, che vanno tutte deselezionate tranne due, che invece vanno attivate: “Controlla l’instradamento di default” e “Ignora le stringhe del terminale (modo stupido)”. Anche le prime due possono essere tranquillamente attivate.

A questo punto dovremmo essere a posto: avviando gnome-ppp (sempre come root) e premendo il tasto “connetti” il sistema dovrebbe essere funzionale. Se qualcosa non andasse consiglio di provare a ricontrollare le impostazioni, e magari di riavviare il computer (per essere sicuri che tutti i servizi siano avviati correttamente).

Per finire vi consiglio di utilizzare un software per tenere conto della navigazione effettuata, per evitare di sforare il limite del proprio piano (ricordiamo che per il Naviga 3 mensile è di 50 megabyte al giorno, e sappiamo bene che 50 megabyte finiscono in fretta). Ho sentito parlare molto bene di vnstat; stasera non ho tempo di provarlo, ma se vi interessa qui potete trovare qualche spiegazione.

Ciao a tutti!

Evoluzione dell’interfaccia grafica

Tutti sappiamo, o perlomeno intuiamo, che l’invenzione dell’interfaccia grafica è stato uno dei momenti chiave della storia dell’informatica domestica e non solo; e sappiamo tutti che senza l’intuizione di poter comandare i computer mediante disegni e simboli e non solo righe di comandi il nostro mondo sarebbe molto, molto diverso.

Ma molti di noi (io compreso fino a poco fa) non sanno come è nata e si è evoluta l’interfaccia grafica, dai primi esperimenti della Xerox (eh si, proprio quelli delle stampanti, non ve lo aspettavate, eh?) fino alle meraviglie grafiche di KDE4 o MacOsX Leopard (si, ci sarebbe anche MSVista, ma preferisco ignorarlo…).

Vi rimando quindi a un bellissimo articolo che elenca, con tanto di immagini storiche, le interfacce grafiche dalla loro nascita fino ai giorni nostri. Qualcosa che non può mancare nel bagaglio culturale di qualunque utente consapevole. Buona visione!

Xerox 8010 Star (anno 1981)

Xerox 8010 Star (anno 1981)

Sono solo sconvolto che nell’elenco non sia presente il famigerato Microsoft BOB

Creare una mappa personalizzata da OSM: lo script

Come prometto a vuoto da mesi, finalmente mi voglio mettere a scrivere un articolo per spiegare un sistema completamente automatico mediante script bash per generare una mappa a partire dai dati di OpenStreetMap. Lo script è un allegro guazzabuglio di utility da riga di comando destinate a scaricare i dati dal server OSM sotto forma di xml, “compilarli” per generare un file SVG, convertire tale file in un PNG e aggiungerci qualche particolare utile: un header, un footer con il copyright, un frame di contorno e una scala kilometrica. Questo articolo, come i miei fedeli lettori avranno già intuito, nasce da una fusione di precedenti post: questo, questo, questo, questo.

Per iniziare i requisiti:

  • Avremo bisogno di un computer linux connesso alla rete (e fin qui…); io uso Ubuntu, non posso garantire il funzionamento di tutte le utility richiamate da questo script su altre piattaforme, anche se probabilmente su Mac si può fare (se qualcuno ci prova mi faccia sapere che aggiornerò l’articolo). Ovviamente Windows non è neanche preso in considerazione.
  • Avremo bisogno di queste utility, scaricabili dal repository: xsltproc (nell’installazione di default, a quanto mi risulta), wget (idem), convert+composite (nella suite ImageMagick), bc.
  • Avremo bisogno del programma per calcolare la distanza in chilometri tra due punti espressi in coordinate GPS, di cui ho parlato in precedenza (in questo post, nella sezione “un programma in C”). Copiarlo in un editor di testo, compilarlo seguendo le istruzioni nel post e avere cura che l’eseguibile si chiami “calcola” (senza alcuna estensione), non “converti” come nell’esempio.
  • Per finire, avremo bisogno di una serie di files da scaricare dai repository di openstreetmap, che ci serviranno per compilare la mappa vera e propria.

In riferimento all’ultimo punto dell’elenco, avremo bisogno di un ambiente di lavoro costituito dalla seguente struttura di cartelle:

data
|– osm-map-features-z17.xml
|– calcola
|– renderizza (così chiameremo lo script che andremo a utilizzare)
|– osmarenderer.xsl

stylesheets
|– symbols
|– il contenuto di questa cartella

Uhm.. dovremmo avere tutto, spero di non aver dimenticato nulla.. Per semplificarvi la vita, ho provveduto a uppare su una condivisione box.net uno zip con tutto il necessario per cominciare a renderizzare (sempre se non mi sono dimenticato nulla); scaricate pure qui. A questo punto manca solo lo script, che come ho detto prima si chiamerà, con molta fantasia, “renderizza” (beh, potete anche cambiargli il nome).

Ecco dunque l’agognato script, pezzo per pezzo:

Impostiamo un pò di variabili che ci verranno buone per dopo. Le uniche da modificare sono ovviamente le coordinate GPS (latitudine e longitune) della zona che vogliamo inserire nella mappa

# coordinate gps zona
# nb: max 0.25 gradi sia latitudine che longitudine

MAXLAT=45.8239
MINLAT=45.8045
MAXLON=10.0841
MINLON=10.0584

# nomi file
OSM=”data.osm”     # nome del file dati OSM
SVG=”map.svg”    # nome dell’output in formato svg
PNG=”map.png”    # nome dell’output in formato png

Recuperiamo i dati aggiornati:

echo “recupero dati dal server OSM…”
wget -O ${OSM} http://api.openstreetmap.org/api/0.5/map?bbox=$MINLON,$MINLAT,$MAXLON,$MAXLAT

Eseguiamo il rendering:

# livello del rendering
livello=17

# identifica il livello di dettaglio del rendering;
# per aree piccole conviene usare il livello 17;
# per eseguire il rendering sarà richiesto il
# file osm-map-features-zXX.xml (XX = livello).

echo “rendering mappa..”
xsltproc osmarender.xsl osm-map-features-z${livello}.xml > ${SVG}

Convertiamo la mappa (in formato SVG) in un file grafico PNG, più facilmente utilizzabile:

# —- conversione mappa in png

density=600     # risoluzione del file grafico.
scale=1000         # dimensione in px del file grafico

echo “conversione in PNG…”
convert -density ${density} -scale ${scale} ${SVG} ${PNG}

Aggiungiamo un header con un testo a scelta. In questo caso inserisco il mio nome e la data dell’aggiornamento (ovvero la data corrispondente al file dati).

# —- aggiunta header

echo “aggiunta della data alla cartina..”
convert xc:white -resize 1×15! blank.ppm
convert -append blank.ppm ${PNG} intermediate.ppm
convert intermediate.ppm -gravity “North” -draw “text 0,3 ‘Updated on: $(date -r ${OSM}) by PicciMario’” ${PNG}
rm blank.ppm intermediate.ppm

Aggiungo un footer con un copyright OSM.

# —- aggiunta footer

echo “aggiunta copyright alla cartina..”
convert xc:white -resize 1×20! blank.ppm
convert -append  ${PNG} blank.ppm intermediate.ppm
convert intermediate.ppm -gravity “South”
(continua) -draw “text 0,3 ‘Copyright 2008 OpenStreetMap (openstreetmap.org)’” ${PNG}
rm blank.ppm intermediate.ppm

La parte più incasinata: creo il simbolo della scala e lo inserisco nella mappa

# —- aggiunta scala

echo “aggiunta scala 1km”

# calcola larghezza in km della mappa
larghezza=$(./calcola $MINLON, $MAXLON, $MINLAT, $MINLAT )
# misura la larghezza in px della mappa
larghezzapixel=$(identify -format %w $PNG)
# calcola l’equivalenza px/km
pixel1km=$(echo “$larghezzapixel/$larghezza” | bc)

# creazione simbolo scala
framewidth=1
scalesymbol=scale.png
scaleheight=10
scalecolor1=xc:blue
scalecolor2=xc:white

pixel100m=$(echo “($pixel1km-(2*framewidth))/10″ | bc)
convert ${scalecolor1} -resize ${pixel100m}x${scaleheight}! block1.ppm
convert ${scalecolor2} -resize ${pixel100m}x${scaleheight}! block2.ppm
convert +append block1.ppm block2.ppm block1.ppm block2.ppm block1.ppm block2.ppm block1.ppm block2.ppm block1.ppm block2.ppm ${scalesymbol}
convert -mattecolor blue -frame ${framewidth}x${framewidth} ${scalesymbol} ${scalesymbol}
rm block1.ppm block2.ppm

# aggiunta del simbolo alla cartina
composite -geometry +10+30 -gravity southwest ${scalesymbol} ${PNG} ${PNG}

rm ${scalesymbol}

E per finire l’aggiunta di un bordino blu di rifinitura.

# —- aggiunta frame di contorno al file completo

echo “aggiunta frame…”
convert -mattecolor blue -frame 1×1 ${PNG} ${PNG}

echo “operazione completata.”

Facile, no? Si, lo so, è abbastanza contorto.. Ma ha l’innegabile vantaggio che, una volta pronto, non devo fare altro che andare nella cartella, scrivere ./renderizza e lui fa tutto e mi presenta la bellissima cartina completa.

map

Ad esempio, mi piacerebbe metterlo nel cron del mio server per mostrare su una pagina web la cartina del mio paese con aggiornamenti giornalieri (peccato che il mio server è un computer di 10 anni fa e per fare il rendering ci mette 20 minuti). Se poi pensiamo alla possibilità di modificare il file xml (osm-map-features ecc..), che descrive il modo in cui la mappa è creata, possiamo ottenere infinite potenzialità di personalizzazione della mappa da noi creata (modificare i simboli, le dimensioni e i colori delle strade, scegliere cosa inserire e cosa no, …).

Beh, per oggi mi accontento di questo.. Fatemi sapere se il sistema vi piace e in caso mandatemi un link delle vostre opere d’arte :-)

Ciao a tutti!

Map Tricks: aggiungere un riferimento di distanza a una mappa

Supponiamo di avere un file grafico rappresentante una mappa, e di volerci aggiungere un qualcosa che permetta di comprenderne le proporzioni. Normalmente le mappe prevedono, oltre alla dicitura della scala, anche un simbolo grafico di dimensione nota, ad esempio un chilometro. E’ possibile aggiungere un simbolo del genere a una mappa di cui si conoscono solo le coordinate geografiche in modo semplice ed automatico.

Lavorando sotto Linux (Ubuntu, per l’esattezza) ci occorreranno le utility ImageMagick (una suite di tool grafici da riga di comando), bc (un’utility per eseguire operazioni matematiche da riga di comando) e il programmino in C “calcoladistanza” che ho descritto in un precedente post (che calcola la distanza tra due punti in km a partire dalle loro coordinate geografiche). Se non li abbiamo li possiamo scaricare così (sotto ubuntu):

sudo apt-get install bc imagemagick

Per compilare il programmino invece basta seguire le istruzioni riportate sul post originale.

Le operazioni da svolgere sono le seguenti:

MINLON=…
MAXLON=…
MINLAT=…
MAXLAT=…

scriviamo in quatto variabili numeriche i valori estremi di latitudine e longitudine della mappa

larghezza=$(./calcoladistanza $MINLON, $MAXLON, $MINLAT, $MINLAT )

salva nella variabile “larghezza” la larghezza in km della superficie riportata sulla mappa, come distanza tra due punti sugli estremi della mappa stessa (notare che ho usato lo stesso valore di latitudine, altrimenti avrei calcolato la distanza diagonale).

larghezzapixel=$(identify -format %w immagine.png)

misura la larghezza in pixel dell’immagine, utilizzando il tool “identify” contenuto nella suite ImageMagick.

pixel1km=$(echo “$larghezzapixel/$larghezza” | bc)

calcola la larghezza in pixel di un km effettivo sulla mappa, dividendo (con l’utility “bc”) i due risultati precedenti

convert xc:white -resize ${pixel1km}x15! -frame 2×2 blank.ppm

crea (usando l’utility “convert” di imagemagick) un’immagine di nome blank.ppm, alta 15 pixel e larga esattamente un chilometro (ovvero il numero di pixel calcolati prima); poi vi aggiunge una cornice di 2 pixel

convert blank.ppm -gravity “Center” -draw “text 0,0 ‘Un kilometro!!’” blank.ppm

scrive il testo “Un kilometro!!” nel file precedentemente creato

composite -geometry +10+30 -gravity southwest blank.ppm immagine.png immagine_scala.png

usando “composite” (sempre contenuta in imagemagick, ovviamente) sovrappone la scala creata all’immagine di partenza e salva il risultato nel file “immagine_scala.png”. Il risultato sarà una cosa del genere:

lovereconscala

Che ve ne pare? Bello, eh? In realtà si può fare meglio.. ad esempio, invece di creare un rettangolo con una scritta si potrebbe usare un simbolo un pò più serio, tipo:

dili_1943_scale

(ovviamente opportunamente scalato e con tutti i controlli del caso), ma questo ve lo lascio come compito a casa :-) . Potete trovare un’infinità di informazioni ed esempi sull’utilizzo della suite ImageMagick qui. Ciao a tutti!

Creare mappe personalizzate con i dati di OpenStreetMap

Una delle cose più interessanti del progetto OpenStreetMap, a mio avviso, è il fatto che tale progetto mantiene un archivio non di semplici mappe bensì dei dati necessari a realizzarle; parliamo di descrizioni vettoriali di strade con relativi tag descrittivi, descrizioni di aree, ma anche infinite tipologie di punti di interesse (si va dai negozi fino alle strisce pedonali, passando per i parcheggi e le fontanelle d’acqua potabile).

Questa mole di dati non può entrare tutta in un’unica mappa, sarebbe inutile. Esiste però la possibilità di utilizzare questi dati per generare una mappa personalizzata, scegliendo ad esempio che tipo di POI (Point Of Interest) inserire; se voglio fare una passeggiata in bici, vorrò una mappa con le fontanelle dell’acqua potabile e i sentieri di montagna, e non avrò certo bisogno di conoscere la posizione di parcheggi o delle autostrade nella zona.

Oppure voglio solo renderizzare la mappa con gli ultimi dati disponibili, che magari ho inserito io: la mappa disponibile sul sito viene aggiornata solo una volta alla settimana, mentre i dati disponibili come vedremo in seguito sono sempre alla verione più recente.

Come posso fare a procurarmi i dati aggiornati da osm, selezionare la posizione che mi occorre, generare la mappa ed esportarla in un file grafico? Procediamo con ordine.

Recupero dei dati OSM

Il modo più semplice per recuperare i dati OSM è dalla mappa principale del progetto, su www.openstreetmap.org. Clicchiamo sulla tab “Export” in alto sulla pagina, scegliamo la zona desiderata sulla mappa e il livello di zoom richiesto. Sotto la voce “Format to Export” scegliamo “OpenStreetMap XML Data” (dimenticavo, l’opzione è disponibile solo per aree relativamente modeste (una cittadina al massimo, non una provincia) altrimenti i dati diventerebbero troppi). Volendo possiamo utilizzare l’opzione “Manually select a different area”, per selezionare un rettangolo particolare della mappa. A questo punto clicchiamo su “Export”, e rinominiamo il file scaricato in “data.osm” (vedremo poi il perchè).

osmper1

Compilazione della mappa

Il prossimo passo è sfruttare il file osm appena scaricato per creare la mappa, per ora ancora in formato vettoriale. Per questa fase avremo bisogno dell’utility “xsltproc”, disponibile di default in Linux e Mac Os (gli utenti Winzoz si arrangino :-) ). Questa utility altro non è che una sorta di compilatore per file xml: gli diamo in pasto un file xml (i dati scaricati), un file di comandi, un foglio di stile e lui in cambio creerà un file grafico vettoriale che rappresenta la mappa. Procediamo con ordine.

  • Il file di comandi è l’”OsmRenderer”, il sistema di rendering utilizzato per le mappe complete del progetto OSM. Possiamo scaricarne l’ultima versione qui dall’svn di openstreetmap, nella cartella xslt/osmarender.xsl.
  • Il file di stile è quello che, appunto, descrive cosa rappresentare sulla mappa e come rappresentarlo. Per iniziare scarichiamo il file utilizzato dal sistema di rendering di OSM per il livello di zoom 17 (quello più dettagliato). Lo possiamo trovare in stilesheets/osm-map-features-z17.xml. Non vale la pena perdere troppo tempo nel descriverne la sintassi, è tanto semplice e ben commentato che la cosa migliore è fare prove e confrontare i risultati finali, alla ricerca della soluzione migliore per le nostre esigenze. Basti sapere che è questo che dobbiamo modificare per decidere come sarà la nostra mappa personalizzata.
  • Per finire, dobbiamo procurarci i files corrispondenti ai simboli speciali che saranno inseriti sui POI sulla mappa: la troviamo sempre nell’svn, nella cartella symbols/, che dovrà essere copiata (sempre con questo nome) all’interno della cartella in cui già si trovano i files procurati in precedenza. E’ possibile saltare questo passaggio, verranno mostrati dei warning in fase di compilazione ma la mappa verrà creata comunque.

A questo punto abbiamo il tutto, non ci resta che mescolare bene gli ingredienti:

xsltproc osmarender.xsl osm-map-features-z17.xml > map.svg

A questo punto abbiamo creato un file in formato svg contenente la rappresentazione della nostra bella mappa.

Ultimi ritocchi

C’è un problema solo da sistemare: il formato SVG non è certo un formato amichevole. E’ un formato vettoriale, il che significa che può essere ridimensionato a piacere senza perdere qualità, ma non è gestito da tutti i programmi di grafica in giro. Tanto vale trasformarlo in un comodo PNG, no?

Per la semplice visualizzazione (giusto per vedere se ci piace) possiamo aprirlo con Firefox3. Safari lo apre ma ho notato che lo visualizza male (non so perchè). Idem GIMP, almeno sul mio mac.

Per esportarlo in png ci conviene usare l’utility “convert”, della suite “ImageMagick”. Se non l’abbiamo sul sistema, possiamo installarla così:

su mac: con MacPorts installato è sufficiente un “sudo port install imagemagick”, altrimenti possiamo scaricare i binari precompilati dal sito.

su Ubuntu: basta un semplice “sudo apt-get install imagemagick”

Una volta installata possiamo utilizzarla per trasformare la nostra immagine svg in un comodo png. Il comando seguente, ad esempio, ci permette di creare un png di altezza 500px e qualità medio-alta:

convert -density 300 -scale 500 map.svg map.png

Ecco gli ultimi aggiornamenti che ho apportato alla mappa del mio paesello, in questa bellissima mappa fresca fresca di rendering:

osmpermappa

Per un qualche motivo che non ho ben capito (e potrebbe benissimo essere dovuto all’accumularsi di esperimenti software dolorosi sul mio computer) il convert sul mac non mi funziona a dovere, quindi ho dovuto scavare alla ricerca di un’alternativa. L’utility migliore che sono stato capace di individuare è Squiggle. Con questo programma è possibile aprire l’svg, zoomarlo, spostarmi dove voglio e alla fine esportare comodamente l’inquadratura come file PNG.

osmpersquiggle

Unica nota: spesso durante l’apertura del file svg Squiggle dà qualche problema, legato alla non perfetta aderenza del file creato con lo standard svg; basta dargli l’OK a qualunque indicazione di errore e poi ridimensionare la finestra aperta: la mappa verrà visualizzata correttamente lo stesso.