WebGIS

В Wialon Local включен стандартный сервер WebGIS. По умолчанию вся адресная информация, задействованная при мониторинге объектов и в отчетах, берется именно с него.

WebGIS работает с файлами в формате AVD. Файлы такого формата могут быть созданы из других векторных форматов: MP, MapInfo, ESRI Shape, OSM (OpenStreetMap). При этом исходная карта должна быть в системе координат WGS-84 (в градусах).

Архив с исходными картами в векторном формате и конфигурационными файлами необходимо загрузить на сервер. Набор файлов зависит от формата исходной карты. Для распаковки на сервере архив не должен содержать вложенных папок.

Параметры компиляции

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

Тег карты (Map tag)
Идентификатор для карты (город, страна и т. п.). Может использоваться как для поиска, так и в качестве фильтра для рисования.

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

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

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

Адресный поиск (Add search)
Добавить в карту информацию для поиска.

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

Очистить подложку (Clear background)
Не рисовать карты с большим приоритетом, т. е. те карты, которые находятся в нижних слоях. При наложении участков карт отрисовывается та, которая находится на самом верху (с большей детализацией), а перекрытые участки нижних карт не обрабатываются. В данном случае подложка карты окрашивается в белый. Рекомендуется использовать эту опцию.

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

Ограничить доступ (Skip default render)
Не добавлять в файл информацию по отрисовке карты по умолчанию. Отображение карты доступно только для тарифных планов с соответствующими тегами карт.

Отключить адреса (Skip addresses)
Не добавлять в файл информацию для обратного геокодирования. Таким образом, при нажатии на точку на карте показываются координаты, а не адрес.

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

При создании карты из файлов в польском формате используется конфигурационный XML-файл. Для загрузки на сервер формируется архив, который содержит исходную карту в формате MP и конфигурационный файл XML.

По ссылке можно скачать стандартный конфигурационный файл преобразований типов MP-файла в типы AVD-файла (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>

В конфигурационном XML-файле используются следующие параметры:

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
Имя объекта, области, точки, линии, т.е. пользовательский маркер.

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

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

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

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

allCountries.txt — вспомогательный файл для адресной привязки. Документ содержит список городов мира с указанием численности населения, на основе которой по определенному алгоритму рассчитывается приблизительный радиус города.

osm.xml — конфигурационный файл преобразований типов OSM-файла в стандартные типы AVD-файла.

Стандартный конфигурационный файл преобразований типов OSM-файла в типы AVD-файла (osm.xml) и allCountries.txt можно скачать здесь.

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

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

XML-файл должен быть в кодировке UTF-8 без BOM:

<conv name="cheljabinskaja" encoding="utf8">
	<layer file="chel-roads-l.shp">
                 <features max_level="1" name="$NAME" use_addr="1" is_street="1" region="$ADDR_REGIO" street="$NAME">
                        <mod filter="(highway ='bridleway') or (highway ='living_street')" type="14"/>
			<mod filter="(highway ='path') or (highway ='steps')" type="16"/>
		</features>
	</layer>
	<layer file="chel-buildings-a.shp">
		<features type="210" max_level="1" name= "$ADDR_HOUSE" is_house="1" region="$ADDR_REGIO" street="$ADDR_STREET" house="$ADDR_HOUSE" use_addr="1"/>
	</layer>		
	<layer file="chel-city-p.shp">
		<features type="64" max_level="2" name="$NAME" address="$NAME">
			<mod filter="PLACE ='village'" type="66" is_city="1" region="$ADDR_REGIO" max_level="1" name="$NAME" address="$NAME"/>
			<mod filter="PLACE = 'town'" type="65" is_city="1" region="$ADDR_REGIO" max_level="1" name="$NAME" address="$NAME"/>
			<mod filter="PLACE = 'city'" type="64" is_city="1" region="$ADDR_REGIO" max_level="1" name="$NAME" address="$NAME"/>
		</features>
	</layer>
	<layer file="chel-landuse-a.shp">
		<features type="166" max_level="1" name="$NAME">
			<mod filter="LANDUSE ='Military'" type="173" max_level="1" name="$NAME"/>
			<mod filter="LANDUSE ='cemetery'" type="147" max_level="1" name="$NAME"/>
			<mod filter="LANDUSE ='commercial'" type="151" max_level="1" name="$NAME"/>
			<mod filter="LANDUSE ='forest'" type="165" max_level="1" name="$NAME"/>
			<mod filter="LANDUSE ='nature_reserve'" type="184" max_level="1" name="$NAME"/>
			<mod filter="LANDUSE ='residential'" type="166" max_level="1" name="$NAME"/>
		</features>
	</layer>	
	<layer file="chel-admin-a.shp">
		<features type="0x004a" shape="PG" avd_type="0" max_level="0"/>
	</layer>
</conv>

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

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

Ключ file используется для указания файла слоя.

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

Необходимо также указать уровень, на котором будут располагаться данные в файле карты. За это отвечает параметр 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».

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

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

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

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

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

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

О спецификации формата читайте здесь.

Was this helpful?
Thank you!