RU:Osm2mp

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

Osm2mp — это скрипт на языке программирования Perl, написаный пользователем Liosha для преобразования данных OSM в польский формат (.mp). Файлы, полученные в результате конвертирования, поддерживают маршрутизацию.

Основные возможности

  • настраиваемый набор типов;
  • генерация роутингового графа;
  • поддержка отношений multipolygon и restriction;
  • обработка данных для совместимости с cgpsmapper (близкие узлы, самопересечения);
  • отчёт об обнаруженных ошибках в исходных данных.

В какие форматы можно преобразовать .mp-файлы

Полученный файл в Польском формате (.mp) можно сконвертировать в разные форматы для навигаторов:

Установка программы в среде Windows

Использование готовой сборки

Самым простым и быстрым вариантом сконвертирировать OSM файл является использование готовой сборки osm2mp:

Следует отметить что при использовании вышеупомянутых сборок надежность и производительность конвертирования не гарантируются.

Работа со сборкой производится в 3 простых шага.

  • Распакуйте содержимое одного из архивов в папку osm2mp, желательно в корневом каталоге
  • Поместите файл для конвертирования в папку osm2mp, переименовав его в RU-KB.osm
  • Запустите файл osm2mpGarmin32.bat и дождитесь окончания конвертирования (может занимать много времени для больших файлов)

После окончания конвертирования в папке появится файл map.mp, который и является файлом сконвертированной карты.

Ручная установка скрипта

Для запуска программы-скрипта osm2mp, вам понадобится установить ActivePerl для Windows. После установки ActivePerl обязательно надо установить некоторые модули. Проделаем это:

  1. Перейти по ссылке в SVN и скачать оттуда следующие файлы:
    garmin.yml, nodes-common.yml, nodes-garmin-custom.yml, ways-areas-common.yml, ways-areas-garmin-custom.yml, ways-lines-common.yml, ways-lines-garmin-custom.yml, ways-roads-common.yml, ways-roads-garmin.yml и сам скрипт osm2mp.pl
    в любое место, в одну папку на диске, (нажимаем правой кнопкой мышки на ссылку и выполняем команду "Сохранить объект как...").
    Примечание: для конвертирования для Навител, файлы navitel.yml, nodes-navitel.yml, ways-areas-navitel.yml, ways-lines-navitel.yml, ways-roads-navitel.yml взять тут. (Поскольку качать браузером по одному файлику из SVN могут только мазохисты, рекомендую использовать одну из программ-качалок для SVN, например, TortoiseSVN)
  1. Открыть файл garmin.yml редактором WordPad и дополнить значение переменной Name в секции [IMG ID] так: Name=[% mapname %] (Converted by Ваше_Имя). Это необходимо для того, чтобы при просмотре инфо конвертированной карты, отображалось имя того, кто выполнил конвертирование. (Ага, щас. Нет этого файла. Скорее всего, это надо делать в output-polish.yml - dimonster)
  2. Скачать и установить ActivePerl — http://www.activestate.com/activeperl/
  3. Выполнить Dos-команду \Perl\bin\ppm.bat. (в версии 5.14 в Пуске после установки появится ярлык "Perl Package Manager")
  4. В окрывшемся, через некоторое время, окне Perl Package Manager (PPM) выбрать в меню View команду All Packages
  5. найти в списке модуль Template-toolkit и выделить его
  6. В меню Action (или в контекстном меню по правому клику) выполнить команду Install Template-toolkit
  7. Таким же образом отметить для установки неустановленные по умолчанию в Вашей версии ActivePerl модули:
    • Config-Std ***,
    • Encode-Locale *,
    • File-Slurp **,
    • Geo-Openstreetmap-Parser **,
    • Getopt-Long *,
    • List-MoreUtils *,
    • Log-Any **,
    • Log-Any-Adapter **,
    • Match-Smart, (если Smart нет, то Match-Any, match-simple, match-simple-XS)
    • Math-Geometry-Planar-GPC-Polygon,
    • Math-Polygon,
    • Math-Polygon-Tree,
    • PerlIO-via-PrepareCP1251,
    • PerlIO-via-Unidecode,
    • Text-Unidecode,
    • Tree-R,
    • YAML,
      * в версии 5.14 уже установлены,
      ** необходимы для работы скрипта getbound.pl,
      *** предположительно, этот модуль тоже нужен)
  8. В меню File выполнить команду Run Marked Actions
  9. Выйти из PPM

