osm2xp — Сценарии для X-Plane 9

Всем привет.

Выдался свободный выходной поработать с утилитой osm2xp (http://osm2xp.com/ — генерирует сценарии на основе данных openstreetmaps). В процессе разбора наткнулся на первое ограничение — авторы утилиты предлагают скачивать карты в формате osm, используя редактор карт openstreetmaps JOSM, написанный на Java. Как результат — более чем 5000 узлов за раз в принципе сказать невозможно. После непродолжительного гугления по openstreetmaps были найдены два скрипта, написанных на perl (здесь и далее использовался Active Perl под x64, который можно найти здесь: http://www.activesta…eperl/downloads):

— osmget.pl. После небольшой доработки напильником стало возможно за один запуск скрипта скачать сразу любую географическую область в формате osm. Доработка заключалась в следующем:

my $api  = "http://jxapi.osm.rambler.ru/xapi/api/0.6/map?bbox=";
my $step = 1;

и изменению таймаута по умолчанию, т.к. в противном случае работа скрипта затягивалась до бесконечности из-за постоянного фрагментирования тайлов с последующим DDoS удаленного сервера:

    my $ua = LWP::UserAgent->new;
    $ua->timeout(2000);  данная строка меняет таймаут подключения к северу openstreetmaps на 2000 секунд.

После запуска скрипта, например для Санкт-Петербурга и окрестностей (osmget.pl 29,59,32,61 > spb.osm), в режиме real-time можно отслеживать как сервер openstreetmaps обрабатывает запросы: http://jxapi.osm.ram….ru/admin/stats

В итоге получился файл, размером около 500мб. Но для того, чтобы osm2xp нормально могла с ним работать, необходимо его упорядочить. Для этого — используем второй скрипт:

— osmsort.pl. Синтаксис запуска: osmsort.pl файл_источник > файл_приемник, например: osmsort.pl spb.osm > spb_clean.osm

Без упорядочивания данных osm2xp откажется работать с файлом. Далее, запускаем сам osm2xp. При обработке больших объемов данных рекомендуется запускать вот так:
java -Xmx2048m -jar Osm2xp.jar

где 2048 — количество оперативной памяти, отдаваемой под процесс.

После непродолжительной обработки был получен сценарий, общим объемом около 15 мегабайт. Несколько сериншотов, которые иллюстрируют разницу между автогеном xplane и сценария, созданного на основе osm2xp и данных openstreetmaps:

автоген:
Изображение

Сценарий:
Изображение

автоген:
Изображение

Сценарий:
Изображение

автоген:
Изображение

Сценарий:
Изображение

Сам сценарий можно скачать здесь: http://depositfiles….files/9ep5l37ip

При использовании сценариев, сгенерированных osm2xp фпс выше, чем при использовании автогена xplane из-за использования facades. Далее, есть идеи по «рихтованию» подобных заготовок-сценариев с добавлением фотоподложки и и созданием бибилиотеки фасадов для osm2xp, сделанной на основе ruscenery, но это все в отдаленном будущем.

P.S. Сами скрипты на перле можно найти здесь: http://osm2mp.google….com/svn/trunk/
P.P.S. Хотелось бы выразить огромную благодарность автору STS.reloader, использование которого помогло сэкономить множество времени при тестировании osm2xp.

Собственно — жду табуреток и дальнейших идей.


Ответов: 8

Можно не заниматься геморроем с самостоятельным выкачиванием и своими скриптами, все уже давно готово — http://gis-lab.info/…dump/index.html Скармливать утилите можно прямо сжатый файл. Единственное, что мне сейчас не нравится в программе, она берет информацию о высоте объекта только из одного тэга, который чаще всего отсутствует. Автор на форуме писал, что следующая версия уже будет использовать все возможные тэги указания высоты, тогда получим совсем красивые дома!

Попробовал два варианта. Первый как рекомендовал топикстартер. Получилось весьма плотненько по объектам, да и размер файла, который выгрузил с региона размерами 10 на 10 км около 400 мб, а вот по второй ссылке как то не очень. Выкачал Пермский край (всего 30 мегов) только сам город и получился. И то сараи да амбары. Может Сойтанен прояснит как так ? Или где я ошибся?

Делал уже. И темы тут где-то есть по этому поводу. Все клёво, за исключением того, что таки да уродливые дома и одинаково по высоте почти все. Даже научился исправлять. Лажа в том, что все вручную. Либо созданием и подстановкой новых фасадов, с заданием каждому дому специфической высоты, либо еще какой, мне неизвестный метод.
С фотоподложкой совпадает почти ан 100%

Разность размеров — так это сжатый файл pbf и просто текстовый osm, информация должна совпадать. В самой утилите пользуюсь галочкой «Режим базы данных». Значительно снижается скорость обработки, но дома почти не пропускает. Сама утилита немного глючная. Кстати, пользуетесь версией 1.1 или бетой 1.2? У меня бета даже постабильнее выдает результат, чем 1.1.

Версия 1.1. Попробую режим базы данных.

Там версия 1.2 есть

и как же я сразу не сказал — полная база ОСМ тут http://download.geofabrik.de/osm/
http://downloads.cloudmade.com/

По регионам страны и странам Союза — http://gis-lab.info/…osm-export.html
Да, но на геофабрике поновее базы. Проверил — на гис-лабе Украина обновлялась в сентябре еще, на геофабрике — вчера. Хотя по барабану. Файлы одни и те же.