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 28 e 68 (in 40 versioni)
Versione 28 del 14/10/2008 16.25.53
Dimensione: 6601
Commento:
Versione 68 del 16/03/2024 16.35.20
Dimensione: 3937
Autore: tommaso-db
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.

  1. Scaricare da questo indirizzo un dataset vettoriale in formato ESRI Shapefile e decomprimerlo all'interno della propria Home.

  2. 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.

  3. 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.

Ulteriori risorse


CategoryProgrammazione CategoryDaRevisionare