Алэ цэ щэ, нажаль, нэ всэ :) В зависимости от версии ActivePerl может меняться содержимое и названия пакетов. Жизнь не стоит на месте. Поэтому на сегодня для версии ActivePerl 5.16.2 build 1602 необходимо скачать ещё несколько пакетов.

  1. Запустить "Командную строку" (Пуск-Выполнить-набрать слово cmd - Нажать ОК).
  2. В командной строке набарть cpan, нажать Ентер.
  3. Находясь в cpan (на экране видно строку cpan> ), набрать install Config::Std и нажать Ентер (не перепутайте прописные и строчные буквы). Если ругается про тесты - запустите notest install Config::Std.
  4. Находясь в cpan (на экране видно строку cpan> ), набрать install Template и нажать Ентер (не перепутайте прописные и строчные буквы). На вопросы установщика жать Ентер.
  5. Выйти из cpan (на экране после cpan> , набрать q и нажать Ентер)
  6. Запустить ppm и установить пакет Text-Unidecode
  7. Если есть проблемы с Class::Std (на свежих версиях отсутствуют), зайти на www.cpan.org, вбить в поиск Class::Std, скачать Class-Std-0.011.tar.gz, распаковать, выдрать файл Std.pm и закинуть его в c:\Perl\lib\Class\ (ибо установить через cpan не получается, а ppm это не находит)
  8. Установить через ppm ещё несколько пакетов (например, для 5.16.3 ActivePerl - YAML, Geo::Openstreetmap::Parser, Tree::R, Math::Polygon, Math::Geometry::Planar::GPC::Polygon, Math::Polygon::Tree, Data::Dump, PerlIO::via::Unidecode PerlIO::via::PrepareCP1251 остальные конкретные названия не помню :-( )

Если вы поставили что-то типа Strawberry Perl [1], то могут помочь волшебные строчки

  cpan -T -i Config::Std 
  cpan -i Template Text::Unidecode List::MoreUtils Encode::Locale Getopt::Long PerlIO::encoding  
  cpan -i YAML  Data::Dump  Geo::Shapefile::Writer Geo::Openstreetmap::Parser Tree::R Math::Polygon
  cpan -i PerlIO::via::Unidecode PerlIO::via::PrepareCP1251 Inline::C Math::Polygon::Tree

для getBounds - ещё

  cpan -i Log::Any Log::Any::Adapter

Внимание: под Windows крайне желательно использовать Perl из-под аккаунта с именем пользователя на латинице. Иначе могут возникать непредсказуемые ошибки, особенно при работе с CPAN.

Установка программы в среде Linux

OpenSuse

Загрузить скрипт и сопутствующие файлы:

 svn co https://github.com/liosha/osm2mp/trunk/ osm2mp


Примечание: для конвертирования для Навител, конфигурационные файлы взять тут.

При необходимости установить perl (в OpenSuse по умолчанию установлен)

Установить дополнительные модули

 su
 zypper in perl-YAML
 perl -MCPAN -e "install List::MoreUtils"
 perl -MCPAN -e "install Text::Unidecode"
 perl -MCPAN -e "install Data::Dump"
 perl -MCPAN -e "install Math::Polygon"
 perl -MCPAN -e "install Inline::MakeMaker"
 perl -MCPAN -e "install Math::Geometry::Planar::GPC::Polygon"
 perl -MCPAN -e "install Math::Polygon::Tree"
 perl -MCPAN -e "install Tree::R"
 perl -MCPAN -e "install Encode::Locale"
 perl -MCPAN -e "install Template::Context"
 perl -MCPAN -e "install Geo::Openstreetmap::Parser"

Gentoo

При необходимости установить perl, svn и yaml для perl

 emerge perl
 emerge subversion
 emerge dev-perl/yaml

Установить дополнительные модули perl

 perl -MCPAN -e "install List::MoreUtils"
 perl -MCPAN -e "install Text::Unidecode"
 perl -MCPAN -e "install Data::Dump"
 perl -MCPAN -e "install Math::Polygon"
 perl -MCPAN -e "install Inline::MakeMaker"
 perl -MCPAN -e "install Math::Geometry::Planar::GPC::Polygon"
 perl -MCPAN -e "install Math::Polygon::Tree"
 perl -MCPAN -e "install Tree::R"
 perl -MCPAN -e "install Encode::Locale"
 perl -MCPAN -e "install Template::Context"

Загрузить скрипт и сопутствующие файлы:

 svn co https://github.com/liosha/osm2mp/trunk osm2mp

Примечание: возможно, если версия YAML, установленная в системе, немного младше указанной в скрипте, придется поправить строчку "use YAML 0.72;" на установленную версию, например "use YAML 0.71;"

Примечание: для конвертирования для Навител, конфигурационные файлы взять тут.

Ubuntu 16.04

Проверено на версии от 2016.07.26

1. Установить из репозитариев библиотеки для perl и сопутствующий софт

 sudo apt-get install build-essential unzip libconfig-std-perl libyaml-perl libencode-locale-perl liblist-moreutils-perl libmatch-simple-perl libmath-polygon-perl liblocal-lib-perl libxml-parser-perl libtext-unidecode-perl libjson-perl libtemplate-perl

2. Запустить и настроить CPAN (без рута, библиотеки установятся в домашнем каталоге)

 cpan
 ...
 Would you like to configure as much as possible automatically? [yes] 
 ...
 What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib]
 ...
 Would you like me to append that to /home/user/.bashrc now? [yes]
 ...
 >exit

