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 bokmål · 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.