Introduzione
Questa guida contiene le istruzioni necessarie per l'installazione di Mapnik è un uno strumento utile alla realizzazione di mappe a partire da dati vettoriali e raster.
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
Per soddisfare le dipendenze necessarie per la compilazione è sufficiente digitare il seguente comando:
sudo apt-get 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++ 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
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].
Creare una cartella denominata src all'interno della propria Home, digitando all'interno di una finestra di terminale il seguente comando:
mkdir ~/src
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
Aprire una console di python digitando all'interno di una finestra di terminale il seguente comando:
python
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.
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.
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')
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
Avviare lo script lanciando il seguente comando all'interno di una finestra di terminale:
./mappa.py
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
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.
Entrare della cartella che contiene il Viewer:
cd ~/src/mapnik/demo/viewer
È necessario adattare alcuni file al proprio sistema, quindi aprire il file viewer.pro con un [:Ufficio/EditorDiTesto:editor di testo] e modificare i percorsi come segue:
INCLUDEPATH += /usr/local/include/mapnik INCLUDEPATH += /usr/include/boost-1_34_1 INCLUDEPATH += /usr/include/freetype2 INCLUDEPATH += .
Modificare anche questa riga nel seguente modo:
unix:LIBS += -L/usr/local/lib -lmapnik
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");
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
[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]