3. Перелогиниться, чтобы заново подхватился обновленный профиль с путями к библиотекам

4. Установить недостающие библиотеки через CPAN

 cpan -i Math::Polygon::Tree
 cpan -i Tree::R
 cpan -i Geo::Openstreetmap::Parser

4а. Необязательные библиотеки

 cpan -i PerlIO::via::PrepareCP1251

5. Загрузить и распаковать osm2mp

 wget https://github.com/liosha/osm2mp/archive/master.zip
 unzip master.zip

6. Проверить

 cd osm2mp-master
 wget http://data.gis-lab.info/osm_dump/dump/latest/RU-IN.osm.bz2
 bunzip2 RU-IN.osm.bz2
 ./osm2mp.pl -o ./result.mp ./RU-IN.osm

Установка в FreeBSD

В FreeBSD ковертер достепен для установки из исходных кодов и из портов.

Для установки их исходных кодов необходимо загрузить конвертер из хранилища https://github.com/liosha/osm2mp , а также установить или обновить perl и используемые конвертером perl-модули до требуемой версии.
Для установки из портов нужно перейти в директорию с портом (ports/converters/osm2mp) и установить порт, например так:
  #cd /usr/ports/converters/osm2mp
  #make
  #make install

Настройка файла poly.cfg

Формат строки, описывающей роутинговую линию

<key> <value> r <lcode>,<prior> <minlvl> <maxlvl> <speed>,<class>,<oneway>,<pay>,<a1>,<a2>,<a3>,<a4>,<a5>,<a6>,<a7>,<a8>

где:

Аргумент Что обозначает Возможные значения
<key> Ключ тега
<value> Значение тега
r Тип, в который будет преобразован объект r — роутинговая полилиния
p — полигон (внимание! это значение не для роутинговой полилинии)
l — линия ??? (внимание! это значение не для роутинговой полилинии)
s — ??? (внимание! это значение не для роутинговой полилинии)
<lcode> Код, которым будет обозначена линия на карте Число в шестнадцатиричном формате.
<prior> Приоритет конвертации Число. Из всех тегов линии для конвертации выбирается тег с наибольшим приоритетом.
<minlvl> Минимальный уровень, на котором виден объект Десятичное число.
<maxlvl> Максимальный уровень, на котором виден объект Десятичное число.
<speed> Класс скорости 1 — до 5 км/ч — пешеходные дорожки в насел. пунктах, загородные тропы
2 — до 20 км/ч — внутридворовые проезды, загородные труднопроходимые дороги
3 — до 40 км/ч — дороги с плохим покрытием в насел. пункте, загородные участки дорог с ограничением скорости
4 — до 60 км/ч — улицы, магистрали, проселочные дороги
5 — до 80 км/ч — автомагистрали в насел. п., загородные дороги с небольшими дефектами
6 — до 90 км/ч — крупные автомагистрали в насел. п., обычные загородные дороги с покрытием
7 — до 110 км/ч — в насел. п. применяется крайне редко, загородные автомагистрали
8 — без ограничений — в насел. п. не применяется, загородные улучшенные автомагистрали
<class> класс дороги 0 — улица малая, аллея, просёлочная дорога, тропа
1 — крупная дорога, круговое движение
2 — центральная улица, прочие загородные дороги
3 — основное шоссе
4 — автомагистраль, съезд с дороги
<oneway> одностороннее движение 1 — да, 0 — нет
<pay> платная дорога 1 — да, 0 — нет
<a1> Не для служб спасения 1 — да, 0 — нет
<a2> Не для служб доставки 1 — да, 0 — нет
<a3> Не для машин и мотоциклов 1 — да, 0 — нет
<a4> Не для автобусов 1 — да, 0 — нет
<a5> Не для такси 1 — да, 0 — нет
<a6> Не для пешеходов 1 — да, 0 — нет
<a7> Не для велосипедистов 1 — да, 0 — нет
<a8> Не для грузовиков 1 — да, 0 — нет

