RU:Minutely Mapnik

From OpenStreetMap Wiki
Jump to: navigation, search
Доступные языки — Minutely Mapnik
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 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 беларуская български қазақша македонски монгол русский тоҷикӣ українська Ελληνικά Հայերեն ქართული नेपाली मराठी हिन्दी অসমীয়া বাংলা ਪੰਜਾਬੀ ગુજરાતી ଓଡ଼ିଆ தமிழ் తెలుగు ಕನ್ನಡ മലയാളം සිංහල ไทย မြန်မာဘာသာ ລາວ ភាសាខ្មែរ ⵜⴰⵎⴰⵣⵉⵖⵜ አማርኛ 한국어 日本語 中文(简体)‎ 吴语 粵語 中文(繁體)‎ ייִדיש עברית اردو العربية پښتو سنڌي فارسی ދިވެހިބަސް

Minutely Mapnik (ежеминутный Mapnik) это концепция поддержки вашей базы данных PostgreSQL синхронизированной с изменениями, производимыми на сервере OpenStreetMap. Изменения, производящиеся в OpenStreetMap с пользовательских аккаунтов записываются в "файлы репликаций" на каждую минуту и каждый час. Java приложение Osmosis используется для автоматизации процесса скачивания нужных "файлов репликаций", которые используются для обновления данных в вашей базе. Затем используется приложение Osm2pgsql, которое импортирует эти изменения в вашу базу данных PostgreSQL.

Процедура поддержки личной базы данных в актуальном состоянии изменилась 7 января 2010. Данная страница отражает необходимые процедуры после этой даты. Чтобы ознакомиться со старой процедурой, смотрите Minutely_Mapnik_Pre2010.

Требования

Для использования "файлов репликаций" вам нужны инструменты Osmosis и Osm2pgsql. Osm2pgsql у вас уже должен быть, поскольку вы его использовали для начального импорта данных OpenStreetMap в базу данных PostgreSQL. Неплохо бы убедиться, что у вас имеются последние версии обоих инструментов. Вам также нужно знать дату и время снимка данных OpenStreetMap, который вы изначально импортировали в свою базу данных. Ну, и последнее требование заключается в том, чтобы вы импортировали изначальные данные с аргументом --slim для Osm2pgsql.

Начальная установка

Инициализация

Сначала зададим переменную окружения, содержащую путь к рабочей директории, которую будет использовать Osmosis.

export WORKDIR_OSM=$HOME/.osmosis

Если вы используете разные окружения или не хотите использовать переменные окружения, просто заменяйте $WORKDIR_OSM в выражениях ниже на полный путь.


Подготовим систему для работы с "файлами репликаций". Osmosis имеет встроенный функционал для этой цели:

mkdir $WORKDIR_OSM
osmosis --read-replication-interval-init workingDirectory=$WORKDIR_OSM

Аргумент workingDirectory выше указывает желаемую директорию, которую Osmosis создаст для файлов, необходимых для поддержки ваших данных в актуальном состоянии. В данном примере он положит их в скрытую директорию в домашней папке пользователя. Когда вы всё настроите и запустите, вам, скорее всего, больше не понадобится обращаться к этим файлам, так что такое их расположение вполне уместно.

После того, как команда выше отработает, workingDirectory которую вы указали, наполнится двумя файлами: configuration.txt и download.lock. configuration.txt будет разобран ниже. Файл download.lock используется для проверки того, что только один процесс в данный момент пытается получить "файлы репликаций".

Задание интервала репликаций

Теперь нам надо указать, насколько далеко мы вернёмся в прошлое, чтобы собрать все изменения, произошедшие на сервере OpenStreetMap. Именно здесь нам понадобятся дата и время нашего снимка, который мы использовали для изначального импорта. Есть несколько способов задать эту спецификацию, а в результате мы получим файл с именем state.txt, который будет создан в $WORKDIR_OSM. ВНИМАНИЕ: Дату и время надо указывать в UTC, и вычитать из него час или два, чтобы наверняка не упустить ни одного изменения.

Webpage Tool with Browser

Можете использовать Peter Körner's website tool. После ввода даты и времени, кликните "fetch state-file" и создайте файл с именем state.txt с содержимым, появившемся на странице, в размещении $WORKDIR_OSM.

Webpage Tool with API

Как вариант, укажите дату и время в командной строке, и загрузите всё прямо в файл state.txt:

 wget http://toolserver.org/~mazder/replicate-sequences/?2010-01-01T10:00:00Z -O $WORKDIR_OSM/state.txt

Выбор интервала файла репликаций

По умолчанию, osmosis будет получать диффы минутных репликаций, and at most one hours worth of them. Если желаете иначе, поправьте $WORKDIR_OSM/configuration.txt и замените фразу "minute-replicate" в aseUrl на "hour-replicate". If you have lots to catch up, you can even set the value maxInterval=3600 higher.

Получение данных репликации

Теперь мы готовы получить и импортировать изменения данных, которые произошли на сервере OpenStreetMap с момента нашего изначального импорта.

osmosis --read-replication-interval workingDirectory=$WORKDIR_OSM --simplify-change  --write-xml-change changes.osc.gz

Аргумент --simplify-change указывает Osmosis включать только последнее изменение, произведенное с каждой "сушностью" в changes.osc.gz. Если в загруженных "файлах репликаций" "сущность" изменена больше одного раза, то без этого аргумента она может задублироваться в вашей базе данных.

Импорт данных репликации

Теперь файл changes.osc.gz может быть импортирован в базу данных. Вам нужно будет указать часть арументов специально для вашей настройки. Вы можете использовать некоторые аргументы, которые были при изначальном импорте, но убедитесь, что добавили аргумент --append и указали файл changes.osc.gz. Без аргумента --append ваша база будет очищена перед импортом изменений.

osm2pgsql --append [мои собственные аргументы] changes.osc.gz


Как вариант, вы можете скомбинировать два предыдущих шага, перенаправив вывод osmosis в osm2pgsql:

osmosis --read-replication-interval workingDirectory=$WORKDIR_OSM --simplify-change - \
 --write-xml-change | osm2pgsql --append [мои собственные аргументы] -

Возможные проблемы

Увеличение размера базы данных

Импортирование в базу данных, содержащую выгрузку части данных OSM вместо целой планеты (используя osm2pgsql с параметром --bbox), может вызвать значительное увеличение размера базы данных. Выходом является удаление линий и отношений, которые относятся к точкам, не описанным в базе данных here.

Смотрите также