Создание векторных карт

Программа avd mapper предназначена для создания векторных карт в формате AVD из исходных других форматов векторных карт, например, MP, MapInfo, ESRI Shape, OSM (OpenStreetMap).

:!: Внимание! Исходная карта должна быть в координатной проекции WGS-84 в градусах.

Приложение avd_mapper запускается из консоли и работает на основе параметров, передаваемых из командной строки. Поддерживаются операционные системы Linux и Windows. Приложение avd_mapper_win является оболочкой для консольной утилиты и позволяет пользователям ОС Windows задавать входные параметры для утилиты через графический интерфейс пользователя.

Для запуска avd_mapper в консоли зайдите в корневую папку, где установлен Wialon. Выполните команду ./shell для загрузки окружения ADF. Зайдите в папку «bin» и запустите avd_mapper.

Запуск программы

avd_mapper  -o <file_name> [-n <map-name>] [-t <map-tag>] [-p <number>] [--max-level=<number>]
[--min-level=<number>] [-i] [--clear-bg-flag] [--skip-render-flag] [--skip-search-flag]
[--mp-check-caps] [--pfm-config=<xml-file-path>]... <input-map-file> [<input-map-file>]

Параметры программы

- o , - - output =< file_name >
Имя выходного файла карты в формате путь/имя файла.avd. Путь может быть как абсолютным, так и относительным, а при создании файла в текущей папке его можно не указывать.

- n , - - name =< map-name >
Имя получаемой карты, например, название города, для которого создается карта.

- t , - - tag =< map-tag >
Пометка для карты (город, страна и т.п.)

- p , - - priority =< number >
Приоритет карты. По умолчанию – 100. Больший приоритет означает более раннюю отрисовывку карты. Карты с меньшим приоритетом отрисовываются позже и находятся выше карт с большим приоритетом.

- - max-level =< number >
Максимальный желаемый уровень, на котором рисовать карту.

- - min-level =< number >
Минимальный желаемый уровень, на котором рисовать карту.

- - i
В карту будет добавлена информация для поиска по карте (города, улицы, дома). Рекомендуется использовать этот параметр.

- - clear-bg-flag
Не рисует карты с большим приоритетом, т.е. те карты, которые находятся в нижних слоях. При наложении участков карт будет рисоваться карта, находящаяся на самом верху (с большей детализацией), а перекрытые участки нижних карт обрабатываться не будут. В данном случае подложка карты будет зарисована белым цветом. Этот флаг желательно использовать.

- - skip-render-flag
Не добавлять в файл информацию по отрисовке карты (будет использоваться только для поиска).

- - skip-search-flag
Не добавлять в файл информацию для реверсного геокодирования (определение адреса по координатам) на карте (будет использоваться только для рисования).

- - mp-check-caps
Учитывать прописные буквы в МР файле адресов (Городов, Регионов, Стран).

- - pfm-config=<xml-file-path>
Путь к XML файлу конфигурации (настроек) для карт в формате MP.

- - osm-config=<xml-file-path>
Путь к XML файлу конфигурации (настроек) для карт в формате OSM.

- - osm-cities-<txt-file-path>
Путь к allCountries.txt — вспомогательному файлу адресной привязки для карт в формате OSM.

< input-map-file >
Путь к файлу карты.

-h, - -help
Вывод справки в консоли.

Во избежание ошибок при запуске программы внимательно расставляйте знаки: одинарный дефис ( - ) ставится перед одиночной буквой (ключом), двойной дефис ( – ) ставится перед выражением. Обращайте внимание на расстановку символов пробела и знака равно ( = ).

При генерации карт из MP (польского) формата будут использоваться только те данные, которые расположены на нулевом уровне.

:!: Конфигурационные файлы pfm.xml, osm.xml и allCountries.txt располагаются здесь http://distro.gurtam.com/maps_cfg/. pfm.xml и osm.xml также включены в дистрибутив plugins/gis_avd_driver/avd_mapper_config

