Dimensione: 6601
Commento:
|
← Versione 68 del 16/03/2024 16.35.20 ⇥
Dimensione: 3937
Commento: Corretti / rimossi vecchi link
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
## page was renamed from Mapnik ## page was renamed from TommasoDiBucchianico/Prove2 |
|
Linea 4: | Linea 6: |
[[BR]] [[Indice()]] |
<<BR>> <<Indice>> |
Linea 9: | Linea 11: |
Mapnik è un toolkit (insieme di strumenti) per la realizzazione di mappe a partire da dati vettoriali e raster. E' scritto in C++ e utilizza Python bindings che supportano uno sviluppo semplice e veloce delle mappe. Grazie all'ottima documentazione e ai numerosi 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 ottime mappe a livello desktop. | Questa guida contiene le istruzioni necessarie per l'installazione di '''Mapnik''', uno strumento utile alla realizzazione di mappe a partire da dati vettoriali e raster. '''Mapnik''' è il renderer ufficiale del progetto di cartografia libera [[http://www.openstreetmap.org/|Openstreetmap]]. |
Linea 11: | Linea 14: |
= Installazione da Repository (Ubuntu 8.04) = | = Preparativi = |
Linea 13: | Linea 16: |
Per Ubuntu 8.04 è presente nei repository Universe il pacchetto ''python-mapnik'' che contiene Mapnik 0.4 e può essere comodamente installato tramire apt-get. | Abilitare i [[Repository/Componenti|componenti]] '''universe''' e '''multiverse''' dei [[Repository|repository]] ufficiali. |
Linea 15: | Linea 18: |
{{{ 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 = |
Linea 20: | Linea 20: |
= Installazione tramite sorgenti (Ubuntu 8.04) = | [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto ''python-mapnik''. |
Linea 22: | Linea 22: |
== Installazione dipendenze == * Innanzitutto vanno aggiornati i pacchetti già installati {{{ aptitude update aptitude upgrade }}} |
= Esempio di utilizzo = |
Linea 29: | Linea 24: |
* Installazione delle dipendenze boost richieste tramite [:AmministrazioneSistema/Aptitude:Aptitude]: | Di seguito viene mostrato un esempio di utilizzo di '''Mapnik'''. |
Linea 31: | Linea 26: |
{{{ 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 }}} |
0. Scaricare da [[https://public.opendatasoft.com/api/explore/v2.1/catalog/datasets/world-administrative-boundaries/exports/shp|questo indirizzo]] un ''dataset vettoriale'' in formato [[http://it.wikipedia.org/wiki/Shapefile|ESRI Shapefile]] e [[AmministrazioneSistema/FormatiDiCompressione#metodografico|decomprimerlo]] all'interno della propria '''Home'''. |
Linea 35: | Linea 28: |
* 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 {{{ 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 GIS (Vedi in proposito anche la guida [:UbuntuGis:UbuntuGis]) {{{ sudo aptitude install libgdal-dev python2.5-gdal postgresql-8.3-postgis postgresql-8.3 postgresql-server-dev-8.3 postgresql-contrib-8.3 }}} |
0. Aprire un [[Ufficio/EditorDiTesto|editor di testo]] e incollare al suo interno il seguente testo: {{{ #!python #!/usr/bin/env python |
Linea 48: | Linea 32: |
from mapnik import * | |
Linea 49: | Linea 34: |
== Compilazione e installazione == * Se non si sono installate Postgis, Gdal e non si ha intenzione di usare Mapnik come server WMS è suffiente dare i seguenti comandi {{{ mkdir ~/src cd ~/src svn co svn://svn.mapnik.org/trunk mapnik cd mapnik python scons/scons.py sudo python scons/scons.py install }}} * Se invece si sono istallati Postgis, Gdal e si ha intenzione di usare il supporto WMS è necessario specificare il percorso alle librerie necessarie. {{{ 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 }}} ||<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'''. || |
# Definizione delle dimensioni della mappa # e il sistema di riferimento geografico (latlon WGS84) m = Map(500,300,"+proj=latlong +datum=WGS84") |
Linea 66: | Linea 38: |
# Colore dello sfondo m.background = Color('steelblue') |
|
Linea 67: | Linea 41: |
* Infine dare i seguente comando {{{ sudo ldconfig }}} |
# Creazione di uno stile s = Style() |
Linea 72: | Linea 44: |
# Definizione dello stile. Uno stile puo' comprendere una o piu' regole (Rule). # Una regola puo' comprendere un filtro, la definizione di scala minima e massima, # uno o piu' Symbolizers (PolygonSymbolizer e LineSymbolizer) r=Rule() |
|
Linea 73: | Linea 49: |
= Testare se l'installazione è andata a buon fine = Aprire una console di python oppure dare nel terminale il comando {{{ python }}} adesso all'interno di python dare il comando {{{ import mapnik }}} Se non si riceve nessun output l'installazione dovrebbe essere andata bene e si può passare al [http://trac.mapnik.org/wiki/GettingStarted tutorial] |
# Colore di riempimento dei poligoni r.symbols.append(PolygonSymbolizer(Color('#f2eff9'))) |
Linea 84: | Linea 52: |
= 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 == Compilazione è installazione == Il Viewer è incluso nell'installazione di Mapnik ma dev'essere compilato a parte. Per la compilazione è necessario Qt4 (compreso il pacchtto dev) e qmake. * Entrare della cartella che contiene il Viewer (questo comando è valido solo per l'installazione tramite sorgenti illustrata sopra. Se si è installato dai repository il viewer è in un'altra posizione) {{{ 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 {{{ INCLUDEPATH += /usr/local/include/mapnik INCLUDEPATH += /usr/include/boost-1_34_1 INCLUDEPATH += /usr/include/freetype2 INCLUDEPATH += . }}} * Modificare la riga unix.LIBS come segue {{{ unix:LIBS += -L/usr/local/lib -lmapnik }}} |
# Colore e spessore delle linee di contorno r.symbols.append(LineSymbolizer(Color('rgb(50%,50%,50%)'),0.1)) s.rules.append(r) |
Linea 110: | Linea 56: |
# Aggiunta dello stile alla mappa e definizione di un nome # da usare nella definizione del livello m.append_style('My Style',s) |
|
Linea 111: | Linea 60: |
* Modificare il file `main.cpp` con un qualsiasi [:Ufficio/EditorDiTesto:editor di testo] e specificando il percorso ai font a ai plugin di Mapnik come segue {{{ 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"); }}} * Compilare e installare il Viewer {{{ /usr/bin/qmake-qt4 -makefile make }}} == Lanciare il Viewer == Restando nella stessa directory dare il seguente comando {{{ ./viewer }}} * Per visualizzare un mapfile lanciare il viewer aggiungendo il percorso dello stesso {{{ ./viewer /percorso/mapfile.xml }}} |
# Vengono definiti i nomi di uno o piu' livelli (Layer) lyr = Layer('world') # Percorso allo shapefile. # Lo shapefile deve essere indicato senza estensione! 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 della mappa m nel file italia.png con formato .png render_to_file(m,'italia.png', 'png') exit() }}} Assegnare il nome `mappa.py` al file e salvarlo all'interno della propria '''Home'''. L'estensione geografica utilizzata dallo script si riferisce all'area mediterranea, è possibile modificare le coordinate se si desidera rendere un'altra zona geografica. Non dimenticare di modificare il percorso al file ESRI. 0. Una volta salvato il file è necessario impostare i [[AmministrazioneSistema/PermessiFile|permessi]] d'esecuzione e avviare lo script, digitando all'interno di una finestra di terminale i seguenti comandi: {{{ cd ~ chmod +x ~/mappa.py ./mappa.py }}} Il risultato dovrebbe essere il file `~/italia.png` contenente la mappa. |
Linea 135: | Linea 93: |
* [http://trac.mapnik.org/ wiki di Mapnik] * [http://mike.teczno.com/notes/mapnik.html consigli stilistici] ## da questo punto in poi non modificare! |
* [[http://mapnik.org/documentation/|Documentazione ufficiale]] * [[UbuntuGis|Guida all'installazione di altri strumenti GIS]] * [[http://mike.teczno.com/notes/mapnik.html|Map Design: consigli utili]] |
Linea 140: | Linea 97: |
CategoryHomepage | CategoryProgrammazione CategoryDaRevisionare |
Introduzione
Questa guida contiene le istruzioni necessarie per l'installazione di Mapnik, uno strumento utile alla realizzazione di mappe a partire da dati vettoriali e raster. Mapnik è il renderer ufficiale del progetto di cartografia libera Openstreetmap.
Preparativi
Abilitare i componenti universe e multiverse dei repository ufficiali.
Installazione
Installare il pacchetto python-mapnik.
Esempio di utilizzo
Di seguito viene mostrato un esempio di utilizzo di Mapnik.
Scaricare da questo indirizzo un dataset vettoriale in formato ESRI Shapefile e decomprimerlo all'interno della propria Home.
Aprire un editor di testo e incollare al suo interno il seguente testo:
1 #!/usr/bin/env python 2 3 from mapnik import * 4 5 # Definizione delle dimensioni della mappa 6 # e il sistema di riferimento geografico (latlon WGS84) 7 m = Map(500,300,"+proj=latlong +datum=WGS84") 8 9 # Colore dello sfondo 10 m.background = Color('steelblue') 11 12 # Creazione di uno stile 13 s = Style() 14 15 # Definizione dello stile. Uno stile puo' comprendere una o piu' regole (Rule). 16 # Una regola puo' comprendere un filtro, la definizione di scala minima e massima, 17 # uno o piu' Symbolizers (PolygonSymbolizer e LineSymbolizer) 18 r=Rule() 19 20 # Colore di riempimento dei poligoni 21 r.symbols.append(PolygonSymbolizer(Color('#f2eff9'))) 22 23 # Colore e spessore delle linee di contorno 24 r.symbols.append(LineSymbolizer(Color('rgb(50%,50%,50%)'),0.1)) 25 s.rules.append(r) 26 27 # Aggiunta dello stile alla mappa e definizione di un nome 28 # da usare nella definizione del livello 29 m.append_style('My Style',s) 30 31 # Vengono definiti i nomi di uno o piu' livelli (Layer) 32 lyr = Layer('world') 33 34 # Percorso allo shapefile. 35 # Lo shapefile deve essere indicato senza estensione! 36 lyr.datasource = Shapefile(file='/percorso/ai/dati/world_borders') 37 38 # Aggiunta dello stile al livello 39 lyr.styles.append('My Style') 40 41 # Aggiunta del livello della mappa 42 m.layers.append(lyr) 43 44 # Definizione dell'estensione geografica. Le due coppie di coordinate 45 # corrispondono ai due angoli basso-sinistro e alto-destro della mappa 46 bbox = Envelope(Coord(6, 34), Coord(22, 48)) 47 48 # Ingrandimento all'estensione geografica definita prima 49 m.zoom_to_box(bbox) 50 51 # Conversione della mappa m nel file italia.png con formato .png 52 render_to_file(m,'italia.png', 'png') 53 exit()
Assegnare il nome mappa.py al file e salvarlo all'interno della propria Home. L'estensione geografica utilizzata dallo script si riferisce all'area mediterranea, è possibile modificare le coordinate se si desidera rendere un'altra zona geografica. Non dimenticare di modificare il percorso al file ESRI.
Una volta salvato il file è necessario impostare i permessi d'esecuzione e avviare lo script, digitando all'interno di una finestra di terminale i seguenti comandi:
cd ~ chmod +x ~/mappa.py ./mappa.py
Il risultato dovrebbe essere il file ~/italia.png contenente la mappa.