Выдался свободный выходной поработать с утилитой 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.
Собственно — жду табуреток и дальнейших идей.
С фотоподложкой совпадает почти ан 100%
и как же я сразу не сказал — полная база ОСМ тут http://download.geofabrik.de/osm/
http://downloads.cloudmade.com/