Конвертация OSM в Navitel

Спасибо, потестил свой скрипт, получил хороший результат. Для проверки на выходной файл карты натравил ещё раз скрипт:

StrNamePref_1.6a.pl sverdl_pref.mp

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

Нашёл на карте несколько интересных названий:

Памятник Клавиатуре - координаты 56.832539,60.607620

ул. Большой Шарташский каменный карьер - реально так улица называется? :slight_smile:

Бульвар Культуры - вопрос, слово Бульвар написано с большой буквы, это означает, что оно входит в название этой улицы? Или можно преобразовать в Культуры бул.? Почему спрашиваю, потому что у нас в городе есть проспект Бульвар Мира, где слово Бульвар является частью названия.

Если на карте есть названия улиц, в которых тип улицы является её названием, то в файле StrNamePref.ini надо написать их названия целиком, например:

тогда они не будут преобразованы.

Можно, конечно, поизвращаться и вставить правило, что если первая буква заглавная, а остальные маленькие, то не преобразовывать, но этот вариант мне не нравится.

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

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

щаз гляну
Upd: пока изучал, оно заработало. Видимо, сказывается моя сиволапость в области php :slight_smile:
А почему Fortress в авторах?

Прошу прощения, это мой скрипт залил файлы пачкой на сервер. Уберу sverdl из конвертации. P/S: проблема с нечитаемым Info.txt может быть в регистре первой буквы… У меня info.txt с маленькой буквы…

Памятник Клавиатуре - это действительно памятник клавиатуре :wink:

Улицы “Большой Шарташский каменный карьер” нет, это каменный карьер (вот и ошибочка нашлась).
“Бульвар” в названии “Бульвар Культуры” - не часть названия, а статусная часть. Будем менять.
Но всё завтра - посещение концерта Bondage Fairies отняло последние силы :slight_smile:

Обновлены конфигурационные файлы до версии r19.
Добавлены типы POI, в частности, домов, не выражающихся в масштабе карты (точка building=yes), обозначения видов леса (хвойный, лиственный, смешанный), некоторых POI и природных объектов.
Классы (приоритеты) маршрутов для развязок сделаны аналогичными конфигурации для Garmin (т.е. класс развязки равен классу соединяемого шоссе) в надежде на улучшение качества маршрутизации. Правда, знакомые мне маршруты по Свердловской области после изменения конфигурации остались прежними, но, как минимум, в теории “быстрый” маршрут должен чаще придерживаться шоссе.
Сконвертированные файлы рекомендую обрабатывать программами от St_Ranger - нормализатором названий улиц StrNamePref_1.6a и поиском перекрестков MPCross_1.2a

http://sderni.ru/77625 - добавил в нормализатор больше информативности. Теперь на выходе создаются следующие файлы:

имякарты**_2pref.txt** - улицы, в которых 2 и более префиксов, типа Бульвар Юности ул.
имякарты**_2word.txt** - улицы название которых состоит из 2 и более слов, для анализа регистра букв
имякарты**_all.txt** - названия всех улиц так, как они записаны в исходнике
имякарты**_nopref.txt** - названия всех улиц отсортированные без учета префиксов
имякарты**_repl.txt** - произведённые изменения (попросили добавить поле RoadID)

В файл StrNamePref.ini добавил популярные опечатки, когда вместо точки пишут букву ю, типа улю

В результате нашёл ещё несколько ошибок:

Брусницина
Брусницына

Бульвар Юности ул.
ул. Корабельный Проезд
ул. Спутников ул.

//Info.txt так и не подхватился :frowning:
счас он подхватился, но ссылка на юзера (dimuzz) не работает - т.к. в файлике он (юзер) указан с опечаткой (Dimuzz вместо dimuzz)

еще заметил крайне неприятный баг:
hw=service area=yes обрабатывается как замкнутая дорога. бывают случаи, когда эта “дорога” лежит сама по себе - не имея общих точек с другими дорогами
так вот, если ИЗ такого “замкнутого круга” проложить маршрут куда-нибудь - маршрут не проложиться. вернее проложиться “прямой зеленой стрелкой”

предлагаю данное сочетание тегов вообще не конвертировать. либо конвертировать в полигон, а не в вей

Поправил (мой косяк).

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

Допустим, в исходнике существует несколько неправильных вариантов, типа:

