Pour certains besoins, il est parfois nécessaire de mettre en place son propre serveur OpenStreetMap, comme par exemple pour des applications métiers, afin d’avoir le serveur en local, ne pas surcharger les serveurs OSM publiques, réduire le temps de latence, travailler sur des emprises définies (continent, pays, région, et même zone personnalisée).
Mon serveur étant sous ubuntu server, je ne m’intéresserai ici qu’à ce cas de figure, mais il y a fort à parier que les paquets soient accessibles sous d’autres distributions.
Présentation
Le but est de mettre en place un architecture permettant d’intégrer les exports d’OSM (dumps & diffs), afin de fournir un service de cartographie.
Le service devra mettre à disposition de leaflet des tuiles cartographiques.
Voici le schéma complet de l’infrastructure d’OpenStreetMap :
Les principaux services nécessaires sont les suivants :
Osmosis permet la gestion des données, import/export/comparaison des dumps et diffs des données OSM.
Osm2pgsql permet la conversion des données OSM afin de les importer dans la base PostgreSQL.
Mapnik permet de faire le rendu des tuiles en utilisant des styles personnalisables.
Mod_tile effectue la gestion des tuiles et du cache. Si elle existe et est à jour, il la sert au serveur web, si elle est obsolète ou n’existe pas, il va la demander à Mapnik.
Renderd gère la priorisation des demandes de tuiles de Mod_tile à Mapnik en prenant en compte la charge serveur.
OSM Bright permet de gérer les styles des cartes.
Recommandations matérielles
Pour un rendu important, comme au niveau planète, il faut prévoir une infrastructure matérielle conséquente :
- au moins 24 GB de RAM,
- avoir la DB sur des disques SSD,
- 512 GB d’espace disque si les données OSM sont mises à jour,
- 256 GB d’espace disque si les données OSM ne sont pas mises à jour, mais réimportées via l’option -drop,
- Concernant le processeur, je n’ai pas trouvé d’info.
Ceci sans faire allusion au RAID et besoins de sauvegardes.
Installations
Les commandes sont données pour un système avec ubuntu server 14.04
Installation des dépendances
sudo apt-get install libboost-all-dev subversion git-core tar unzip wget bzip2 build-essential autoconf libtool libxml2-dev libgeos-dev libgeos++-dev libpq-dev libbz2-dev libproj-dev munin-node munin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev liblua5.2-dev ttf-unifont lua5.1 liblua5.1-dev node-carto
Installation de PostgreSQL & PostGIS
sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.3-postgis-2.1
Installation d’osm2pgsql
mkdir ~/src cd ~/src git clone git://github.com/openstreetmap/osm2pgsql.git cd osm2pgsql ./autogen.sh ./configure make sudo make install
Installation de Mapnik
cd ~/src git clone git://github.com/mapnik/mapnik cd mapnik git branch 2.2 origin/2.2.x git checkout 2.2 python scons/scons.py configure INPUT_PLUGINS=all OPTIMIZATION=3 SYSTEM_FONTS=/usr/share/fonts/truetype/ make sudo make install sudo ldconfig
Installation de mod_tile & renderd
cd ~/src git clone git://github.com/openstreetmap/mod_tile.git cd mod_tile ./autogen.sh ./configure make sudo make install sudo make install-mod_tile sudo ldconfig
Notes
Si les mises à jour de la base de données ne sont pas très fréquentes (<2/mois), il semble préférable d’utiliser le dump complet plutôt que les diffs.
Téléchargements:
Planet OSM – Pour télécharger les données au niveau global
Geofabrik – Pour télécharger les données au niveau désiré (Continent, Pays, Région)
Dernier fichier OSM – France (3 GB)
Sources :
Switch2OSM.org
Pages persos d’Adrien/Créer son propre miroir des données OpenStreetMap et un serveur de rendu des tuiles, avec Debian Wheezy
Makina Corpus/Un serveur OpenStreetMap pour votre ville
Wiki OSM/Automatiser la mise à jour quotidienne