В этой статье описаны пошаговые действия по компилированию плагина mapsforge-map-writer для дальнейшего использования в Osmosis.
1. Подготовительные работы
1.1. Подготавливаем Osmosis
Качаем последнюю версию Osmosis(Linux), у меня это 0.43.1:
wget http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.tgz tar xvfz osmosis-latest.tgz cd osmosis-* chmod a+x bin/osmosis bin/osmosis
Или качаем вручную отсюда: http://bretth.dev.openstreetmap.org/osmosis-build/
Скачанный архив распаковываем в папку Osmosis, таким образом у меня получается следующая структура папок:
Osmosis\ ├ bin ├ config └ lib
Теперь идём в папку «Osmosis/bin» и редактируем файл «osmosis». Добавляем в начало этого файла строчку «JAVACMD_OPTIONS=-Xmx2G» в которой указываем кол-во оперативки доступное для Java. Таким образом, первая часть файла у меня выглядит так:
#!/bin/sh # Config files can define several variables used throughout this script. # JAVACMD - The java command to launch osmosis. # JAVACMD_OPTIONS - The options to append to the java command, typically used to modify jvm settings such as max memory. # OSMOSIS_OPTIONS - The options to apply to all osmosis invocations, typically used to add plugins or make quiet operation the default. JAVACMD_OPTIONS=-Xmx2G if [ -f /etc/osmosis ] ; then . /etc/osmosis fi if [ -f "$HOME/.osmosis" ] ; then . "$HOME/.osmosis" fi ...
Далее в папке «Osmosis/config» модифицируем «plexus.conf» добавляем туда нашу папку плагинов, таким образом, содержимое моего конфиг файла выглядит так:
main is org.openstreetmap.osmosis.core.Osmosis from osmosis.core [osmosis.core] load ${app.home}/lib/default/*.jar load ${app.home}/lib/custom/*.jar load ${app.home}/config
1.2. Компилирование плагина mapsforge-map-writer
Качаем IntelliJ IDEA. На данный момент я использую 13 версию.
Качаем исходники mapsforge https://code.google.com/p/mapsforge/source/checkout. Я использую rewrite ветку репозитоия mapsforge с последним коммитом 67db7798058361e9d78bbf7aabb499f01a2b2df1
Открываем в IntelliJ IDEA папку исходников проекта mapsforge как проект, т.к. там есть конфигурационный файл Maven’а.
Идём в настройки проекта(«Project structure») и в разделе «Artifacts» создаём артефакт с именем mapsforge-map-writer и добавляем в него:
- mapsforge-core
- mapsforge-map-writer
Затем билдим этот артефакт. Если посыпались ошибки связанные с отсутствием Android SDK, идём в настройки проекта(«Project structure») и в разделе «Facets» удаляем Android.
После чего, закидываем выходной jar файл(«mapsforge-map-writer.jar») в папку «Osmosis/lib/custom», туда же закидываем jar файлы зависимостей:
- guava-14.0.1.jar
- jts-1.13.jar
- trove4j-3.0.3.jar
2. Запуск конвертирования в Osmosis
Заходим в папку куда распаковали Osmosis и выполняем следующую команду:
./bin/osmosis -plugin org.mapsforge.map.writer.osmosis.MapFileWriterPluginLoader --rx enableDateParsing=no file="/home/hronom/maps/osm/planet_26.35,44.87_37.44,50.17.osm" --mw type=hd file="/home/hronom/maps/map/test.map"
Внимание!!! Все папки в пути должны быть созданы иначе вылетит с ошибкой.
Команды Osmosis можно посмотреть тут: http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage
Команды mapsforge-map-writer можно посмотреть тут: https://code.google.com/p/mapsforge/wiki/GettingStartedMapWriter
OSM файлы можно скачать отсюда: http://planet.openstreetmap.org/
Или отсюда: http://wiki.openstreetmap.org/wiki/Planet.osm#Processing_the_File
Онлайн экстракт данных: http://extract.bbbike.org/
Заключение
Ваши замечания/пожелания приветствуются, так, что пишите=)