qGIS/OpenLayers Plugin

OpenLayers Plugin est une librairie python qui fournie des couches de fond de plan à qGIS.
Il permet d’utiliser des couches Google Maps, Bing, OSM, …
Il n’y a pas de configuration nécessaire, l’utilisation se fait par simple ajout de la couche.
L’usage est donc assez simple.
En revanche, dans mon cas, si l’on possède son propre serveur OpenStreetMap, il est intéressant et utile de changer l’URI du serveur de tuiles OSM public par le sien.
Pour ce faire, rien de plus simple, il suffit d’éditer le fichier html relatif à la couche en question.
Prenons l’exemple de « OpenStreetMap », il faut éditer le fichier ./.qgis2/python/plugins/openlayers_plugin/weblayers/html/osm.html
Il suffit de modifier la ligne 34 :

"OpenStreetMap",
          "http://tile.openstreetmap.org/${z}/${x}/${y}.png",

avec votre URI personnalisée, par exemple :

"OpenStreetMap",
          "http://carto.rmaziere.fr/${z}/${x}/${y}.png",

Cette modification est prise en compte lors de l’ajout des nouvelles couches dans des projets qGIS.
Si des projets qGIS sont déjà existants, il faut supprimer les couches en question et les recharger.

Serveur/OpenStreetMap sous Ubuntu 14.04

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 :

Schéma Infrastructure OSM
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