Аvd_mapper для Windows

Данная утилита предназначена для облегчения введения параметров в консольную программу avd_mapper. Она не является какой-либо отдельной версией avd_mapper, в связи с чем внесение изменений в программу avd-mapper автоматически затрагивает avd_mapper_win. Утилита предназначена для работы в операционной системе Windows.

avd_mapper под Windows располагается здесь: http://distro.gurtam.com/distro/avdmapper-897634h/.

Для запуска программы сделайте двойной щелчок на иконке программы. Появится окно следующего вида:

                                             Рис. 1 Главное окно программы

Описание кнопок

New Создание новой карты. Если перед этим создавалась другая карта, все ее параметры будут утеряны.
Edit Редактирование введенных данных. Даже если вы создали карту и хотите создать ее с другими параметрами, вы можете воспользоваться этой кнопкой.
Create Запуск процесса создания карты avd.
Help Вызов справки.
STOP Если вы подозреваете, что программа зависла, воспользуйтесь этой кнопкой. Не рекомендуется нажимать ее ранее 3 минут от нажатия на кнопку Create.
Exit Выход из программы.

Нажатие кнопок New и Edit вызывает диалоговое окно, которое позволяет вводить определенные параметры для будущей карты:

                       Рис. 2 Диалоговое окно параметров программы с примером заполнения

Input files (maps)
Имя файла карты для компиляции (поддерживаются форматы *.mp, *.osm, *.xml). Кнопки справа позволят избежать ошибок при выборе карты.

Output files (map *.avd)
Имя выходного файла карты в формате путь/имя файла.avd. Путь может быть как абсолютным, так и относительным, а при создании файла в текущей папке его можно не указывать.

Map name
Имя получаемой карты, например, название города, для которого создается карта.

Map tag
Пометка для карты (город, страна и т.п.).

Priority
Приоритет карты. По умолчанию – 100. Больший приоритет означает более ранее отрисовывание карты. Карты с меньшим приоритетом отрисовываются позже и находятся выше карт с большим приоритетом.

Max level
Максимальный желаемый уровень, на котором рисовать карту.

Min level
Минимальный желаемый уровень, на котором рисовать карту.

Clear backgraund
Не рисует карты с большим приоритетом, т.е. те карты, которые находятся в нижних слоях. При наложении участков карт будет рисоваться карта, находящаяся на самом верху (с большей детализацией), а перекрытые участки нижних карт обрабатываться не будут. В данном случае подложка карты будет зарисована белым цветом. Этот флаг желательно использовать.

Skip-render
Не добавлять в файл информацию по отрисовке карты (будет использоваться только для поиска).

Skip search
Не добавлять в файл информацию для реверсного геокодирования (определение адреса по координатам) на карте (будет использоваться только для рисования).

Add addresses
Добавить в карту информацию для поиска.

Capital letters
Учитывать прописные буквы в МР файле адресов (Городов, Регионов, Стран).

Config files (xml)
Путь к XML файлу настроек для карт в формате MP. Рядом есть кнопочки, которые позволяют избежать ошибок при вводе.

После введения параметров программа выдаст сформированную командную строку с приглашением нажать кнопку Create. О полученных параметрах можно прочитать в запуске программы avd_mapper.

Рис. 3 Программа готова к запуску формирования карты

О работе программы можно судить по бегущим строкам точек. Если появилось большое количество строк, значит, или Вы запустили очень большую карту, или программа зависла.

                                          Рис. 4 Программа завершена  

Если вы что-нибудь не так ввели или вообще что-то забыли ввести, читайте появляющиеся сообщения у программы. О всех ключах читайте на этой странице или в запуске программы.

Предварительный просмотр скомпилированной карты можно осуществить в avd_viewer: http://distro.gurtam.com/distro/avdviewer-12345678/.

Создание карты из польского формата (MP)

