RU:OsmAndMapCreator

From OpenStreetMap Wiki
Jump to navigation Jump to search

OsmAndMapCreator это Java инструмент с открытым кодом, который сопровождает OsmAnd. Он может загружать тайлы с Mapnik и создавать POI, адреса, транспортные и маршрутные индексы из OSM файлов (.osm, .bz2, .pbf). Наиболее важная возможность программы - это создание OBF файлов из OSM данных. Файлы OBF являются основой для оффлайн отрисовки, построения оффлайн маршрутов и оффлайн поиска на смартфоне.

OsmAndMapCreator screenshot

Процесс создания карты

  1. Загрузите экстракт данных OSM (PBF format с сайта Geofabrik) для территории, которую вы хотите преобразовать в OBF. Обратите внимание на большое потребление оперативной памяти программой OsmAndMapCreator (см. ниже).
  2. Если выдержка слишком велика, вы должны вырезать из нее меньшую область с помощью Osmconvert.
  3. Создайте OBF-файл с помощью OsmAndMapCreator.
  4. Скопируйте полученный OBF-файл на свой смартфон.

Загрузка OsmAndMapCreator

OsmAndMapCreator не нужно устанавливать на ваш компьютер, просто Java (Windows) или OpenJDK (Linux, OSX) должны быть установлены. Вам не нужен административный/root-доступ, если Java уже установлена. Если вы не знаете, установлена ​​ли Java, просто откройте окно командной строки и выполните команду java. Если в выводе описаны некоторые аргументы для запуска Java и не отображается простое сообщение «файл не найден» (или что-то вроде этого), Java установлена. Более поздние версии OsmAndMapCreator требуют как минимум Java 7 для запуска, в противном случае вы получите сообщения об ошибках типа Unsupported major.minor version 51.0. Вы можете узнать текущую версию Java, вызвав java -version.

OsmAndMapCreator можно скачать с сайта разработчиков. После этого распакуйте скачанный zip-архив в любую директорию. Если вы используете Unix-подобную операционную систему (OS X, Linux), вам нужно сделать файл .jar исполняемым.

Создание отдельных файлов OBF с помощью графического интерфейса пользователя

Запуск OsmAndMapCreator простым двойным щелчком — неправильный способ. Вам следует выделить OsmAndMapCreator больше оперативной памяти, чем обычно делает Java, чтобы OsmAndMapCreator не прерывался из-за нехватки памяти.

  • Пользователи с опытом работы в командной строке: Откройте окно командной строки, измените каталог (cd) на каталог, где находится OsmAndMapCreator.jar, и выполните команду java -jar -Xms1G -Xmx6G OsmAndMapCreator.jar. Числа после -Xms и -Xmx обозначают объем оперативной памяти, который вы выделяете OsmAndMapCreator/Java. M обозначает мегабайт, G — гигабайт. Объем зависит от объема оперативной памяти вашего компьютера и размера файла PBF. Подробности см. ниже.
  • Пользователи без опыта работы с командной строкой: Откройте окно файлового менеджера (Windows Explorer, Nautilus и т. д.), перейдите в каталог, где находится OsmAndMapCreator.jar, и дважды щелкните OsmAndMapCreator.bat (Windows) / OsmAndMapCreator.sh (OS X/Linux). Файл bat или sh запускает OsmAndMapCreator и утверждает определенный объем памяти, как команда выше. Вам следует изменить объем памяти в файле bat/sh. Подробности см. ниже.

После запуска OsmAndMapCreator нажмите Файл, затем Создать .obf из файла OSM и выберите загруженный/вырезанный файл PBF. Подождите, пока OsmAndMapCreator завершит работу. Если вы хотите создать второй OBF-файл, вам следует перезапустить OsmAndMapCreator, поскольку OsmAndMapCreator не освобождает используемую оперативную память.

Регулярное создание файлов OBF (через командную строку)

Если вы периодически используете файлы OBF, вам хотелось бы автоматизировать этот процесс. Даже если это не так, файлы OBF можно создавать через командную строку (и, следовательно, через cronjobs)

В дистрибутивах Linux, подобных Debian, вам также необходимо установить libcommons-logging-java (другие дистрибутивы не тестировались)

