Создание адресного поиска в картах Garmin, с возможностью поиска номеров с буквенными и цифровыми индексами. - GPS - Каталог статей - В поход с GPS
Вторник
28.03.2017
16:24
Категории раздела
GPS [5]
Статьи касающиеся GPS тематики.
Вход на сайт
Поиск
Друзья сайта
Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

В поход с GPS

Каталог статей

Главная » Статьи » GPS

Создание адресного поиска в картах Garmin, с возможностью поиска номеров с буквенными и цифровыми индексами.

Перед чтением этой статьи рекомендую прочесть вот эту статью про создание адресного поиска в картах для Garmin:

http://gpspohod.ucoz.ru/publ/gps/sozdanie_kart_dlja_garmin_s_adresnym_poiskom/2-1-0-3

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

Далее по тексту под форматами Navitel и Garmin понимается польский формат в тайпсете Navitel и Garmin соответственно, т.е. речь идет об исходных форматах и их конвертации.

Как известно в Navitel и Garmin сильно отличается принцип построения адресного  поиска. Если кратко – в Навителе для каждого объекта-полигона, обозначающего здание, задается город улица и номер дома, при этом, номер дома может содержать не только цифры, но и буквы, таким образом, алгоритм адресного поиска приводит непосредственно к нужному зданию, а также возможен поиск домов номера которых содержат буквенные и цифровые индексы (20б, 39/2, 40 к.2 и т.п.).

В Garmin принцип совершенно иной (см. статью выше), адресные данные привязаны к полилиниям-улицам. При этом название улицы прописывается в поле label, и между любой парой узлов задается диапазон номеров домов, которые расположены по каждую сторону улицы. При этом алгоритм адресного поиска приводит не к полигону, обозначающему здание с соответствующим адресом, а к точке на линии, обозначающей улицу, при этом подразумевается, что дом с нужным адресом, будет находиться напротив этой точки, что в случае нашей российской действительности далеко не всегда так. Еще одна проблема – нет возможности задавать номера домов с индексами.

Долгое время мне казалось, что это тупик. Но при более подробном изучении вопроса оказалось, что все не так уж и плохо.  Хочу обратить внимание на несколько важных нюансов при построении поиска для Garmin:

  1. Линий – улиц с одним и тем же названием может быть несколько, при этом, все номера домов, принадлежащие этим линиям, считаются принадлежащим одной и той же улице.
  2. Вдоль каждой такой линии-улицы может располагаться один единственный дом.
  3. Узлы улицы, между которыми задается нумерация, не обязательно должны быть роутинговыми, более того у улицы может вообще не быть роутинговых узлов – это ни сколько не мешает работе поиска.
  4. Допустим, есть две улицы с похожим названием, например «проспект Ленина» и «бульвар Ленина», и на каждой из этих улиц есть дом с номером 17. Если при поиске адреса ввести номер дома 17, а в качестве названия улицы – просто «Ленина», то в результате поиска будет выдано два адреса: «проспект Ленина, 17» и «бульвар Ленина, 17»

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

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

 

Теперь о том, как добиться поиска номеров с индексами. Допустим, есть несколько домов с адресами: «Русская 57», «Русская 57а», «Русская 57б». Помня о нюансе п.4 (см. выше) конвертируем домики в линии-улицы с названиями: «Русская», «57а Русская», «57б Русская», и вдоль каждой и них прописываем один единственный дом с номером 57. Далее если нам надо найти дом  «Русская 57а» мы указываем улицу «Русская» и дом «57» - без буквы «а», в результате навигатор предложит три варианта: «Русская 57», «57а Русская 57», «57б Русская 57», из которых без особого труда можно выбрать нужный.

В результате имеем поиск домов с индексами.

Итоговую карту с поиском можно сделать двумя способами:

1)Скомпилировать по отдельности основную карту со всеми объектами и отдельно карту с домиками в виде полилиний – для адресного поиска, для нее задаем более низкий параметр , либо вручную отключаем ее отображение в приборе, чтобы не было наложения.

2)Домики в виде линий сделать одним из кастомных роутинговых типов (0x0d…0x13), а в тип-файле задать эту линию как невидимую(прозрачную), и полученные домики-линии добавить в основную карту с остальными объектами перед компиляцией.

Оба способа проверены и работают.

С использованием описанного принципа мною создан консольный конвертер адресного поиска из формата Навител в формат Garmin, для карт в польском формате.

Для его использования нужно пересохранить исходную карту в тайпсете Навител, установив в GPSMapEdit следующие настройки:

Tools -> Options -> Load & Save -> Settings for Polish Format -> Save Postal Address Information -> as “CityName=”, “RegionName=”, “CountryName=” attributes per object.

В результате работы конвертора будет получена карта в тайпсете Garmin, содержащая только адресную информацию, все остальные объекты будут отсеяны. Далее полученную карту можно скомпилировать либо отдельно, либо добавить в основную (предварительно сконвертированную в тайпсет Гармин) карту содержащую все остальные объекты. Компилировать карту нужно, как описано в уже упомянутой выше статье:

http://gpspohod.ucoz.ru/publ/gps/sozdanie_kart_dlja_garmin_s_adresnym_poiskom/2-1-0-3

 

Скачать ковертер v2.02 (05.05.2014)

 

Обновлено 28 июня 2016 г.

Обновлено 7 мая 2014 г.

Опубликовано 16 февраля 2011 г.

Богатырев Евгений

http://gpspohod.ucoz.ru

Категория: GPS | Добавил: DarkDiver (05.10.2014)
Просмотров: 795 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar