Четверг, 14.08.2025, 02:49
Приветствую Вас Гость | RSS
Главная | Создание карт OpenStreetMap с помощью Maperitive и MOBAC | Регистрация | Вход
Меню сайта
Поиск
Вход на сайт
Календарь
«  Август 2025  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Друзья сайта
MisterGemix

<На главную>

Оффлайн рендеринг карт OpenStreetMap с помощью Maperitive и MOBAC

Поскольку целью написания статьи было описание способа автоматизации оффлайнового рендеринга карт OSM, далее буду описывать действия во встроенной в программу Maperitive собственной командной строке. Порядок действий:

1) Скачиваем и устанавливаем программу Maperitive http://maperitive.net/download/Maperitive-latest.zip

2) Скачиваем файл с данными OSM требуемой нам географической области, например файл с данными по Украине http://download.geofabrik.de/europe/ukraine-latest.osm.bz2 Данное действие можно произвести введя в окне Maperitive команду:

download-file url=http://download.geofabrik.de/europe/ukraine-latest.osm.bz2

где url=http://download.geofabrik.de/europe/ukraine-latest.osm.bz2 - это адрес в интернете скачиваемого файла

3) Поскольку мы скачали архив, то распаковываем файл OSM с помощью какого-либо подходящего архиватора, например 7-zip http://www.7-zip.org/ Помещаем распакованый файл в папку с программой Maperitive.

4) Очищаем экран от лишних слоёв карт командой

clear-map

5) Загружаем файл с данными OSM в программу Maperitive командой

load-source file=ukraine-latest.osm

где file=ukraine.osm - путь к файлу, в данном случае файл расположен в корневой папке программы, но можно указать любой путь

Так же возможна загрузка в Maperitive файлов .bz2:

load-source file=ukraine-latest.osm.bz2

6) Экспортируем требуемую нам область карты в новый файл OSM, например участок соответствующий Луганской области, командой

export-osm file=lugansk.osm bounds=37.82,47.75,40.28,50.11 index=1

где file=lugansk.osm - путь к создаваемому файлу, bounds=37.82,47.75,40.28,50.11 - географические координаты экспортируемой области расположенные в следующем порядке з.д,ю.ш.,в.д.,с.ш. их удобно брать со страницы http://www.openstreetmap.org/ на вкладке "Экспорт", index=1 - номер слоя карты, поскольку перед этим карта была очищена, то индекс равен 1.

Экспорт можно производить также с помощью программы osmconvert.exe http://m.m.i24.cc/osmconvert.exe Программа работает из командной строки. Экспорт заданной области можно выполнить командой:

osmconvert.exe ukraine-latest.osm -b=37.82,47.75,40.28,50.11 >Lugansk.osm

где osmconvert.exe - путь к исполняемому файлу программы, ukraine.osm - путь к файлу из которого извлекаются данные, Lugansk.osm - путь к файлу в который экспортируются данные.  В данном случае все три файла находятся в одной папке и командная строка запущена из той же папки. -b=37.82,47.75,40.28,50.11 -координаты границ экспортируемой области, определяются как описано выше. Такой способ быстрее чем экспорт из программы Maperitive и требует меньше ресурсов компьютера.

7) Снова очищаем экран от ненужной нам теперь карты Украины и загружаем экспортированый файл данных Луганской области командами

clear-map

load-source file=lugansk.osm

8) Далее на карте можно сгенерировать рельеф и контуры высот состветственно командами

generate-relief-igor intensity=7

generate-contours

Рендеринг карты с рельефом и контурами высот будет занимать значительно больше времени.

9) Создаём папку Tiles, например на диске D:\ . Генерируем тайлы в эту папку в формате понятном программе MOBAC командой

generate-tiles bounds=37.82,47.75,40.28,50.11 maxzoom=16 minzoom=5 tilesdir="D:\Tiles"