Рабочий процесс:

  1. Загрузите необработанные данные (например, с Geofabrik) или обновите существующие извлечения с помощью Osmconvert или Osmosis.
  2. Clip необработанные данные, если необходимо.
# Переименуйте файлы необработанных данных в COUNTRY.osm.pbf и переместите их в /home/$user/mapbuild/osmand-pbf
  1. Запустите OsmAndMapCreator, все извлеченные данные будут преобразованы в OBF и сохранены в /home/$user/mapbuild/osmand-obf

Если вы используете другие каталоги, кроме названных выше, вам необходимо изменить их в batch.xml (см. ниже).

Batch.xml

Перед запуском OsmAndMapCreator вам необходимо настроить параметры внутри batch.xml в вашем каталоге OsmAndMapCreator.

Шаблон batch.xml

Замените $user на ваше локальное имя пользователя.

<?xml version="1.0" encoding="utf-8"?>
<batch_process>
<process_attributes mapZooms="" renderingTypesFile="" 
zoomWaySmoothness="" osmDbDialect="sqlite" mapDbDialect="sqlite" />
<process directory_for_osm_files="/home/$user/mapbuild/osmand-pbf" 
directory_for_index_files="/home/$user/mapbuild/osmand-obf" 
directory_for_generation="/home/$user/mapbuild/osmand-gen"
skipExistingIndexesAt="/home/$user/mapbuild/osmand" 
indexPOI="true" indexRouting="true" indexMap="true" 
indexTransport="true" indexAddress="true"/> 
</batch_process>

Batch.xml Settings

Элемент XML process_attributes описывает настройки для создания файлов OBF. Вы можете просто использовать пример batch.xml выше, не редактируя его, за исключением адаптации путей.

Если у вас большой объем оперативной памяти, вы можете хранить временные базы данных SQLite в оперативной памяти вместо рабочего каталога (см. атрибут directory_for_generation в batch.xml). Хранение временных баз данных в оперативной памяти ускоряет создание файлов OBF примерно на 10–50 %. Если у вас недостаточно оперативной памяти, вам не следует хранить временные базы данных в оперативной памяти, поскольку тогда операционным системам придется выполнять подкачку. Для хранения временных баз данных в оперативной памяти замените
<process_attributes mapZooms="" renderingTypesFile="" zoomWaySmoothness="" osmDbDialect="sqlite" mapDbDialect="sqlite" />
на
<process_attributes mapZooms="" renderingTypesFile="" zoomWaySmoothness="" osmDbDialect="sqlite_in_memory" mapDbDialect="sqlite_in_memory"/>
'Внимание: OsmAndMapCreator требуется очень большой объем оперативной памяти. Для файла PBF размером 230 МБ у вас должно быть не менее 12 ГБ ОЗУ, если вы не хотите хранить базы данных на HDD/SSD.

Другие настройки в batch.xml:

key value
directory_for_osm_files каталог, в котором находятся загруженные/обновленные и вырезанные файлы PBF
directory_for_index_files каталог, в котором будут сохранены окончательные файлы OBF
directory_for_generation каталог, в котором сохраняются временные базы данных SQLite
indexPOI создать индекс POI (true/false)
indexRouting создать индекс маршрутизации (true/false)
indexMap создать индекс карты для рендеринга (true/false)
indexTransport создать индекс общественного транспорта (true/false)
indexAddresses создать индекс адреса для поиска адреса (true/false)

Начало создания OBF

OsmAndMapCreator преобразует только файлы PBF, если они называются как LAND.osm.pbf и хранятся в directory_for_osm_files! Чтобы запустить OsmAndMapCreator, перейдите в каталог, в который вы распаковали OsmAndMapCreator, и выполните следующую команду (при необходимости измените назначение памяти):

java -Djava.util.logging.config.file=logging.properties -Xms64M -Xmx6300M ​​-cp "./OsmAndMapCreator.jar:lib/OsmAnd-core.jar:./lib/*.jar" net.osmand.util.IndexBatchCreator batch.xml

Требования к оперативной памяти

Использование оперативной памяти

OsmAndMapCreator требует кратного размера файла OBF. Вы должны создавать файлы OBF больших областей, только если на вашем компьютере достаточно оперативной памяти. Пожалуйста, помните, что операционной системе также требуется некоторое количество оперативной памяти. Просто взгляните на диспетчер задач в состоянии простоя. Помните, что 32-разрядные системы могут использовать только 3,3 ГБ оперативной памяти.

