Installation de PostGIS/Osmosis/Mapnik pour rendu de tiles
Mis à jour le 07/05/2011: utilisation de Debian Squeeze (ie. beaucoup moins de composants à compiler)
Pré-requis
Debian Squeeze (6.0)
Apache2
Postgresql-8.3
OpenJDK 6
Subversion
20 Gb de libre sur le disque (pour une petite zone !)
Un répertoire de travail ~/osm/
aptitude -R install subversion bzip2 unzip python build-essential aptitude -R install apache2 apache2-mpm-prefork aptitude -R install postgresql-8.4 aptitude -R install openjdk-6-jdk
Base PostGIS
Installation du module PostGIS
#> aptitude -R install postgresql-8.4-postgis
Tuning de la base de données
1 2 3 |
|
#> /etc/init.d/postgresql restart
Erreurs et solutions
Après ces changement de paramètres de PostgreSQL, vous risquez d’avoir avez un message d’erreur signalant qu’il n’est pas possible d’allouer autant de mémoire partagé sur votre système. Vous pouvez corriger cela avec la commande suivante (valable jusqu’au prochain redémarrage de la machine)
#> sysctl -w kernel.shmmax=268435456
Si vous souhaitez que le réglage soit persistant, il faut l’ajouter dans le fichier /etc/sysctl.conf
1
|
|
Création d’une base PostGIS
Nous allons créer une base de données de type PostGIS :
Utilisateur : tilegen
Password : tilegen
Base de données : gis
#> su - postgres $> createuser -P tilegen $> createdb -E UTF8 -O tilegen gis $> createlang plpgsql gis $> psql -d gis -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql $> psql -d gis -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql $> echo “ALTER TABLE geometry_columns OWNER TO tilegen; ALTER TABLE spatial_ref_sys OWNER TO tilegen;” | psql -d gis
OSM2Pgsql
#> aptitude -R install osm2pgsql
Osmosis
Osmosis est un outil en ligne de commande qui permet de traiter les données d’OpenStreetMap :
Génération de dumps depuis la base
Chargement de dumps dans une base locale
Création de “diff” en utilisant l’historique de la base
Application de “diff” à une base lcoale
Comparaison de fichiers .osm
Réorganisation des données présentes dans un fichier .osm
Extraction des données d’unz zone ou d’un polygone
Pour installer la dernière version :
#> aptitude -R install osmosis
$> osmosis -v
6 mars 2009 23:07:39 com.bretth.osmosis.core.Osmosis run
INFO: Osmosis Version 0.34
[...]
Import des données
Import initial
Récupérer un fichier depuis http://download.geofabrik.de/osm/
$> cd ~/osm/
$> mkdir data-import
$> cd data-import
$> wget http://download.geofabrik.de/osm/europe/france/pays-de-la-loire.osm.bz2
Création (filtrage ?) d’un fichier .osm pour la zone qui nous intéresse (ici, Nantes)
$> osmosis --read-xml pays-de-la-loire.osm.bz2 --bounding-box left=-2.30 top=46.90 right=-0.90 top=47.70 --write-xml nantes.osm
Import de la structure et des données initiales :
$> osm2pgsql -m -d gis -H localhost -U tilegen -W nantes.osm
Tenir sa base à jour
Créer une configuration initiale pour la mise à jour via les “diff” par Osmosis : (le paramètre initialDate dépend évidemment de leur de votre dump initial - heure fournie par Geofabrik dans notre cas)
$> cd ~/osm/
$> cd data-import
$> osmosis --read-change-interval-init initialDate=2011-05-06_07:00:00
Nous allons créer un script replicate_osm_file.sh. Il sera déclenché toutes les heures par crontab. Son rôles : déclencher Osmosis afin appliquer les “diff” au fichier .osm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Il suffit ensuite de relancer un import de la base avec ce fichier mis à jour :
$> cd ~/osm/
$> osm2pgsql -m -d gis -H localhost -U tilegen -W nantes.osm
Coastlines Shapefiles
$> cd ~/osm/
$> wget http://tile.openstreetmap.org/world_boundaries-spherical.tgz # (50M)
$> wget http://tile.openstreetmap.org/processed_p.tar.bz2 # (358M)
$> wget http://tile.openstreetmap.org/shoreline_300.tar.bz2 # (46M)
$> wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/10m-populated-places.zip # (1.5 MB)
$> wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/110m-admin-0-boundary-lines.zip # (38 KB)
$> tar xzf world_boundaries-spherical.tgz
$> tar xjf processed_p.tar.bz2 -C world_boundaries
$> tar xjf shoreline_300.tar.bz2 -C world_boundaries
$> unzip -q 10m-populated-places.zip -d world_boundaries
$> unzip -q 110m-admin-0-boundary-lines.zip -d world_boundaries
Mapnik
#> aptitude -R install mapnik-utils python-mapnik
Récupération des outils et fichiers de configuration Mapnik d’OpenStreetMap
$> cd ~/osm/
$> svn co http://svn.openstreetmap.org/applications/rendering/mapnik osm-mapnik
$> cd osm-mapnik
On définit nos options de configurations et on génère notre fichier osm.xml :
$> ./generate_xml.py osm.xml my_osm.xml --host localhost --user 'tilegen' --dbname gis --symbols ./symbols/ --world_boundaries ~/osm/world_boundaries --port 5432 --password 'tilegen'
Génération d’un fichier “image.png” d’exemple (centrée sur UK par défaut) :
$> MAPNIK_MAP_FILE=my_osm.xml ./generate_image.py
Mod_Tile et Renderd
Installation des headers pour la compilation du module Apache
#> aptitude -R install apache2-prefork-dev libmapnik-dev
Récupération de mod_tile depuis le SVN
$> cd ~/osm/
$> svn co http://svn.openstreetmap.org/applications/utils/mod_tile
$> cd mod_tile
Edition de la configuration :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Voir la configuration détaillée de renderd
Compilation et installation
$> make
#> make install
Le module mod_tile est copié dans le répertoire des modules d’Apache.
Il faut ensuite lancer le daemon qui sera en charge de recevoir les requetes de ce module. C’est ce daemon qui va dialoguer avec le système de rendu Mapnik. Pour le lancer :
$> cd ~/osm/mod_tile
$> ./renderd -f
Apache
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Voir la configuration détaillée de mod_tile
Création des répertoires :
$> mkdir -p ~/osm/www/tiles
$> chmod -R 777 ~/osm/www
Activation du site :
#> a2ensite osm-tiles
#> /etc/init.d/apache2 reload
Création d’une page HTML utilisant les tuiles générées :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|