Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Programmazione/Mapnik"
Differenze tra le versioni 41 e 42
Versione 41 del 19/10/2008 18.16.56
Dimensione: 8547
Commento:
Versione 42 del 20/10/2008 08.01.24
Dimensione: 9433
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 74: Linea 74:
Linea 76: Linea 77:
Linea 78: Linea 80:

# Qui viene creato un stile
Linea 79: Linea 83:

# Adesso deve venir definito lo stile. Questo può avere una o più rule (regole). Una rule può comprendere un filtro, la definizione di scale minima e
# massima, uno o più Symbolizers (PolygonSymbolizer) e (LineSymbolizer)
Linea 80: Linea 87:
#colore di riempimento dei poligoni
# colore di riempimento dei poligoni
Linea 82: Linea 90:
#stile, colore e spessore delle linee di contorno
# colore e spessore delle linee di contorno
Linea 85: Linea 94:

# Aggiungiamo lo stile alla mappa e gli diamo un nome da usare nella definizione del layer (livello)
Linea 86: Linea 97:

# Adesso vengono definiti uno o più layer (livelli). Innanzitutto definiamo il nome il nome dello stesso
Linea 87: Linea 100:
######### # # # # # # ## # # # # # #
# # # # # # # # # # # # # # # # # #
Linea 89: Linea 103:
######### # # # # # # # # # # # # #
lyr.datasource = Shapefile(file='/Users/path/to/your/data/world_borders')
# Lo shapefile deve essere indicato SENZA ESTENSIONE (senza .shp)
# # # # # # # # # # # # # # # # #
lyr.datasource = Shapefile(file='/percorso/ai/dati/world_borders')

# aggiungiamo lo stile al layer
Linea 92: Linea 109:

# aggiungiamo il layer alla mappa da rendere
Linea 93: Linea 112:

# Definiamo l'estensione geografica. Le coordinate due coppie di coordinate corrispondono ai due angoli basso-sinistro e alto-destro della
# mappa
Linea 94: Linea 116:


# aggiungiamo l'estensione geografica alla mappa
Linea 95: Linea 120:

# rendiamo la mappa m nel file world.png con formato png

BR Indice()

Introduzione

Mapnik è un toolkit per la realizzazione di mappe a partire da dati vettoriali e raster ed è un'ottima alternativa ai più famosi [http://mapserver.gis.umn.edu/ Mapserver] e [http://geoserver.org/display/GEOS/Welcome Geoserver]. E' scritto in C++, permette un render molto veloce e utilizza Python bindings che supportano uno sviluppo semplice e veloce delle mappe. Grazie all'ottima [http://mapnik.org/documentation/ documentazione] e ai numerosi [http://trac.mapnik.org/wiki/ExampleCode esempi di codice] l'uso di Mapnik non è precluso a chi non ha conoscenze di programmazione. Mapnik viene usato normalmente per lo sviluppo di applicazioni web ma è adatto anche per la creazione di mappe a livello desktop.