Формат строки, описывающей полигон

<key> <value> p <pcode> <minlvl> <maxlvl> <ncode>,<nminlvl>,<nmaxlvl>
Аргумент Что обозначает Возможные значения
<key> ключ тега
<value> значение тега
p Тип, в который будет преобразован объект r — роутинговая полилиния (внимание! это значение не для полигона)
p — полигон
l — линия ??? (внимание! это значение не для полигона)
s — ??? (внимание! это значение не для полигона)
<pcode> Код, которым будет обозначен полигон на карте число в шестнадцатиричном формате.
<minlvl> Минимальный уровень, на котором виден объект десятичное число
<maxlvl> Максимальный уровень, на котором виден объект десятичное число
<ncode> код точки, которая будет поставлена на карте в центр полигона
(видна на уровнях от <nminlvl> до <nmaxlvl>)
число в шестнадцатиричном формате
<minlvl> Минимальный уровень, на котором видна точка с кодом <ncode> в середине полигона десятичное число.
<maxlvl> Максимальный уровень, на котором видна точка с кодом <ncode> в середине полигона десятичное число.

Пример файла poly.cfg

Вопрос: Разъясните, пожалуйста, что означают цифры, в файле poly.cfg, на примере следующих строчек из этого файла:

junction        roundabout              r       0x0c,3          0       2       3,3,1,0,0,0,0,0,0,0,0,0
natural         water                   p       0x3f            0       3       0x650d,0,2

Ответ:

  1. Если среди всех тегов линии встречается junction=roundabout, то конвертировать ее в роутинговую ("r") полилинию с типом "0x0c" ("Круговое движение") и приоритетом 3 (из всех тегов линии для конвертации выбирается тег с наибольшим приоритетом), видимая на уровнях от 0 до 2 и флагами маршрутизации (в терминах польского формата) 3,3,1,0,0,0,0,0,0,0,0,0
  2. Если у линии есть тег natural=water, конвертировать ее в полигон ("p") типа 0x3f ("Озеро среднее (11-25 км²)"), видимый на уровнях от 0 до 3 и поставить в центр озера точку типа 0x650d "Озеро", видимую на уровнях от 0 до 2.

Для junction=roundabout флаги маршрутизации такие: класс скорости 3 (60 км/ч), класс дороги 3 (Principal HW), односторонняя (1), не платная (0), запретов движения конкретных видов транспорта нет (0,0,0,0,0,0,0,0). Другие флаги маршрутизации можно посмотреть здесь: http://v-dorogu.narod.ru/article/routemap.htm

Настройка файла poi.cfg

Вопрос: Что означает city в строке файла poi.cfg:

place           hamlet                  0x0C00          0       2       city

Ответ: Значит, для точки надо определить и записать регион и страну.

Вопрос: Какие дефолтные значения используются в файле poi.cfg ? Ответ: минимальный уровень приближения: 0, максимальный уровень приближения: 1.

Запуск

osm2mp.pl [ключи] file.osm > file.mp

Ключи программы