где maxzoom=16 minzoom=5 - максимальный и минимальный зум создаваемого хранилища карт, то есть будут созданы карты с зумом от 5 до 16, tilesdir="D:\Tiles" - путь к создаваемому хранилищу, bounds=37.82,47.75,40.28,50.11 - географические координаты области которую необходимо отрендерить, можно указать любую область в пределах загруженных данных.

10) Скачиваем и устанавливаем программу MOBAC http://mobac.sourceforge.net/

11) Переходим в папку с этой программой. В папке mapsources создаём файл source.xml со следующим содержанием source.xml

Причём в строке

D:\Tiles

необходимо указать путь к папке со сгенерированными тайлами.

12) Запускаем MOBAC, выбираем в качестве источника карт MY_SOURCE и пользуемся программой как обычно.

Maperitive поддерживает выполнение скриптов с собственными командами. Для этого создаём текстовый файл со списком команд Maperitive внутри него, например script.txt, помещаем его в папку с программой и выполняем его командой

run-script file=script.txt

Есть возможность запуска скриптов написанных на языке Python, что например позволяет распаковывать файлы из архивов, или выполнять любую из команд операционной системы. Если создать файл python_script.py, поместить его в папку с программой, то запустить его можно командой

run-python file=python_script.py

Если в python_script.py внести строки следующего содержания

import os
os.system('7z.exe e ukraine-latest.osm.bz2 -y')

то этим скриптом можно распаковать архив с файлом OSM, предварительно надо установить архиватор 7-zip, и скопировать его исполняемый файл 7z.exe в папку с программой Maperitive. Скрипт со следующим содержанием позволит экспортировать заданную область с помощью программы osmconvert.exe:

import os
os.system('D:\osm\osmconvert.exe ukraine-latest.osm -b=37.82,47.75,40.28,50.11 >Lugansk.osm')

В данном случае файл osmconvert.exe находится в папке D:\osm, в этой же папке лежит исходный файл ukraine-latest.osm и сюда же записывается экспортируемый файл Lugansk.osm 

Файл с расширением .mscript после двойного клика будет выполняться в Maperitive как список команд. Команды можно комментировать с помощью двойного знака дроби //

Привожу свой вариант скрипта для рендеринга тайлов:

1) Устанавливаем архиватор 7-zip

2) Переходим в папку с Maperitive (у меня это папка C:\Program Files (x86)\Maperitive), создаём в ней 4 новых текстовых файла, переименовываем их в unpack.py, bounds.py, delete.py, poff.py, MOBAC_TILES.mscript

3) Создаём папку D:\Tiles в которой будут хранится сгенерированные тайлы.

4) Открываем в текстовом редакторе файл unpack.py и записываем в него следующее:

import os
os.system('7z.exe e ukraine-latest.osm.bz2 -y')

5) Открываем в текстовом редакторе файл bounds.py и записываем в него следующее:

import os
os.system('"C:\Program Files (x86)\Maperitive\osmconvert.exe" ukraine-latest.osm -b=37.82,47.75,40.28,50.11 >Lugansk.osm')

6) Открываем в текстовом редакторе файл delete.py и записываем в него следующее:

import os
os.system('del "C:\Program Files (x86)\Maperitive\ukraine-latest.osm"')
os.system('del "C:\Program Files (x86)\Maperitive\ukraine-latest.osm.bz2"')

7) Открываем в текстовом редакторе файл poff.py и записываем в него следующее:

import os
os.system('shutdown /s')

8) Открываем в текстовом редакторе файл MOBAC_TILES.mscript и записываем в него следующее:

download-file url=http://download.geofabrik.de/openstreetmap/europe/ukraine-latest.osm.bz2
run-python file=unpack.py
clear-map
run-python file=bounds.py
run-python file=delete.py
load-source file=lugansk.osm
//generate-relief-standard
//generate-contours
generate-tiles bounds=37.82,47.75,40.28,50.11 maxzoom=16 minzoom=5 tilesdir="D:\Tiles"
run-python file=poff.py

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

<На заглавную страницу сайта>

Создать бесплатный сайт с uCozCopyright MyCorp © 2025