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 38 e 55 (in 17 versioni)
Versione 38 del 19/10/2008 11.11.51
Dimensione: 7575
Commento:
Versione 55 del 30/10/2008 11.38.55
Dimensione: 12312
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 9: Linea 9:
Questa guida vuole essere una traduzione abbastanza fedele della [http://trac.mapnik.org/wiki/UbuntuInstallation/ guida all'istallazione di Mapnik su Ubuntu 8.04] presente nel sito ufficiale di Mapnik, arricchita con alcuni punti personali.


'''Mapnik''' è un toolkit (insieme di strumenti) 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 (Ubuntu 8.04) =

Per Ubuntu 8.04 è presente nei [http://wiki.ubuntu-it.org/Repository?highlight=%28repository%29 repository] Universe il pacchetto ''python-mapnik'' che contiene Mapnik 0.4 e può essere comodamente installato tramire apt-get.

{{{
sudo apt-get install python-mapnik
}}}
Se si volesse installare l'ultima versione (Mapnik 0.5) bisognerà [:AmministrazioneSistema/InstallareProgrammi/DaSorgenti:compilare i sorgenti] (vedi sotto).

= Installazione tramite sorgenti (Ubuntu 8.04) =

== Installazione dipendenze ==

 * Installazione delle dipendenze boost richieste tramite [:AmministrazioneSistema/Aptitude:Aptitude]:

  {{{
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
}}}

 * Altre dipendenze richieste
  {{{
sudo aptitude install 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 dipendenze
  {{{
'''Mapnik''' è un uno strumento utile alla 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]. È scritto in C++, consente una renderizzazione molto veloce e utilizza Python per lo sviluppo delle mappe.

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

= Preparativi =

Abilitare i [:Repository/Componenti:componenti] '''universe''' e '''multiverse''' dei [:Repository:repository] ufficiali.

= Installazione da repository =

[:AmministrazioneSistema/InstallareProgrammi:Installare] il pacchetto ''python-mapnik''.

= Installazione da sorgenti =

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

== Preparativi ==

 * Dipendenze:{{{
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 libxml2-dev xml2 g++
}}}

 * Supporto Cairo Renderer: {{{
Linea 43: Linea 34:
 * Opzionale: Installazione di altri strumenti GIS (Vedi in proposito anche la guida [:UbuntuGis:UbuntuGis])
  {{{

 ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Nel caso si riceva un errore relativo alla libreria m in fase di compilazione, è necessario disinstallare il pacchetto'' '''libcairomm-1.0-dev'''. ||

 * Opzionale: Installazione di altri strumenti [:UbuntuGis:GIS]:{{{
Linea 48: Linea 41:
Linea 50: Linea 42:
 * Se non si sono installate Postgis, Gdal e non si ha intenzione di usare Mapnik come server WMS è suffiente dare i seguenti comandi
  {{{

Di seguito verrà illustrata l'installazione di '''Mapnik''' tramite [:Programmazione/Subversion:Subversion].

 0. Creare una cartella denominata `src` all'interno della propria '''Home''', digitando all'interno di una finestra di terminale il seguente comando:{{{
Linea 53: Linea 47:
}}}
 0. Entrare all'interno della cartella creata in precedenza e scaricare la versione SVN di '''Mapnik''':{{{
Linea 56: Linea 52:
}}}
=== Installazione senza supporto Postgis, Gdal e WMS ===
Se non si sono installati [http://www.postgis.org/ Postgis], le [http://it.wikipedia.org/wiki/GDAL librerie gdal] e non si ha intenzione di usare '''Mapnik''' come server [http://it.wikipedia.org/wiki/Web_Map_Service WMS] è sufficiente digitare i seguenti comandi all'interno di una finestra di terminale:{{{
Linea 59: Linea 58:
 * Se invece si sono istallati Postgis, Gdal e si ha intenzione di usare il supporto WMS è necessario specificare il percorso alle librerie necessarie.
  {{{

=== Installazione con supporto Postgis, Gdal e WMS ===

Se invece sono istallati [http://www.postgis.org/ Postgis], le [http://it.wikipedia.org/wiki/GDAL librerie gdal] e si ha intenzione di usare il supporto [http://it.wikipedia.org/wiki/Web_Map_Service WMS] è necessario specificare il percorso alle librerie necessarie, digitando i seguenti comandi all'interno di una finestra di terminale:{{{
Linea 64: Linea 65:
||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Se si dovesse ricevere in fase di compilazione un messaggio di errore relativo alla libreria m, è necessario disinstallare il pacchetto '' '''libcairomm-1.0-dev'''. ||


 * Infine dare i seguente comando
  {{{
Digitare il seguente comando all'interno di una finestra di terminale per applicare le modifiche:{{{
Linea 72: Linea 69:

= Testare se l'installazione è andata a buon fine =
Aprire una console di python oppure dare nel terminale il comando  {{{
= Test dell'installazione =
 0. Aprire una console di python digitando all'interno di una finestra di terminale il seguente comando:{{{
Linea 78: Linea 73:
adesso all'interno di python dare il comando
{{{
 0. Iniziare le operazioni di verifica tramite il seguente comando:{{{
Linea 82: Linea 76:
Se non si riceve nessun output l'installazione dovrebbe essere andata bene e si può passare al [http://trac.mapnik.org/wiki/GettingStarted tutorial]


= Opzionale: Compilazione del Viewer =
Mapnik comprende un Viewer (visualizzatore) per la visualizzazione di mapfile di tipo xml. Il Viewer permette:
 * la visualizzazione on-the-fly dei tiles
 * di leggere nel terminale i correnti livelli di zoom e envelope
 * possibilità di zoomare tramite query
 * di leggere eventuali errori di configurazione della mappa
 * di esportare in diversi formati tra cui tif
||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Il '''Viewer''' è non è presente nel pacchetto installabile da repository. Se si ha intenzione di usare il viewer è necessario installare '''Mapnik''' da sorgenti''||
Se non dovesse essere restituito nessun output d'errore l'installazione è andata bene e si può passare al capitolo successivo.

= Esempio con Mapnik =
Di seguito viene mostrato un primo esempio di utilizzo di '''Mapnik'''.

 0. Scaricare a [http://mappinghacks.com/data/world_borders.zip questo indirizzo] un dataset vettoriale in formato [http://it.wikipedia.org/wiki/Shapefile ESRI Shapefile], decomprimerlo e salvarlo all'interno della propria '''Home'''.

 0. Scrivere uno script in python che punti a questo file ne definisca lo stile e l'estensione geografica. Per fare questo salvare il seguente script all'interno della propria '''Home''' in un file chiamato `mappa.py`. L'estensione geografica dello script rende l'area relativa al mediterraneo. Modificare le coordinate se si desidera rendere un'altra zona geografica, non dimenticando di modificare il percorso allo shapefile: {{{
#!/usr/bin/env python

from mapnik import *

# Definizione delle dimensioni della mappa
# e il sistema di riferimento geografico (latlon WGS84)
m = Map(500,300,"+proj=latlong +datum=WGS84")

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

# Creazione di uno stile
s = Style()

# Definizione dello stile, possono esserci una o più regole.
# Una regola 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)

# Aggiunta dello stile alla mappa e definizione di un nome
# da usare nella definizione del livello
m.append_style('My Style',s)

# Vengono definiti i nomi di uno o più livelli
lyr = Layer('world')

# Percorso allo shapefile.
# Lo shapefile deve essere indicato senza esenzione!
lyr.datasource = Shapefile(file='/percorso/ai/dati/world_borders')

# Aggiunta dello stile al livello
lyr.styles.append('My Style')

# Aggiunta del livello della mappa
m.layers.append(lyr)

# Definizione dell'estensione geografica, le due coppie di coordinate
# corrispondono ai due angoli basso-sinistro e alto-destro della mappa
bbox = Envelope(Coord(6, 34), Coord(22, 48))

# Ingrandimento all'estensione geografica definita prima
m.zoom_to_box(bbox)

# Conversione la mappa m nel file italia.png con formato .png
render_to_file(m,'italia.png', 'png')
}}}


 0. Una volta salvato il file bisogna impostare i [:AmministrazioneSistema/PermessiFile:permessi] d'esecuzione, digitando all'interno di una finestra di terminale il seguente comando:{{{
chmod +x ~/mappa.py
}}}
 0. Avviare lo script lanciando il seguente comando all'interno di una finestra di terminale:{{{
./mappa.py
}}}

 0. Il risultato dovrebbe essere il file `italia.png` che rappresenta la mappa.

= 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`
||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Il '''Viewer''' è non è presente nel pacchetto installabile da repository. Se si ha intenzione di usarlo è necessario installare '''Mapnik''' da sorgenti''||
Linea 96: Linea 158:
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.
 * Entrare della cartella che contiene il Viewer  {{{
cd ~/src/mapnik/dem/viewer
}}}
 * E' necessario adattare alcuni file al proprio sistema     * Aprire il file `viewer.pro` con un qualsiasi [:Ufficio/EditorDiTesto:editor di testo] e modificarlo il percorso di INCLUDEPATH come segue
    
{{{
Il codice sorgente del '''Viewer''' è contenuto in una sotto cartella del sorgente di '''Mapnik''' e deve essere compilato a parte. Per la compilazione è necessario [:AmministrazioneSistema/InstallareProgrammi:installare] i pacchetti ''qt4-dev-tools'' e ''libqt4-dev''.
 0. Entrare della cartella che contiene il '''Viewer''':{{{
cd ~/src/mapnik/demo/viewer
}}}
 0. E' necessario adattare alcuni file al proprio sistema, quindi aprire il file `viewer.pro` con un [:Ufficio/EditorDiTesto:editor di testo] e modificare il percorso di '''INCLUDEPATH''' come segue:{{{
Linea 109: Linea 168:
     * Modificare anche la riga unix.LIBS come segue
      {{{
 Modificare anche la riga '''unix.LIBS''' come segue
 {{{
Linea 113: Linea 172:
  * Aprire il file `main.cpp` con un qualsiasi [:Ufficio/EditorDiTesto:editor di testo] modificarlo specificando il percorso ai font a ai plugin di Mapnik come segue
    
{{{
 0. Aprire il file `main.cpp` con un [:Ufficio/EditorDiTesto:editor di testo] e modificarlo specificando il percorso ai font a ai plugin di '''Mapnik''':{{{
Linea 116: Linea 174:
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");
 freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-Bold.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-BoldOblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-ExtraLight.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-Oblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansCondensed-Bold.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansCondensed-BoldOblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansCondensed-Oblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansCondensed.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono-Bold.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono-BoldOblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono-Oblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerif-Bold.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerif-BoldOblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerif-Oblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerif.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerifCondensed-Bold.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerifCondensed-BoldOblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerifCondensed-Oblique.ttf");
   freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerifCondensed.ttf");
Linea 120: Linea 197:
 * Compilare e installare il Viewer
{{{
/usr/bin/qmake-qt4 -makefile
 0. Compilare e installare il '''Viewer''' digitando all'interno di una finestra di terminale i seguenti comandi:{{{
/usr/share/qt4/bin/qmake -makefile
Linea 125: Linea 201:
== Lanciare il Viewer ==
 Restando nella stessa directory dare il seguente comando
{{{

== Avviare il viewer ==

Sempre
dalla medesima cartella digitare il seguente comando sempre da una finestra di termiale:{{{
Linea 130: Linea 207:
 * Per visualizzare un mapfile lanciare il viewer aggiungendo il percorso dello stesso Per visualizzare un mapfile lanciare il viewer aggiungendo il percorso dello stesso
Linea 137: Linea 214:
 * [http://trac.mapnik.org/ wiki di Mapnik]
 * [http://mike.teczno.com/notes/mapnik.html consigli stilistici]
 * [http://trac.mapnik.org/wiki/UbuntuInstallation/ documento originale]
 * [:UbuntuGis: guida all'installazione di altri strumenti GIS]
## da questo punto in poi non modificare!
 * [http://trac.mapnik.org/wiki/UbuntuInstallation/ Documento originale]
 * [http://mapnik.org/documentation/ Documentazione ufficiale]
 * [http://trac.mapnik.org/wiki/ExampleCode Esempi di codice]
 * [:UbuntuGis:Guida all'installazione di Ubuntu GIS]
 * [http://trac.mapnik.org/wiki/InstallationTroubleshooting/ Risoluzione dei problemi in fase di compilazione]

BR Indice()

Introduzione

Mapnik è un uno strumento utile alla 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]. È scritto in C++, consente una renderizzazione molto veloce e utilizza Python per lo sviluppo delle mappe.

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

Preparativi

Abilitare i [:Repository/Componenti:componenti] universe e multiverse dei [:Repository:repository] ufficiali.

Installazione da repository

[:AmministrazioneSistema/InstallareProgrammi:Installare] il pacchetto python-mapnik.

Installazione da sorgenti

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

Preparativi

  • Dipendenze:

    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 libxml2-dev xml2 g++
  • Supporto 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

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

    Nel caso si riceva un errore relativo alla libreria m in fase di compilazione, è necessario disinstallare il pacchetto libcairomm-1.0-dev.

  • 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

Di seguito verrà illustrata l'installazione di Mapnik tramite [:Programmazione/Subversion:Subversion].

  1. Creare una cartella denominata src all'interno della propria Home, digitando all'interno di una finestra di terminale il seguente comando:

    mkdir ~/src
  2. Entrare all'interno della cartella creata in precedenza e scaricare la versione SVN di Mapnik:

    cd ~/src
    svn co svn://svn.mapnik.org/trunk mapnik
    cd mapnik

Installazione senza supporto Postgis, Gdal e WMS

Se non si sono installati [http://www.postgis.org/ Postgis], le [http://it.wikipedia.org/wiki/GDAL librerie gdal] e non si ha intenzione di usare Mapnik come server [http://it.wikipedia.org/wiki/Web_Map_Service WMS] è sufficiente digitare i seguenti comandi all'interno di una finestra di terminale:

python scons/scons.py
sudo python scons/scons.py install

Installazione con supporto Postgis, Gdal e WMS

Se invece sono istallati [http://www.postgis.org/ Postgis], le [http://it.wikipedia.org/wiki/GDAL librerie gdal] e si ha intenzione di usare il supporto [http://it.wikipedia.org/wiki/Web_Map_Service 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 per applicare le modifiche:

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 d'errore l'installazione è andata bene e si può passare al capitolo successivo.

Esempio con Mapnik

Di seguito viene mostrato un primo esempio di utilizzo di Mapnik.

  1. Scaricare a [http://mappinghacks.com/data/world_borders.zip questo indirizzo] un dataset vettoriale in formato [http://it.wikipedia.org/wiki/Shapefile ESRI Shapefile], decomprimerlo e salvarlo all'interno della propria Home.

  2. Scrivere uno script in python che punti a questo file ne definisca lo stile e l'estensione geografica. Per fare questo salvare il seguente script all'interno della propria Home in un file chiamato mappa.py. L'estensione geografica dello script rende l'area relativa al mediterraneo. Modificare le coordinate se si desidera rendere un'altra zona geografica, non dimenticando di modificare il percorso allo shapefile:

    from mapnik import *
    
    # Definizione delle dimensioni della mappa
    # e il sistema di riferimento geografico (latlon WGS84)
    m = Map(500,300,"+proj=latlong +datum=WGS84")
    
    # Colore dello sfondo
    m.background = Color('steelblue')
    
    # Creazione di uno stile
    s = Style()
    
    # Definizione dello stile, possono esserci una o più regole.  
    # Una regola 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)
    
    # Aggiunta dello stile alla mappa e definizione di un nome 
    # da usare nella definizione del livello
    m.append_style('My Style',s)
    
    # Vengono definiti i nomi di uno o più livelli 
    lyr = Layer('world')
    
    # Percorso allo shapefile.
    # Lo shapefile deve essere indicato senza esenzione!
    lyr.datasource = Shapefile(file='/percorso/ai/dati/world_borders')
    
    # Aggiunta dello stile al livello
    lyr.styles.append('My Style')
    
    # Aggiunta del livello della mappa
    m.layers.append(lyr)
    
    # Definizione dell'estensione geografica, le due coppie di coordinate 
    # corrispondono ai due angoli basso-sinistro e alto-destro della mappa
    bbox = Envelope(Coord(6, 34), Coord(22, 48)) 
    
    # Ingrandimento all'estensione geografica definita prima
    m.zoom_to_box(bbox)
    
    # Conversione la mappa m nel file italia.png con formato .png
    render_to_file(m,'italia.png', 'png')
  3. Una volta salvato il file bisogna impostare i [:AmministrazioneSistema/PermessiFile:permessi] d'esecuzione, digitando all'interno di una finestra di terminale il seguente comando:

    chmod +x ~/mappa.py
  4. Avviare lo script lanciando il seguente comando all'interno di una finestra di terminale:

    ./mappa.py
  5. Il risultato dovrebbe essere il file italia.png che rappresenta la mappa.

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 è necessario [:AmministrazioneSistema/InstallareProgrammi:installare] i pacchetti qt4-dev-tools e libqt4-dev.

  1. Entrare della cartella che contiene il Viewer:

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

    INCLUDEPATH += /usr/local/include/mapnik
    INCLUDEPATH += /usr/include/boost-1_34_1
    INCLUDEPATH += /usr/include/freetype2
    INCLUDEPATH += .

    Modificare anche la riga unix.LIBS come segue

    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-Bold.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-BoldOblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-ExtraLight.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-Oblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSans.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansCondensed-Bold.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansCondensed-BoldOblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansCondensed-Oblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansCondensed.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono-Bold.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono-BoldOblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono-Oblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerif-Bold.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerif-BoldOblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerif-Oblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerif.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerifCondensed-Bold.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerifCondensed-BoldOblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerifCondensed-Oblique.ttf");
       freetype_engine::register_font("/usr/local/lib/mapnik/fonts/DejaVuSerifCondensed.ttf");
  4. Compilare e installare il Viewer digitando all'interno di una finestra di terminale i seguenti comandi:

    /usr/share/qt4/bin/qmake -makefile
    make

Avviare il viewer

Sempre dalla medesima 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