Ключ Формат Описание Значение по умолчанию
--mapid --mapid=<id> Уникальный идентификатор карты 88888888
--mapname --mapname=<name> Наименование карты OSM
--cfgpoi --cfgpoi=<file> Имя файла с настройками точек poi.cfg
--cfgpoly --cfgpoly=<file> Имя файла с настройками полилиний poly.cfg
--header --header=<file> Имя файла шаблона заголовка карты. Использовался в версии 0.80 (до revision 182). Не используется с появлением ключа --config header.tpl
--config --config=<file> Имя файла шаблона заголовка и адресной конфигурации карты (пример файла) garmin.yml
--bbox --bbox=<minlon,minlat,maxlon,maxlat> Обрезать карту по прямоугольной границе, описанной координатами углов Отключено
--osmbbox --osmbbox Обрезать карту по прямоугольной границе, параметры которой берутся из тегов <bound> .osm-файла Отключено
--bpoly --bpoly=<poly-file> Обрезать карту по границе произвольной формы, которая описана в .poly-файле (примеры файлов) Отключено
--background --background Создать на карте полигон "0x4b" (область покрытия карты) по границе обрезки. Включено
--codepage --codepage=<num> Кодовая страница .mp файла и карты 1251
--nocodepage --nocodepage Оставить исходную кодовую страницу (utf-8) .mp-файла файла и карты Отключено
--upcase --upcase Преобразовать все значения текстовых строк .mp-файла в верхний регистр Отключено
--translit --translit Транслитерировать все значения текстовых строк .mp-файла Отключено
--ttable --ttable=<file> Имя файла дополнительной таблицы перекодировки (пример файла)
--namelist --namelist <key>=<list> Список тегов в порядке приоритета, значения которых используются для заполнения наименований объектов в .mp-файле label=name loc_name addr:housenumber operator,
house=addr:housenumber addr:housename,
place=place_name name,
region=addr:region is_in:region addr:state is_in:state,
country=addr:country is_in:country_code is_in:country,
destination=destination label name
--nametaglist --nametaglist=<list> Список тегов, значения которых используются для заполнения поля Label в .mp-файле, в порядке приоритета. Устарел, с появлением ключа --namelist. name, ref, int_ref, addr:housenumber, operator
--countrylist --countrylist=<file> Имя файла с таблицей замены кода страны на её название (пример файла) Отключено
--defaultcountry --defaultcountry=<name> Страна по умолчанию для тех объектов, для которых она явно не задана. Необходимо для адресного поиска Earth
--defaultregion --defaultregion=<name> Регион по умолчанию для тех объектов, для которых он явно не задан. Необходимо для адресного поиска OSM
--defaultcity --defaultcity=<name> Город по умолчанию для тех объектов, для которых он явно не задан. Необходимо для адресного поиска Отключено
--addressing --addressing Process addressing polygons... Включено
--navitel --navitel Формировать адресные данные для полигонов Отключено
--oneway --oneway Обрабатывать тег oneway Включено
--routing --routing Создать граф маршрутизации для карты Включено
--mergeroads --mergeroads Соединять одинаковые сегменты дорог, удовлетворяющие значению ключа --mergecos Включено
--mergecos --mergecos=<cosine> Максимально допустимый угол между дорогами (для ключа --mergeroads), задаётся значением косинуса 0.2
--splitroads --splitroads Разделять дороги с большим числом узлов и дороги, имеющие самопересечения Включено
--maxroadnodes --maxroadnodes=<dist> Максимально допустимое число узлов в сегменте дороги (для ключа --splitroads) 60
--fixclosenodes --fixclosenodes Увеличивать расстояние между слишком близкими узлами Включено
--fixclosedist --fixclosedist=<dist> Минимально допустимое расстояние между узлами дороги, в метрах (для ключа --fixclosenodes) 3.0
--detectdupes --detectdupes Проверить и включить в перечень ошибок информацию о наличии дублирующихся сегментов дорог (см. строки "; ERROR:" в .mp файле) Включено
--restrictions --restrictions Конвертировать запреты поворотов Включено
--barriers --barriers Обрабатывать запреты проезда (тег barrier=*) Включено
--disableuturns --disableuturns Запрещать "паразитные" развороты (например, на пересечении автомобильной дороги с пешеходной тропой) Отключено
--destsigns --destsigns Конвертировать дорожные указатели Включено
--interchange3d --interchange3d Конвертировать 3D-уровни для формата Навител Включено
--transport --transport=<Список> Оставить в графе маршрутизации только те дороги, по которым разрешено движение транспортным средствам, перечисленным в <Cписке> emergency,police,delivery,
car,motorcar,bus,
taxi,foot,pedestrian,
bike,bicycle,truck
--shorelines --shorelines Создавать полигоны морей из береговой линии Отключено
--waterback --waterback Создать полигон моря на всю область карты (для карт отдельных островов) Отключено
--marine --marine Включать в карту дополнительные данные о морских объектах (цвет буёв, сектора свечения маяков, и т.д.) Включено
--makepoi --makepoi Создавать точки POI по данным соответствующего полигона, в его условном "центре тяжести" Включено
--poiregion --poiregion Указывать регион и страну для точек населённых пунктов Включено
--poicontacts --poicontacts Указывать контактную информацию для точек POI Включено

