FR:User:Petrovsk/Update a postgis database

From OpenStreetMap Wiki
Jump to: navigation, search
Langues disponibles — Osmosis/Update a PostGIS database
Afrikaans Alemannisch aragonés asturianu azərbaycanca Bahasa Indonesia Bahasa Melayu Bân-lâm-gú Basa Jawa Baso Minangkabau bosanski brezhoneg català čeština dansk Deutsch eesti English español Esperanto estremeñu euskara français Frysk Gaeilge Gàidhlig galego Hausa hrvatski Igbo interlingua Interlingue isiXhosa isiZulu íslenska italiano Kiswahili Kreyòl ayisyen kréyòl gwadloupéyen kurdî latviešu Lëtzebuergesch lietuvių magyar Malagasy Malti Nederlands Nedersaksies norsk norsk nynorsk occitan Oromoo oʻzbekcha/ўзбекча Plattdüütsch polski português português do Brasil română shqip slovenčina slovenščina Soomaaliga suomi svenska Tiếng Việt Türkçe Vahcuengh vèneto Wolof Yorùbá Zazaki српски / srpski беларуская български қазақша македонски монгол русский тоҷикӣ українська Ελληνικά Հայերեն ქართული नेपाली मराठी हिन्दी অসমীয়া বাংলা ਪੰਜਾਬੀ ગુજરાતી ଓଡ଼ିଆ தமிழ் తెలుగు ಕನ್ನಡ മലയാളം සිංහල ไทย မြန်မာဘာသာ ລາວ ភាសាខ្មែរ ⵜⴰⵎⴰⵣⵉⵖⵜ አማርኛ 한국어 日本語 中文(简体)‎ 吴语 粵語 中文(繁體)‎ ייִדיש עברית اردو العربية پښتو سنڌي فارسی ދިވެހިބަސް

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.