Для создания карты из файлов в польском формате используются конфигурационные XML файлы (параметр –pfm-config). Если их задать несколько, то каждый следующий конфигурационный файл будет переопределять некоторые типы карты.

Конфигурационный файл

В дистрибутив avd_mapper включен конфигурационный файл преобразований типов MP файла в стандартные типы AVD файла. Он находится в config/pfm.xml. Пользователь может сам создать конфигурационный файл в соответствии со своими требованиями.

Пример:

<pfm>
<feature type="0x0001" shape="PL" avd_type="1" max_level="2" name="Односторонняя дорога, с разделёнными зоной безопасности направлениями движения, с разрешённой скоростью более 90 км" use_addr="1" is_street="1"/>
 
<feature type="0x0002" shape="PL" avd_type="3" max_level="2" name="Важная потоковая трасса (федеральные). Напряжённый трафик" use_addr="1" is_street="1"/>
 
<feature type="0x0003" shape="PL" avd_type="5" max_level="2" name="Дорога, соединяющая крупные города" use_addr="1" is_street="1"/>
 
<feature type="0x0004" shape="PL" avd_type="7" max_level="2" name="Дорога, соединяющая мелкие города с хорошим покрытием" use_addr="1" is_street="1"/>
 
<feature type="0x0000" shape="PL" avd_type="9" max_level="2" name="Просто дорога от города до деревни" use_addr="1" is_street="1"/>
<feature type="0x000a" shape="PL" avd_type="11" max_level="1" name="Дорога с некачественным покрытием" use_addr="1" is_street="1"/>
<feature type="0x0042" shape="PL" avd_type="12" max_level="1" name="Дорога без покрытия (официальная)" use_addr="1"/>
 
<feature type="0x3008" shape="POI" avd_type="59" max_level="0" name="Пожарная станция" use_addr="1" is_house="1"/>
<feature type="0xf001" shape="POI" avd_type="60" max_level="0" name="Автовокзал, автостанция" use_addr="1" is_house="1"/>
<feature type="0x2f06" shape="POI" avd_type="61" max_level="0" name="Банк" use_addr="1" is_house="1"/>
<feature type="0x2b00" shape="POI" avd_type="62" max_level="0" name="Отель, гостиница" use_addr="1" is_house="1"/>
</pfm>

use_addr
Использовать элемент в адресном поиске по координатам.

is_city
Использовать элемент при поиске населенного пункта по имени (это есть город).

is_street
Использовать элемент при поиске улицы по имени (это есть улица), к этому элементу может осуществляться привязка при движении объекта по дороге.

is_house
Использовать элемент при поиске дома по имени или номеру (это есть дом).

is_road
Это дорога, к ней может осуществляться привязка при движении объекта по дороге.

type
Исходный тип из МР файла (польского формата).

shape:
PG – полигон, PL – полилиния, POI – точка.

avd_type
Конечный тип в AVD файле (0-255).

max_level
Уровень, на котором будут храниться данные карты в формате avd. Уровни привязаны к метражу: уровень 0 – от 10 м до 250 м, уровень 1 – от 250 м до 20 км, уровень 3 – от 20 км до 500 км).

name
Имя объекта, области, точки, линии, т.е. пользовательская пометка.

Пример компиляции

avd_mapper goris/goris.mp -o maps/goris.avd --pfm-config avd_mapper/config/pfm.xml --pfm-config goris/pfm.xml\\  --priority 10 --clear-bg-flag --min-level 0 --max-level 6 -i --tag armenia

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

  • чтобы исходный MP файл был в кодировке Win 1251 и в заголовке (IMG ID) была прописана строка CodePage=1251;
  • чтобы исходный MP файл был в кодировке UTF-8 и в заголовке (IMG ID) была прописана строка CodePage=1252 или прочим значением, отличным от 1251.

Описание параметров (применительно к данному примеру):

goris/goris.mp
Указывает, откуда будет взята исходная карта в польском формате.

-o maps/goris.avd
Показывает, где будет находиться созданная карта.