В следующей таблице приведены пример размера файла и потребления памяти. Пожалуйста, имейте в виду, что OSM содержит все больше и больше данных. Вот почему файлы PBF увеличиваются с каждым днем.

Аннотация: Эта таблица не является окончательной. Вы можете добавить свои значения, если вы создали файл OBF. Пожалуйста, добавьте свою оперативную память и потребление времени, только если вы не запускали никаких других программ с высоким потреблением оперативной памяти в то же время. (аналогичные условия тестирования)

region size of PBF file RAM usage RAM assignment at startup OsmAndMapCreator time expenditure output size of obf file
Баден-Вюртемберг, Германия 220 МБ ca, 3 ч 15 мин (Linux 64 бит, Intel Core i5-460M, 8 ГБ ОЗУ)
Бавария, Германия 300 МБ прервано пользователем после более чем 7 ч (Linux 64 бит, Intel Core i5-460M, 8 ГБ ОЗУ)
Нижняя Саксония, Германия 280 МБ менее 4 ГБ 1500 МБ (OsmAndMC V1.1.0) 52 мин (Win 64, AMD II X2 3.0 ГБ, 16 ГБ ОЗУ)
Саксония-Анхальт, Германия 46 МБ прибл. 15–20 мин (Linux 64 бит, Intel Core i5-460M, 8 ГБ ОЗУ)z
Германия 2,5 ГБ менее 6 ГБ 14 ГБ + Жесткий диск ~54 часа (Linux 64 бит, Intel Core i7-4700MQ @ 2.40GHz, 16 ГБ ОЗУ, в основном простаивает все время конвертации)
Берлин 43 МБ 14 ГБ ~4 минуты (Linux 64 бит, Intel Core i7-4700MQ @ 2.40GHz, 16 ГБ RAM, в основном простаивает все время конвертации) 98 МБ
Niedersachsen 214 МБ менее 6 ГБ 14 ГБ ~40 минут (Linux 64 бит, Intel Core i7-4700MQ @ 2.40GHz, 16 ГБ RAM, в основном простаивает все время конвертации) 414 МБ

Области размером с Баварию (300 МБ) и больше не могут быть преобразованы в формат OBF за один раз. Вам придется разделить эти области и преобразовать каждую часть. Вот почему разработчики OsmAnd не предоставляют всю Германию в виде OBF (файл PBF объемом 1,8 ГБ) для загрузки.

===Адаптируйте объем выделенной оперативной памяти===

В файлах OsmAndMapCreator.bat и OsmAndMapCreator.sh есть строка -Xms64M -Xmx512M. Замените эти значения (64M и 512M) на значения из таблицы выше. Вам следует оставить не менее 1,3 ГБ для операционной системы, если вы используете Windows. В Linux этот объем зависит от вашей среды рабочего стола, например, 800 МБ для Unity, жадной до оперативной памяти.

Пример расчета:

(1) установленная оперативная память 4 ГБ
(2) потребление оперативной памяти в состоянии простоя (зависит от операционной системы, см. диспетчер задач) 1,3 ГБ
(3) разница между (1) и (2) 2,7 ГБ
(4) минимальное выделение оперативной памяти (значение после -Xms) 200 МБ
(5) максимальное выделение оперативной памяти (значение после -Xmx) 2,5 ГБ (не используйте десятичный разделитель, вместо этого напишите -Xmx2500M.)

Между -Xms и -Xmx и числовое значение.

Скопируйте OBF-файл(ы) на свой смартфон

Готовые OBF-файлы хранятся в каталоге приложения OsmAnd на вашем телефоне. Вы можете изменить расположение каталога приложения в настройках OsmAnd в разделе «Общие». /mnt/sdcard/osmand — хорошее расположение. (Внимание! Точка монтирования SD-карты может отличаться от /mnt/sdcard.) Если вы хотите сохранить OBF-файлы в /mnt/sdcard/osmand, вам необходимо установить /mnt/sdcard (без «osmand») в качестве «каталога хранения». Обратите внимание, что Android основан на Linux и чувствителен к регистру! /mnt/extSdCard и /mnt/extsdcard — это два разных каталога!

См. также