Mapnik inoltre è il renderer "ufficiale" del progetto di cartografia libera [http://openstreetmap.org openstreetmap].

Installazione da Repository

Per installare Mapnik è necessario [:AmministrazioneSistema/InstallareProgrammi:installare] il pacchetto python-mapnik, reperibile dal [:Repository/Componenti:componente] universe dei [:Repository:repository ufficiali].

Per installare una versione più aggiornata non presente nei repository ufficiali si deve procedere tramite la [:AmministrazioneSistema/InstallareProgrammi/DaSorgenti:compilare dei sorgenti].

Installazione tramite sorgenti

Installazione dipendenze

  • Installazione delle dipendenze boost richieste tramite:

    sudo aptitude install binutils cpp-3.3 g++-3.3 gcc-3.3 gcc-3.3-base libboost-dev libboost-filesystem-dev libboost-filesystem1.34.1 libboost-iostreams-dev libboost-iostreams1.34.1 libboost-program-options-dev libboost-program-options1.34.1 libboost-python-dev libboost-python1.34.1 libboost-regex-dev libboost-regex1.34.1 libboost-serialization-dev libboost-serialization1.34.1 libboost-thread-dev libboost-thread1.34.1 libicu-dev libicu38 libstdc++5 libstdc++5-3.3-dev python2.5-dev libfreetype6 libfreetype6-dev libjpeg62 libjpeg62-dev libltdl3 libltdl3-dev libpng12-0 libpng12-dev libtiff4 libtiff4-dev libtiffxx0c2 python-imaging python-imaging-dbg proj 
  • Opzionale: Cairo Renderer:

    sudo aptitude install libcairo2 libcairo2-dev python-cairo python-cairo-dev libcairomm-1.0-1 libcairomm-1.0-dev libglib2.0-0 libpixman-1-0 libpixman-1-dev libpthread-stubs0 libpthread-stubs0-dev ttf-dejavu ttf-dejavu-core ttf-dejavu-extra
  • Opzionale: Installazione di altri strumenti [:UbuntuGis:GIS]:

    sudo aptitude install libgdal-dev python2.5-gdal postgresql-8.3-postgis postgresql-8.3 postgresql-server-dev-8.3 postgresql-contrib-8.3

Compilazione e installazione

Installazione senza supporto WMS

Se non si sono installati i programmi Postgis, Gdal e non si ha intenzione di usare Mapnik come server WMS è suffiente dare i seguenti comandi all'interno di una finestra di terminale:

mkdir ~/src
cd ~/src
svn co svn://svn.mapnik.org/trunk mapnik
cd mapnik
python scons/scons.py
sudo python scons/scons.py install

Installazione con supporto WMS

Se invece si sono istallati Postgis, Gdal e si ha intenzione di usare il supporto WMS è necessario specificare il percorso alle librerie necessarie, digitando i seguenti comandi all'interno di una finestra di terminale:

python scons/scons.py DEBUG=y PGSQL_INCLUDES=/usr/include/postgresql/ PGSQL_LIBS=/usr/lib/postgresql/8.3/lib GDAL_INCLUDES=/usr/local/include GDAL_LIBS=/usr/local/lib XMLPARSER=libxml2
sudo python scons/scons.py install DEBUG=y PGSQL_INCLUDES=/usr/include/postgresql/ PGSQL_LIBS=/usr/lib/postgresql/8.3/lib GDAL_INCLUDES=/usr/local/include GDAL_LIBS=/usr/local/lib XMLPARSER=libxml2

Digitare il seguente comando all'interno di una finestra di terminale:

sudo ldconfig

Test dell'installazione

  1. Aprire una console di python digitando all'interno di una finestra di terminale il seguente comando:

    python
  2. Iniziare le operazioni di verifica tramite il seguente comando:

    import mapnik

Se non dovesse essere restituito nessun output l'installazione è andata bene e si può passare al [http://trac.mapnik.org/wiki/GettingStarted tutorial]

Primi passi con Mapnik

Vedremo ora come ottenere una mappa molto basilare con Mapnik. Innanzitutto bisogna scaricare un semplice dataset vettoriale in formato [http://it.wikipedia.org/wiki/Shapefile ESRI Shapefile] e salvarlo in un punto qualsiasi nel filesystem.

Il secondo passe è scrivere un semplice script in python che punti a questo file, se definisca lo stile e l'estensione geografica. Per fare questo salvare il seguente script in un file chiamato italia.py

  • Non dimenticare di modificare il percorso allo shapefile!

from mapnik import *

#qui definiamo la mappa da rendere con le sue dimensioni e il sistema di riferimento geografico (latlon WGS84)
m = Map(600,300,"+proj=latlong +datum=WGS84")

#colore dello sfondo
m.background = Color('steelblue')

# Qui viene creato un stile
s = Style()

# Adesso deve venir definito lo stile. Questo può avere una o più rule (regole). Una rule può comprendere un filtro, la definizione di scale minima e 
# massima, uno o più Symbolizers (PolygonSymbolizer) e (LineSymbolizer)
r=Rule()

# colore di riempimento dei poligoni
r.symbols.append(PolygonSymbolizer(Color('#f2eff9')))

# colore e spessore delle linee di contorno
r.symbols.append(LineSymbolizer(Color('rgb(50%,50%,50%)'),0.1))
s.rules.append(r)

# Aggiungiamo lo stile alla mappa e gli diamo un nome da usare nella definizione del layer (livello)
m.append_style('My Style',s)

# Adesso vengono definiti uno o più layer (livelli). Innanzitutto definiamo il nome il nome dello stesso
lyr = Layer('world')

# # # # # # # # # # # # # # # # # # 
#Percorso allo shapefile. --> DA CAMBIARE!
# Lo shapefile deve essere indicato SENZA ESTENSIONE (senza .shp)
# # # # # # # # # # # # # # # # #
lyr.datasource = Shapefile(file='/percorso/ai/dati/world_borders')

# aggiungiamo lo stile al layer
lyr.styles.append('My Style')

# aggiungiamo il layer alla mappa da rendere
m.layers.append(lyr)

# Definiamo l'estensione geografica. Le coordinate due coppie di coordinate corrispondono ai due angoli basso-sinistro e alto-destro della 
# mappa
bbox = Envelope(Coord(6.61, 34.80), Coord(29.64, 47.09)) 


# aggiungiamo l'estensione geografica alla mappa
m.zoom_to_box(bbox)

# rendiamo la mappa m nel file world.png con formato png
render_to_file(m,'world.png', 'png')

Compilazione del Viewer

Mapnik comprende un visualizzatore per la vedere i mapfile di tipo .xml. Il Viewer permette le seguenti funzioni:

  • Visualizzare on-the-fly dei tiles
  • Leggere nel terminale i livelli di zoom e envelope
  • Fare lo zoom tramite query
  • Leggere eventuali errori di configurazione della mappa
  • Esportare in diversi formati tra cui .tif

Immagine(Icone/Piccole/note.png,,center)

Il Viewer è non è presente nel pacchetto installabile da repository. Se si ha intenzione di usarlo è necessario installare Mapnik da sorgenti

Compilazione e installazione

Il codice sorgente del Viewer è contenuto in una sotto cartella del sorgente di Mapnik e deve essere compilato a parte. Per la compilazione sono necessari Qt4 (compreso il pacchtto dev) e qmake.

  1. Entrare della cartella che contiene il Viewer:

    cd ~/src/mapnik/dem/viewer
  2. E' necessario adattare alcuni file al proprio sistema, quindi aprire il file viewer.pro con un [:Ufficio/EditorDiTesto:editor di testo] e modificarlo il percorso di INCLUDEPATH la riga unix.LIBS come segue:

    INCLUDEPATH += /usr/local/include/mapnik
    INCLUDEPATH += /usr/include/boost-1_34_1
    INCLUDEPATH += /usr/include/freetype2
    INCLUDEPATH +=
    unix:LIBS += -L/usr/local/lib -lmapnik
  3. Aprire il file main.cpp con un [:Ufficio/EditorDiTesto:editor di testo] e modificarlo specificando il percorso ai font a ai plugin di Mapnik:

    datasource_cache::instance()->register_datasources("/usr/local/lib/mapnik/input"); 
    freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans.ttf");
    freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-Bold.ttf");
    freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono.ttf");
  4. Compilare e installare il Viewer digitando all'interno di una finestra di terminale i seguenti comandi:

    /usr/bin/qmake-qt4 -makefile
    make

Lanciare il Viewer

Restando nella stessa cartella digitare il seguente comando sempre da una finestra di termiale:

./viewer

Per visualizzare un mapfile lanciare il viewer aggiungendo il percorso dello stesso

./viewer /percorso/mapfile.xml

Ulteriori risorse


CategoryHomepage