–pfm-config avd_mapper/config/pfm.xml
Указывает на файл настройки (конфигурации).

–priority 10
Определяет приоритет отображения данной карты.

–clear-bg-flag
Указывает, что нижние перекрывающиеся области отрисовываться не будут.

–min-level 0 –max-level 6
Максимальный и минимальный уровни отображения полученной карты, т.е. будут видны только на уровнях от 0 до 6.

-i
Поместить в файл карты данные для поиска по адресам.

–tag armenia
Показывает, какая пометка будет использоваться для этой карты.

Имя карты (параметр –name) можно не задавать, если оно прописано в исходном MP файле.

Создание карты из формата OSM

Для создания карты из файлов в OSM формате используются конфигурационный XML файл и allCountries.txt.

:!: Для того, чтобы получить карту AVD с адресной информацией из формата OSM, необходимо запускать компиляцию из консоли.

Пример компиляции:

avd_mapper /home/r3/country.osm -n country -o /home/r3/country.avd --clear-bg-flag -i --priority 10 --min-level 0 --max-level 15 --osm-config /home/r3/osm/osm.xml --osm-cities /home/r3/osm/allCountries.txt

Создание карты из прочих векторных форматов

Для создания карт из прочих векторных форматов, таких как MapInfo, ESRI shapefile и т.д. необходимо использовать в качестве исходного файла карты конфигурационный XML файл. Обычно он помещается в ту же директорию, что и прочие файлы карты (слои). Образец файла конвертации должен быть в кодировке UTF-8 без BOM:

Файл начинается (заканчивается) тегом conv. В этом теге можно использовать следующие ключи: name - название карты, encoding - кодировка файлов для конвертации.

Дополнительно можно указывать параметры для изменения масштаба карты в разделе conversion, тег point. Это сделано для того, чтобы привести локальную систему координат карты, обычно выраженную в метрах (например, WGS84 геоцентрическая, проекция Гаусса-Крюгера и др.) в универсальную (международную) систему координат, выраженную в градусах (WGS84 геодезическая). Здесь необходимо указать соответствие точек одной системы координат и другой. Чем точнее значения, тем точнее будет отображена карта. Необходимо использовать 2-3 точки (лучше 3), для преобразования координат. Если какая-либо из точек будет не правильно указана, то конечная карта будет непропорциональной и неточной. Здесь можно максимально задать 3 точки, а если точек будет больше, остальные учитываться не буду. Лучше всего использовать точки ближе к краям конвертируемой карты (например, пересечения дорог).

Параметры lat (latitude) - широта (северная, южная), lon (longitude) - долгота (восточная, западная) задают цифры в градусной системе координат. При этом, если вы их берете в программе GPSMapEdit, например, с записанного трека, то необходимо брать значения не те, которые видны в градусах, минутах и секундах в строке состояния внизу окна, а значения, которые находятся в свойствах какого-либо объекта (на вкладке «Исходник», либо в английской версии «Source»), или самим перевести значение из градусов, минут и секунд в дробное число градусов.

Параметры x и y берутся из локальной системы координат в соответствующих точках. Это также могут быть дробные числа. В зависимости от формата файла эти значения могут как минимально изменяться, так и от нулевых значений до многих миллионов.

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

Ключ file используется для указания файла слоя. Если XML файл, используемый для конвертации, находится в другой папке, отличной от расположения файлов слоев, то необходимо указывать путь к файлу слоя. Обычно расширение этих файлов tab, shp и др. Если выдается ошибка при работе с файлом, попробуйте файл с таким же названием, но с другим расширением.

