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!

Questa voce è stata pubblicata in Uncategorized e contrassegnata con , , . Contrassegna il permalink.

2 risposte a Map Tricks: aggiungere un riferimento di distanza a una mappa

  1. Pingback: Aggiungere testo in cima o in fondo a un’immagine « Appunti, scoperte e invenzioni

  2. Pingback: Creare una mappa personalizzata da OSM: lo script « Appunti, scoperte e invenzioni

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...