В файле StrNamePref.ini пришем:
25 лет Октября ул.|25 лет Октября улю|25 лет Октября

и все неправильные варианты будут заменены на 25 лет Октября ул.

Проблема с ошибкой отображения полигонов при нарезке в nm2 воспроизвелась, в том числе и на официальных картах и даже на map.navitel.su. Например, вот здесь: http://map.navitel.su/?lat=56.79834&lon=60.67535&zoom=14 на других масштабах лесной массив виден полностью. В автонавигаторе карта этого места ведет себя точно так же.
В обсуждении на форуме НН есть примеры и поярче: http://forum.navitel.su/index.php?showtopic=13380&st=0&p=163823&#entry163823 или http://forum.navitel.su/index.php?showtopic=13380&st=20&p=164237&#entry164237
В общем, данный эффект - однозначно баг формата карт или движка Навитела.
Есть, однако, один нюанс: если большой полигон в некотором месте один (например, одиночное озеро) - ошибок нарезки я не встречал. Если же имеет место наложение полигонов (например, пересекаются лесной массив и полигон городской застройки) - похоже, что порядок их отображения случаен. То ли это баг движка, то ли порядок слоев вообще не определен стандартом отрисовки (т.е. сверху может быть как город, так и лес).
Если это действительно ошибка наложения полигонов - принципиально проблему можно, видимо, поправить в исходнике (в любой точке оставлять только один полигон), но как это сделать - непонятно. Разве что как-то вырезать куски в полигоне бОльшей площади…

Поэкспериментировал… Всё так и есть… Если делать мультиполигоны, то всё отображается правильно, без “пропавших” кусков… Например, в полигоне города начинают корректно отображаться газоны, лесопосадки и т.д.
Но мультиполигоны, я думаю, это слишком заморочено…
А с дублированием name у полигонов ничего не поделать? Ошибка где-то у нас, т.к. на официальных картах этого нет…

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

это все нужно фиксить в OSM, а не в получаемом mp

еще у меня такой вопрос
пытаюсь периодически корректировать роутинг по знакомым маршрутам
можно ли где-то наглядно посмотреть индексы скорости у дорог? может быть кто-то уже поднял подобный рендерер?

С полигонами, вроде, теперь всё понятно :slight_smile:
А на каком этапе конвертации из OSM данных полигоны режутся на квадраты и каждому присваивается name полигона? Или это сам движок Навитела режет/именует? И как это обойти? (или это фирменный секрет навителовцев? :slight_smile: )
P.S. пока писал это длинное сообщение, выяснил, что нарезаются полигоны и дублируются имена при конвертации из GPSMapEdit (т.е. и при конвертации mp из OSM и при рисовании полигонов в самом MapEdit’e)
Может, это фича not registred версии, коей подавляющее большенство пользуется?

Эта “фича” подгоняет здоровенные (мульти-)полигоны под то, что способен переварить крохотный мозг прибора :). Кроме того это позволяет запихнуть все объекты в небольшие квадратики, и движку при отрисовке смотреть только на то, что может оказаться на экране.
Так что обходить придется не только в конверторе, но и в формате, программе отображения, и железе, чтобы оно осилило непорезанную на тайлы базу.

Можно подробнее - какому полигону какую роль нужно присваивать? В “фоновом режиме” можно было бы делать (если, конечно, нет противопоказаний с точки зрения “OSM best practices”).

А эту проблему не смог воспроизвести :frowning:

Моя ошибка, исправлю при следующей конвертации.

Сочетания пока не обрабатываются osm2mp :frowning:

Еще есть просьба выводить улицы совсем без префиксов. На днях подчищал адреса Екатеринбурга в OSM, так во многих местах в номерах домов встречается улица без префикса (сам так косячил поначалу), в результате улица тоже “двоится” в поиске.
Задача, конечно, для бота, но любое подспорье хорошо.

А почему у Навитела те же большие полигоны типа озеро/город не режутся на квадратики? (“нарезку” у сконвертированных карт довольно четко видно на экране прибора)
А насчет полигонов, проблема, в основном, в городах, где присутствует полигон place. Его я outer и попробовал сделать… Ну и приходится всё остальное, типа парков/гаражей/кладбищ/газонов делать inner, что, как я понимаю, не есть хорошо… Но в этом случае всё прорисовывается правильно… Но, если убрать place, адресация пропадает…