Далее следует указать свойства слоя features. В ключе type необходимо выставить значение типа элемента из карты формата *.avd (можно посмотреть в pfm.xml или osm.xml). Параметр name отвечает за отображение каких-либо свойств конвертируемого объекта. Это свойство будет использовано при отображении объекта на карте для его подписи. Здесь необходимо использовать только английские буквы и после знака доллара «$». В приведенном выше примере имена используемых полей можно найти в указанных там файлах, т.е. в *.tab. Если в файле используются символы, отличные от латинских, то файл будет конвертирован с ошибками или вообще не будет конвертирован. Если Вы хотите конвертировать такие файлы, то измените имена полей на латинские (английские).

Необходимо также указать уровень, на котором будут располагаться данные в файле карты. За это отвечает параметр max_level. В зависимости от того, какую карту Вы хотите получить, Вы можете сами ставить параметры от 0 до 2, или поставить такие же параметры как в pfm.xml или osm.xml.

Дополнительно можно использовать следующие параметры:

  • data_type - определяет фильтр по типу объекта. Это может быть полигон (pg), полилиния (pl), точка (poi). Пример: data_type=«pg».
  • address - определяет получение адреса по параметрам, указанным в значении.
  • region - определяет название региона по указанному значению. Пример: region=«$Region».
  • street - определяет название улицы по указанному значению. Пример: street=«$st».
  • street_type - определяет тип улицы по указанному значению. Пример: street_type=«$sts_type».
  • house - определяет номер дома по указанному значению. Пример: house=«$number».
  • is_city - определяет, является ли этот объект городом. Если не является, указывать не надо. Пример: is_city=«1».
  • is_street - определяет, является ли этот объект улицей. Если не является, указывать не надо. Пример: is_street=«1».
  • is_house - определяет, является ли этот объект домом. Если не является, указывать не надо. Пример: is_house=«1».
  • dump_attr отвечает за вывод на экран (в stdout) определенного поля (свойства) объекта. Работает точно так же как и параметр name, только выводит информацию для пользователя конвертирующего карту.

Знак доллара «$» в кавычках обозначает, что буквы следующие за этим знаком, нужно использовать как переменную и подставить вместо них значение этой переменной. Чтобы использовать обычный текст вместе с какой-либо переменной, необходимо этот текст выделить с двух сторон знаком |. Также можно использовать знак решетки (#), который позволит использовать данные из другого слоя. После # указывается поле, из которого следует взять значение, потом ставится точка (.). Второе значение показывает, какой слой (файл без расширения) использовать для получения данных. После этого опять ставится точка. Третий параметр говорит, какое поле из указанного слоя использовать. Четвертый параметр может использоваться, если значение необходимо искать в строковом поле или во множестве значений. Он указывается как поле, по которому фильтровать, знак равно и в одинарных кавычках процент, т.е. использовать первый параметр из этого выражения для поиска.

Пример: пусть есть слой «cities», где есть поля «ID», «Name», «Region»; и есть слой «streets», где есть поля «ID», «City», «CityID», «Name». Тогда для получения названия улицы и города: «$Name|, |#CityID.Cities.Name»; для получения названия города и области при поиске по другому полю: «$Name|, |#City.Cities.Region.Name='%'».

Если Вы заметили, что в файле слоя есть объекты с разными типами (можно вывести параметром dump_attr) и Вы захотели их отобразить разными типами, Вам необходимо использовать тег mod. Здесь необходимо указать условия фильтрации и тип объекта, который будет получен в конце конвертации. В параметре filter Вам необходимо задать условие как SQL запросе. Параметр type выставить точно, как описано выше. Если Вы используете данный способ, то в параметр dump_attr выведет только те поля, которые были использованы при конвертации.

В одном layer может быть сколько угодно features. В одном features может быть сколько угодно mod.

Если все-таки программа выдает ошибку при чтении файла, попробуйте его открыть какой-нибудь другой программой, например, Internet Explorer (если в теле файла будут ошибки, то данная программа отобразит только кусок файла без ошибок и остановится на месте ошибки - проверка будет осуществлена только на наличие открывающих и закрывающих тегов).

Используйте комментарии для того, чтобы потом было легче редактировать и использовать этот файл.

Was this helpful?
Thank you!