Для отключения действия ключа его следует указывать с префиксом "no". Например: --norouting для создания карты без графа маршрутизации.

Другие полезные скрипты

В SVN находятся и другие полезные скрипты:

osmget & osmsort

  • osmget.pl — скачивает квадрат кусками в файл;
  • osmsort.pl — приводит этот файл в порядок.

параметры osmget — координаты углов квадрата через запятую:

osmget  minlon,minlat,maxlon,maxlat  >  draft.osm

можно слить несколько кусков, тогда ставим >> вместо >

osmget  minlon2,minlat2,maxlon2,maxlat2  >>  draft.osm

потом

osmsort draft.osm > final.osm

splitter

  • splitter.pl — разбивает OSM-файл на части примерно одинакового заданного размера.

Запуск:

splitter <file.osm> [ключи] > <file.txt>

-file.osm — карта в формате OSM
-file.txt — имя файла с отчётом
Ключи:

Ключ Формат Описание Значение по умолчанию
--mapid --mapid=<id> Числовое имя файла первой части по порядку. 65430001
--maxnodes --maxnodes=<n> Примерное максимальное кол-во точек в одной части. 1000000
--relations --relations=<число> Число итераций обработки отношений.
0 — не учитывать целостность отношений
1 — сохранять участников отношений
2 — сохранять участников отношений и участников их непосредственных родителей/потомков
3 — ...
1
--init --init=<file.cfg> file.cfg — текстовый файл с заданными квадратами разбивки в формате [id minlon,minlat,maxlon,maxlat] (см. файл отчёта). Отключено
--optimize --optimize=<0 или 1> Оптимизировать охватывающие полигоны частей (bbox) 1

getbound

Живёт в отдельном репозитории. Для не дружащих с Перлом есть сборка win32: getbound.zip

  • getbound.pl — скрипт автоматического создание файла территории, на которую будет производиться конвертирование данных OSM в польский формат скриптом osm2mp.pl (ключ --bpoly=<poly-file>).
  • aliases.yml - файл алиасов в формате YAML ( <алиас>: <номер объекта> )

Команда для запуска:

getbound.pl <relation_id> [ключи]

Где:

<relation_id>   — номер линейного или полигонального объекта в картографической 
                  базе OSM с типом boundary или multipolygon, либо алиас из 
                  файла aliases.yml

Ключи:

-api [osm|op_ru] — api, используемый для загрузки
                     osm   - http://www.openstreetmap.org/api/0.6 (по умолчанию)
                     op_ru - http://overpass.osm.rambler.ru/cgi
-o <file>       — имя файла для записи территории (по умолчанию: STDOUT);
-proxy <host>   — ip-адрес прокси-сервера (если используется);
-onering        — преобразование и запись данных о территории как единый контур;
-offset <N>     — расширение контура за счет смещения линии на N градусов;

Например: Для создания poly-файла, необходимого для конвертирования данных OSM попадающих только на территорию Истринского района Московской области России http://www.openstreetmap.org/browse/relation/184072, требуется запустить скрипт со следующими параметрами:

getbound.pl 184072 -o istra.poly -onering

Граница Псковской области со смещением (используем псевдоним из aliases.yml)

getbound.pl -o pskov.poly -api op_ru -offset 0.1 pskov

Подробнее о файлах *.poly можно прочитать по ссылке http://gis-lab.info/qa/osm-poly.html

Полезные ссылки