Come creare mappe utilizzando i dati di OpenStreetMap

Prettymapp è un pacchetto sviluppato in Python utilizzabile per creare mappe dettagliate e professionali a partire dai dati pubblicati su OpenStreetMap. Come funziona e come integrarlo nelle proprie applicazioni con uno sforzo davvero minimo.

OpenStreetMap è un progetto collaborativo che mira a creare una mappa mondiale gratuita e liberamente modificabile. Si tratta di una piattaforma che raccoglie dati geografici da utenti di tutto il mondo per creare mappe dettagliate e accurate di qualsiasi area geografica. A differenza delle mappe tradizionali fornite da aziende commerciali, OpenStreetMap è basato sulla collaborazione aperta e permette agli utenti migliorare le informazioni geospaziali attraverso i propri contributi.

Creare mappe a partire dal ricco dataset di OpenStreetMap può essere estremamente utile in molteplici contesti. Le mappe generate a partire da OpenStreetMap possono essere personalizzate per soddisfare esigenze specifiche. Si può per esempio scegliere quali elementi mappare, quali dati visualizzare e come presentare le informazioni in base al pubblico e agli obiettivi.

Le mappe OpenStreetMap, inoltre, spesso contengono dettagli locali non presenti nelle mappe commerciali, ad esempio quelle di Google Maps o di Bing. Questo aspetto risulta particolarmente utile per offrire una mappatura accurata delle aree periferiche, rurali o comunque meno servite.

Essendo una piattaforma collaborativa, le mappe OpenStreetMap sono costantemente aggiornate e riflettono meglio e più rapidamente eventuali variazioni relative alle infrastrutture. Grazie alla flessibilità di OpenStreetMap, è inoltre possibile concentrarsi sul rendering delle sole strade, di aree verdi, delle zone acquatiche, di punti d’interesse e così via.

Trattandosi di mappe royalty-free, quelle derivate da OpenStreetMap possono essere riutilizzate in un ampio ventaglio di campi applicativi senza bisogno di versare un centesimo.

Creare mappe professionali con Prettymapp

Una scoperta davvero piacevole è la possibilità di generare mappe professionali a partire dalla base dati di OpenStreetMap. Il progetto Prettymapp, realizzato in Python, fa proprio questo: con poche e semplici righe di codice è possibile creare mappe personalizzate di qualunque luogo sulla faccia della Terra.

Come conferma l’autore di Prettymapp, il codice dell’applicazione è stato sviluppato a partire da Prettymaps (con la “s” finale al posto della “p”), messo a punto da un altro programmatore. Il merito di Prettymapp è quello di aver ottimizzato il funzionamento del codice originale, rimuovendo tra l’altro le configurazioni più complesse a tutto vantaggio della maggiore velocità e della possibilità di creare interfacce Web in modo ancora più semplice.

L’autore di Prettymapp propone anche un’applicazione Web gratuita che mostra tutte le potenzialità del codice Python condiviso tramite il repository GitHub. Al momento l’applicazione non funziona perché letteralmente presa d’assalto dagli utenti ma il suo funzionamento dovrebbe essere a breve ripristinato.

Installare i requisiti per l’uso di Prettymapp

Nel frattempo, utenti e sviluppatori possono provare Prettymapp dalla finestra del terminale Linux semplicemente installando python e pip. Quest’ultimo è uno strumento di gestione dei pacchetti per Python. Consente di installare, aggiornare e rimuovere pacchetti di terze parti (moduli) che estendono le funzionalità di Python. Questi pacchetti includono librerie, framework e strumenti che semplificano lo sviluppo e l’uso di applicazioni Python.

I comandi seguenti permettono di installare python e pip in una macchina Ubuntu:

sudo apt install python3
sudo apt install python3-pip

È possibile procedere anche da WSL 2 in Windows, utilizzando il componente Windows Subsystem for Linux in Windows 10 e Windows 11 che appunto dà modo portare Linux in Windows, comprese le distribuzioni Ubuntu.

Per installare Prettymapp è quindi sufficiente impartire il comando seguente:

pip install prettymapp

Creare una mappa con uno script Python

A questo punto, è tutto pronto per generare una mappa a partire dal dataset di OpenStreetMap. Per procedere è sufficiente creare un nuovo script Python dalla riga del terminale Linux:

nano map_script.py

Il file è aperto con l’editor nano: basta copiare il codice seguente e incollarlo premendo il tasto destro.

from prettymapp.geo import get_aoi
from prettymapp.osm import get_osm_geometries
from prettymapp.plotting import Plot
from prettymapp.settings import STYLES

aoi = get_aoi(address=”Piazza San Marco, Venezia“, radius=1100, rectangular=False)
df = get_osm_geometries(aoi=aoi)

fig = Plot(
df=df,
aoi_bounds=aoi.bounds,
draw_settings=STYLES[“Peach”]
).plot_all()

fig.savefig(“map.jpg”)

Le combinazioni di tasti CTRL+O e CTRL+X consentono, rispettivamente, di salvare lo script e di chiudere l’editor nano.

Creare mappe con Python

Digitando python3 map_script.py è possibile avviare la generazione della mappa a partire dai dati di OpenStreetMap. Nell’esempio, come si vede esaminando il codice Python, viene creata una mappa circolare che ha come centro Piazza San Marco, a Venezia. Come stile della mappa viene applicato quello disponibile con il nome Peach.

Mappe OpenStreetMap con Prettymapp

Al termine dell’esecuzione dello script, si può aprire il file map.jpg, creato nella stessa cartella: contiene la mappa richiesta e prodotta secondo le indicazioni contenute nello script Python. Da WSL2 è possibile aprire la mappa semplicemente digitando quanto segue:

explorer.exe map.jpg

Personalizzare la generazione della mappa

Il codice contenuto nello script Python può essere ampiamente personalizzato a seconda delle proprie necessità. Nell’esempio abbiamo impostato Rectangular=True in modo da ottenere una mappa di formato rettangolare.

Creare mappe personalizzate con Python

Abbiamo inoltre aggiunto quanto segue all’interno della definizione della classe Plot in modo da prescrivere la visualizzazione dell’etichetta “Venezia” nell’angolo inferiore destro della mappa (attenzione alla virgola aggiunta alla fine di STYLES["Peach"]):

name_on=True,
name="Venezia",
text_x=40,
text_y=-45

Immagine generata con Prettymapp da OpenStreetMap

È comunque possibile trarre spunto da questi esempi per ottenere ulteriori ispirazioni. Inoltre, sostituendo Peach con i nomi degli stili previsti dall’autore di Prettymapp, si possono ottenere mappe con combinazioni di colori ed effetti grafici differenti.

Ti consigliamo anche

Link copiato negli appunti