FR:User:Petrovsk/Update a postgis database

From OpenStreetMap Wiki
Jump to navigation Jump to search

Pour faire simple, il y a deux méthodes pour maintenir une base à jour : maintenir un fichier OSM à jour et l'importer dans PostGIS en écrasant l'ancienne base, ou bien ajouter uniquement les changements à la base. Cette dernière solution est la plus élégante et la moins gourmande en ressources, c'est celle que je vais décrire ci-dessous.
Osmosis va créer le fichier contenant les changements, osm2pgsql va l'appliquer à la base.
Tout d'abord, nous devons mettre en place et initialiser le système de replication avec osmosis.

cd ~/OSM/base_locale
osmosis --read-change-interval-init initialDate=2010-12-06_01:59:00

initialDate étant la date et l'heure de l'extrait original (extrait européen pour ma part).
Modifier le fichier configuration.txt pour l'adapter aux besoins. Je me contente d'une mise à jour quotidienne, elle est horaire par défaut. Voir cette page pour plus détails.
Une fois l'initialisation réalisée, nous allons demander à osmosis de récupérer les changements depuis la date de référence. Il crée un fichier mondial, c'est osm2pgsql qui se chargera de n'appliquer que la zone qui nous intéresse par l'intermédiaire d'une bounding-box.

En version longue :

osmosis --read-replication-interval ./ --simplify-change --write-xml-change changes.osc.gz
osm2pgsql --slim --database <nom_de_la_base> --bbox W,S,E,N --append --cache <taille_du_cache_en_mo> changes.osc.gz

La même chose en plus court et avec un exemple concret :

cd ~/OSM/base_locale
osmosis --rci ./ --simc --wxc changes.osc.gz
osm2pgsql -s -d LR+ -b 0.9877,42.124,4.851,44.971 -a -C 1024 changes.osc.gz

La taille du cache est à ajuster selon la quantité de RAM disponible, plus il y en a, plus c'est rapide.