OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#351 2017-08-02 16:50:23

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

Стиль MapTourist файл polygons:

(building=* | bridge=yes & area=yes) { name 'д.${addr:housenumber} (${name}) ${addr:street}' | 'д.${addr:housenumber} ${addr:street}' | 'д.${addr:housenumber}'} [0x13 resolution 24]

На экране видим (если в TYP 0x13 разрешено показывать) д.1 Ленина проспект. У MapTourist в TYP 0x13 стоит "невидимая надпись" и видно только при наведении курсора. У бери из строки "д." и будет просто 1 Ленина проспект. Это все на зданиях building
Стиль Stranger файл polygons:

building=* { name '${addr:housenumber} (${name}, ${name:full})' | '${addr:housenumber} (${name})' | '${name} (${name:full})' | '${name}' | '${name:full}' | '${addr:housenumber}' } [0x13 resolution 24]

тут номер дома без улицы.
Я сделал так как MapTourist (но без "д.") в конец строки добавил "продолжить" по ангельски.
и в файл points добавил строку как в полигонах Stranger. Теперь я вижу номера домов, а наведя курсор номер дома и название улицы.
Точка или полигон с номером дома и именем улицы это building
А как называется точка с номером квартир и подъезда. ref ведь тоже в имя добавить можно. Может и addr:flats можно добавить, пробуй.

Offline

#352 2017-08-03 02:14:02

LLlypuk82
Member
From: Витебск (Беларусь)
Registered: 2012-12-23
Posts: 2,320
Website

Re: Mkgmap

Eugeny_B wrote:

в файл points добавил строку как в полигонах Stranger

Но это сработает только на точках, имеющих building=*, в то время как адресные точки не имеют этого тега (только адреска).

Eugeny_B wrote:

Точка или полигон с номером дома и именем улицы это building

Не понял...

Eugeny_B wrote:

вижу номера домов, а наведя курсор номер дома и название улицы

Тоже хотел подобного эффекта добиться (особенно для подъездов). А как получается, что присвоив один и тот же TYP (0x13) по двум разным условиям — подписи (разные!) одновременно и видимые и невидимые? Видимость (шрифт и всё такое) выставляется галкой для TYP, насколько знаю. Но, если TYP один и тот же, то не важно, по какому условию он был присвоен — всё равно его название может быть либо видимым, либо невидимым.
Иными словами, не въехал, как получилось одному и тому же TYP (который 0x13) прикрутить одновременно (невидимые улица+номер) и (видимый только номер)???
Для подъездов сделал так (0x1151f картинку переделал на свой лад):

entrance=staircase | entrance=yes { name '${ref} (${addr:flats})' | '${addr:flats}' | '${ref}' } [0x1151f resolution 24]

А хотел добиться, чтобы всегда были видны только номера ref, а наведя курсор — получить addr:flats.
Для адресных точек сделал пока так (но посмотрю, что получится по твоему варианту):

addr:housenumber=* & addr:street=* & building!=* & entrance!=* { name '${addr:housenumber}' } [0x1161a resolution 24]

0x1161a тоже сам намалевал.
Всё — только для points.

Offline

#353 2017-08-03 16:24:01

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

В опциях mkgmap поставь add-pois-to-areas
Points

# Точки созданные из полигонов mkgmap с опцией add-pois-to-areas
# Здания - для отображения номеров домов
(building=* | bridge=yes & area=yes) & mkgmap:area2poi=true { name '${addr:housenumber} (${name})' | '${addr:housenumber}'} [0x6402 resolution 24 continue with_actions default_name 'здание']

# Удалить точки созданные из полигонов mkgmap с опцией add-pois-to-areas
mkgmap:area2poi=true {deletealltags}

То есть автоматически ставить точки только на полигоны зданий, а с других полигонов автоматически поставленные удалить. Если нужны автоматические точки на еще каком нибудь полигоне, впиши эти точки в пустую строку (строки) выше правила Удалить...
Polygons

(building=* | bridge=yes & area=yes) { name '${addr:street} ${addr:housenumber} (${name})' | '${addr:street} ${addr:housenumber}' | '${addr:housenumber}'} [0x13 resolution 24]

Я не мапер и не программист, что такое точка только с адреской? Вход в подъезд даже по моему свой тэг имеет. Ну да имеет, ты же пишешь. А что за адреска такая нее пойму.
0x6402 - 1 прозрачный пиксел с подписью.

Last edited by Eugeny_B (2017-08-03 16:38:05)

Offline

#354 2017-08-10 18:46:49

alexgoussev
Member
Registered: 2017-08-10
Posts: 5

Re: Mkgmap

Осваиваю mkgmap. Пробую использовать свой стиль. Mkgmap мой стиль видит, но применять не хочет.

Что делал.

Скачал Mkgmap r3991.
В JOSM v.12542 создал линию из пяти точек, назначил ей highway=path и сохранил в Map.osm:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
  <node id='-38989' action='modify' lat='51.74690727846' lon='86.43364897728' />
  <node id='-38990' action='modify' lat='51.74882031029' lon='86.44248953819' />
  <node id='-38991' action='modify' lat='51.74924541747' lon='86.45090094566' />
  <node id='-38992' action='modify' lat='51.75222105571' lon='86.45914069176' />
  <node id='-38993' action='modify' lat='51.75253986247' lon='86.47055617332' />
  <way id='-38988' action='modify'>
    <nd ref='-38989' />
    <nd ref='-38990' />
    <nd ref='-38991' />
    <nd ref='-38992' />
    <nd ref='-38993' />
    <tag k='highway' v='path' />
  </way>
</osm>

Создал минимальный стиль в папке style - файлы version, options и lines.
Файлы version и options взял из examples\styles\default
Файл lines содержит строку:

highway=path [0x13 road_class=0 road_speed=1 level 3]

Создал файл с опциями mkgmap.args:

input-file=Map.osm
style-file=style
check-styles
list-styles
verbose
transparent
family-id=6324
product-id=1

Запустил mkgmap:

java -Xmx256M -jar mkgmap.jar -c mkgmap.args

Сгенерённый файл 63240001.img открыл GPSMapEdit и сохранил в формате .mp
Моя линия в 63240001.mp выглядит так:

[POLYLINE]
Type=0x16
Data0=(51.74691,86.43365),(51.74882,86.44249),(51.74925,86.45090),(51.75221,86.45914),(51.75254,86.47056)
[END]

Я ожидал, что Type будет 0x13. Подскажите, пожалуйста, что я делаю не так?

Offline

#355 2017-08-11 14:46:37

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

Скорей всего MkgMap не видит твой стиль, а берет из стиля по умолчанию (default) из файла lines строку

highway=footway|highway=path|highway=steps [0x16 road_class=0 road_speed=0 resolution 23]

И версия 3991 еще я бы сказал экспериментальная, возьми стабильную 3980

Last edited by Eugeny_B (2017-08-11 14:48:02)

Offline

#356 2017-08-11 15:13:59

LLlypuk82
Member
From: Витебск (Беларусь)
Registered: 2012-12-23
Posts: 2,320
Website

Re: Mkgmap

style-file=style — тут должен быть путь к папке (а не просто её название) с файлами options, lines, polygons и т. п.
Также необходимо наличие файла TYP, который должен содержать все эти 0x13.

Offline

#357 2017-08-11 15:17:25

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

LLlypuk82 wrote:

style-file=style — тут должен быть путь к папке (а не просто её название) с файлами options, lines, polygons и т. п.
Также необходимо наличие файла TYP, который должен содержать все эти 0x13.

Нет можно и без TYP только тогда отображение будет так как зашито в прошивке прибора или в программе (BaseCamp или MapSource).

Offline

#358 2017-08-11 15:26:42

LLlypuk82
Member
From: Витебск (Беларусь)
Registered: 2012-12-23
Posts: 2,320
Website

Re: Mkgmap

Да, но речь шла о своём стиле. А как его создать вслепую? Ведь результат будет виден только через те самые зашитые стили.

Offline

#359 2017-08-11 15:53:37

alexgoussev
Member
Registered: 2017-08-10
Posts: 5

Re: Mkgmap

Eugeny_B wrote:

Скорей всего MkgMap не видит твой стиль, а берет из стиля по умолчанию
И версия 3991 еще я бы сказал экспериментальная, возьми стабильную 3980

В опциях у меня указано check-styles, list-styles и verbose
Судя по выводу в консоли, наличие стиля mkgmap распознаёт:

Found one style in style
finished check-styles
The following styles are available:
style                1: No summary available
Number of MapFailedExceptions: 0
Number of ExitExceptions: 0

Версию 3980 я пробовал - всё то же самое.

Offline

#360 2017-08-11 16:01:07

alexgoussev
Member
Registered: 2017-08-10
Posts: 5

Re: Mkgmap

LLlypuk82 wrote:

style-file=style — тут должен быть путь к папке (а не просто её название) с файлами options, lines, polygons и т. п. Также необходимо наличие файла TYP, который должен содержать все эти 0x13.

Из описания опций: "The directory path must be absolute or relative to the current working directory when mkgmap is invoked."
По выводу в консоли видно, что как минимум присутствие моего стиля mkgmap понимает. TYP файл необязателен.

Про файлы стиля цитата из руководства: "The only one of these files that is actually required is the version file, as that is
used to recognise the style. At least one of the points, lines or polygons files must be present or else
the resulting maps will be empty." У меня в папке стиля version, options и lines.

Offline

#361 2017-08-11 16:30:07

alexgoussev
Member
Registered: 2017-08-10
Posts: 5

Re: Mkgmap

LLlypuk82 wrote:

Да, но речь шла о своём стиле. А как его создать вслепую? Ведь результат будет виден только через те самые зашитые стили.

Я пока тестю. Понятно, в реальном применении я буду подключать кастомный typ. А пока результат видно с помощью GPSMapEdit, которым я конверчу получившийся img в mp. И результат такой, что mkgmap папку моего стиля видит, но стиль не применяет.

В общем, залез я в mkgmap.jar и внутри него заменил в папке styles\default файлы lines и options на мои. После этого всё заработало.

Вывод - последние версии mkgmap опознают присутствие кастомного стиля в отдельной папке, указанной в опции style-file, но применяют всё-равно стиль default, который зашит внутри.

Offline

#362 2017-08-11 17:20:19

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

А как же в моих батфайлах с выбором разных стилей все работает? Значит Ваш Вывод не правильный. Попробуй папку со стилем обозвать по другому и повторить эксперимент. Мне кажется что в путях проблема. И я во внутрь mkgmap.jar не лазил, но все работает.

Offline

#363 2017-08-11 17:39:51

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

alexgoussev wrote:

Я пока тестю.

Посмотри мои батфайлы на предыдущей странице.
Я их создавал в текстовом редакторе в DOS-кодировке 866, тогда на экране русский текст отображается нормально, а не кракозябрами.
В сообщении 326 есть ссылка на набор прог установи ее, потом можно обновит проги. Но будет видно все пути, что и где лежит.

Last edited by Eugeny_B (2017-08-11 17:42:51)

Offline

#364 2017-08-11 17:41:05

alexgoussev
Member
Registered: 2017-08-10
Posts: 5

Re: Mkgmap

Решил проблему. Нельзя выносить опцию style-file во внешний файл с опциями. Если это делать, то поведение будет как у меня.
Если указывать в командной строке --style-file=моя _папка_стиля, тогда всё работает.

Это баг или фича? Думаю, скорее, баг, так как сообщения в консоли в обоих случаях выдаются одинаковые - "стиль есть, всё ок".

Offline

#365 2017-08-11 17:45:39

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

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

Last edited by Eugeny_B (2017-08-11 17:49:33)

Offline

#366 2017-11-28 20:27:02

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

Ребята, а кто нибудь разобрался как 3D карты делать?
http://gis.19327.n8.nabble.com/a-new-DE … 05056.html
Ну и другие смежные темы
http://gis.19327.n8.nabble.com/Mkgmap-D … 24443.html

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

Offline

#367 2018-02-19 20:12:57

ValentinAK
Member
From: notMoscow, Russia
Registered: 2010-07-06
Posts: 447
Website

Re: Mkgmap

Eugeny_B, можно вас попросить опубликовать файл настройки адресации из своего стиля (inc/address)? 
Дошла у меня очередь и до адресного поиска, но что-то никак не могу вникнуть в его логику...


Еще одна ежедневная сборка OSM для Garmin.

Offline

#368 2018-02-19 20:34:30

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

# Этот файл содержит все правила, чтобы настроить адресную информацию из тегов,
# которые добавляются при обработке границ.
#
# Состояние: 01.02.2018
# -----------------
# Version : 0.01 - 09.12.2017: Базовый функционал mkgmap 4000
# Version : 0.02 - 10.12.2017: Адаптированн под Россию
# Version : 0.03 - 15.12.2017: Адаптированн для использования со "status" файлом стиля
# Version : 0.04 - 07.01.2018: Добавлен district

# ====================================================================
# first set the country code
# Сначала устанавливаем код страны
# ====================================================================
mkgmap:country!=* & mkgmap:admin_level2=* { set mkgmap:country='${mkgmap:admin_level2}' }
# mkgmap:country!=* & addr:country=* { set mkgmap:country='${addr:country}' }
# mkgmap:country!=* & addr:country=* { set mkgmap:country='${addr:country|country-ISO:}' }
# mkgmap:country!=* & addr:country=* { set mkgmap:country='${country-ISO:alpha2}' }
# mkgmap:country!=* & addr:country=* { set mkgmap:country='${country-ISO:alpha3}' }
# mkgmap:country!=* & is_in:country=* { set mkgmap:country='${is_in:country|country-ISO:}' }

# ====================================================================
# country specific rules first
# Специфические правила для страны первыми
# ====================================================================

# Russia = RUS
# ------------------------------------------------------------
# mkgmap:country=RUS & mkgmap:city!=* & (mkgmap:admin_level4='Санкт-Петербург' | mkgmap:admin_level4='Москва' | mkgmap:admin_level4='Севастополь') { set mkgmap:city='${mkgmap:admin_level4}' }
mkgmap:city!=* & (mkgmap:admin_level4='Санкт-Петербург' | mkgmap:admin_level4='Москва' | mkgmap:admin_level4='Севастополь') { set mkgmap:city='${mkgmap:admin_level4}' }
mkgmap:district!=* & mkgmap:admin_level6=* { set mkgmap:district='${mkgmap:admin_level6}' }
mkgmap:district!=* & mkgmap:admin_level5=* { set mkgmap:district='${mkgmap:admin_level5}' }
mkgmap:district!=* & addr:district=* { set mkgmap:district='${addr:district}' }
mkgmap:region!=* & mkgmap:admin_level4=* { set mkgmap:region='${mkgmap:admin_level4}' }
mkgmap:region!=* & addr:region=* { set mkgmap:region='${addr:region}' }
( mkgmap:region=* | mkgmap:district=* ) { set mkgmap:region='${mkgmap:district}, ${mkgmap:region}'|'${mkgmap:region}'|'${mkgmap:district}' }
mkgmap:region=* & (mkgmap:admin_level4='Санкт-Петербург' | mkgmap:admin_level4='Москва' | mkgmap:admin_level4='Севастополь') { set mkgmap:region='${mkgmap:district}' }
# ( mkgmap:city!=* | mkgmap:city!=* ) & (mkgmap:admin_level7='Санкт-Петербург' | mkgmap:admin_level7='Москва' | mkgmap:admin_level7='Севастополь') { delete admin_level }

# ====================================================================
# common rules for all the rest of countries
# Общие правила для всех остальных стран
# ====================================================================
mkgmap:region!=* & mkgmap:admin_level6=* { set mkgmap:region='${mkgmap:admin_level6}' } 
mkgmap:region!=* & mkgmap:admin_level5=* { set mkgmap:region='${mkgmap:admin_level5}' } 
mkgmap:region!=* & mkgmap:admin_level4=* { set mkgmap:region='${mkgmap:admin_level4}' } 
mkgmap:region!=* & mkgmap:admin_level3=* { set mkgmap:region='${mkgmap:admin_level3}' } 
mkgmap:region!=* & is_in:county=* { set mkgmap:region='${is_in:county}' } 

# ------------------------------------------------------------
# if mkgmap:city is not yet set, try to get it from level 8, 7,9, 10 (in that order)
# если mkgmap:city еще не установлен, попробуйте получить его из уровней 8, 7, 9, 10 (в таком порядке)
# ------------------------------------------------------------
# mkgmap:city!=* & mkgmap:admin_level8=* { set mkgmap:city='${mkgmap:admin_level8}' } 
mkgmap:city!=* & mkgmap:admin_level7=* { set mkgmap:city='${mkgmap:admin_level7}' } 
mkgmap:city!=* & mkgmap:admin_level9=* { set mkgmap:city='${mkgmap:admin_level9}' } 
mkgmap:city!=* & mkgmap:admin_level10=* { set mkgmap:city='${mkgmap:admin_level10}' } 
mkgmap:city!=* & mkgmap:admin_level11=* { set mkgmap:city='${mkgmap:admin_level11}' } 
mkgmap:city!=* & mkgmap:admin_level8=* { set mkgmap:city='${mkgmap:admin_level8}' } 
mkgmap:city!=* & is_in:city=* { set mkgmap:city='${is_in:city}' }
mkgmap:city!=* & addr:city=* { set mkgmap:city='${addr:city}' }

# ------------------------------------------------------------
mkgmap:postal_code!=* & mkgmap:postcode=* { set mkgmap:postal_code='${mkgmap:postcode}' } 
mkgmap:postal_code!=* & addr:postcode=* { set mkgmap:postal_code='${addr:postcode}' } 

# ------------------------------------------------------------
 mkgmap:street!=* & addr:street=* & addr:suburb=* { set mkgmap:street='${addr:street} (${addr:suburb})' }
mkgmap:street!=* & addr:street=* { set mkgmap:street='${addr:street}' }
mkgmap:street!=* & addr:housename=* { set mkgmap:street='${addr:housename}' }

# ------------------------------------------------------------
mkgmap:housenumber!=* & addr:housenumber=* { set mkgmap:housenumber='${addr:housenumber}' }

# ------------------------------------------------------------
mkgmap:phone!=* & phone=* { set mkgmap:phone='${phone}' }
mkgmap:phone!=* & contact:phone=* { add mkgmap:phone='${contact:phone}' }

# ------------------------------------------------------------
mkgmap:is_in!=* & is_in=* { set mkgmap:is_in='${is_in}' }

Offline

#369 2018-02-21 01:08:22

ValentinAK
Member
From: notMoscow, Russia
Registered: 2010-07-06
Posts: 447
Website

Re: Mkgmap

Eugeny_B, спасибо! Получил письмо, но предлагаю продолжить общение тут. Может кто еще подтянется из заинтересованных.
Я так понял, что ваш метод заключается в принудительном назначении РФ всему, что попадает в карту. Мне такой метод не подходит, т.к. одновременно в сборке присутствует территории нескольких разных государств. Так что адресные настройки должны быть с учетом этой специфики.
С автоматизацией у меня проблем нет - все отлажено и работает уже много лет автоматически в ежедневном режиме. Сейчас же просто перехожу на актуальную версию Mkgmap. А для этого нужно полностью переписать все конфиги (их логика несколько изменилась за 8 лет). Много всего уже поменял, многое еще предстоит. Но весь имевшийся функционал уже переехал. Временно и не регулярно новые сборки пока появляются тут:
https://maptourist.org/tmp/
Теперь же хочу побороть адресный поиск. Но никак не вникну в логику этого дела - как происходит присвоение объектам адресной информации. У меня пока половина точек даже не может подхватить admin_level=2 (страну). Вторая половина вообще - кто в лес, кто по дрова. А части точек населенных пунктов, дорог и POI не присваивается никакой адрески.  И как это исправить я пока не придумал. Видимо в каких-то случаях данные о границах из сгенерированных заранее bnd-файлов не срабатывают как надо. Пытаюсь разобраться. Может я не понимаю сути механизма location-autofill=bounds? Как и в каком месте должны присваиваться объекту данные о стране, области и прочим почтовом индексе? Начнем с простого. Допустим, есть тестовая карта Псковской области с частью прилегающих территорий Беларуси и Латвии. И на российской территории есть точка с такими тегами внутри одноименного полигона и более ни чем:
place=hamlet
name=какая-то-деревня
Она расположена в границах РФ (admin_level=2), Псковской области (admin_level=4) Но начнем со страны. Для этого в заранее очищенный файл inc/address добавляем строчку:

 mkgmap:country!=* & mkgmap:admin_level2=* { set mkgmap:country='${mkgmap:admin_level2}' } 

Я ее понимаю так, что во все индексируемые объекты должна упасть информация от границы с тегом admin_level=2 из прекомпилированного набора bnd-файлов. Но нет, адресная информация о стране РФ в нашу точку не добавляется. Собственно как и во всё остальное в границах РФ. Запускаем Gpsmapedit и смотрим, чего там получилось. Наблюдаем печальную картину: всем индексируемым объектам за пределами РФ правильно присвоился код страны и название государства (Беларусь BLR, Латвия LVA). Все, что российское значится как COUNTRY ABC.
Добавляем строчку:

 mkgmap:country!=* & addr:country=* { set mkgmap:country='${addr:country|country-ISO:}' }

Теперь находящаяся рядом деревня с заботливо прописанным country= RU получила в адрес такую информацию. Первая по-прежнему ее не имеет. Но такой способ я не хочу вообще использовать, т.к. вполне вероятны ошибки при заполнении адресных тегов на разных объектах и унификации наверняка не получится. Так что строчку эту убираем. Метод is_in так же для этого не рассматриваем.
Теперь пробуем добавить сведения о области:

mkgmap:country=RUS & mkgmap:region!=* & mkgmap:admin_level4=* { set mkgmap:region='${mkgmap:admin_level4}' } 

Разумеется, ничего не происходит, ибо выше было зафиксировано неработающее присвоение в границах РФ адресной информации о стране. Попробуем без привязки к государственной принадлежности:

 mkgmap:region!=* & mkgmap:admin_level4=* { set mkgmap:region='${mkgmap:admin_level4}' } 

Названия областей прекрасно присваиваются. Но в случае с РФ без привязки к стране.

В связи с этим у меня вопрос: это я как-то не верно размышляю и вообще все не правильно делаю, или в ОСМ какие-то проблемы с границей России?

ЗЫ:
Кстати у меня налажено еженедельное обновление этих файлов с границами при помощи Osmconvert и Osmfilter. Работает заметно быстрее, чем Osmosis. Взято из Вики по Mkgmap. На FreeBSD это происходит примерно так:

OC?=		../osmfilter/osmconvert
OF?=		../osmfilter/osmfilter
MKG?=		/usr/local/bin/java -cp ./mkgmap4107.jar
RM?=		/bin/rm -f --

mkgbnd:
	${RM} local-boundaries.osm.gz
	${OC} local.osm.pbf --out-o5m >local.o5m
	${OF} local.o5m --keep-nodes= --keep-ways-relations="boundary=administrative =postal_code postal_code="  >local-boundaries.osm
	${RM} local.o5m
	gzip local-boundaries.osm
	${RM} ./boundary/local/*
	${MKG} uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor \
	./local-boundaries.osm.gz ./boundary/local/

Last edited by ValentinAK (2018-02-21 02:39:01)


Еще одна ежедневная сборка OSM для Garmin.

Offline

#370 2018-02-21 03:45:48

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

Я указываю страну в файле конфигурации при запуске mkgmap Country=Россия Abbreviation=RUS
Это Вы называете принудительное назначение РФ? Но если не указывать, то как сказано в документации (mkgmap_r4125 option.txt) будет значение по умолчанию COUNTRY ABC. Я считаю, что это ошибка автора программы. По идее имя страны mkgmap должен брать из файлов границ, причем с учетом name-tag-list: и code-page: 1251.
Я не дошел до такого способа проверки как Вы. Я просто грузил карту в прибор и смотрел, что появлялось в поиске адреса.
При выборе страны.

mkgmap:country!=* & mkgmap:admin_level2=* { set mkgmap:country='${mkgmap:admin_level2}' }

Эта строка давала название страны Россия. Прилегающие Эстония.

# mkgmap:country!=* & addr:country=* { set mkgmap:country='${addr:country}' }

Эта давала (добавляла) все что наши маперы сами вносили в тег addr:country объекта (разные варианты) по этому я ее отключил

mkgmap:country!=* & addr:country=* { set mkgmap:country='${addr:country|country-ISO:}' }

Эта давала (добавляла) название страны по английски. Думаю об этом писать надо здесь http://gis.19327.n8.nabble.com/Mkgmap-D … 24443.html
В общем я использовал метод тыка, да и собираю я карту только России.
Я отталкивался от прибора. Как прибор воспринимает адрес. А прибор воспринимает его так поле: № дома, поле: Имя улицы, поле: Имя города(нас.пункта), поле: регион и поле: страна (RUS)
Так как адресация в mkgmap основана на admin_level (возможно за границей оно так и есть? т.е. admin_level соответствует административно территориальному делению) Но у нас в России это почему-то соответствует административно политическому делению. Ну и начал я смотреть разные карты, на приборе и компьютере. И что выяснил, что когда мы ищем города то это мы ищем населенные пункты отмеченные точками. И к адресному поиску это не имеет ни какого отношения. Можно проверить на Вашей карте, спокойно находится город Сергиев Посад, но ни один адрес в таком городе не найдете Вы даже город такой при поиске адреса не найдете. А вот если при поиске адреса задать не "Сергиев Посад", а "городское поселение Сергиев Посад" (правда на приборе такое набрать невозможно) то на компьютере можно найти адреса (но опять же не все, потому что некоторые Маперы прописали тег addr:city на некоторые улицы или на дома) примеры я привожу сейчас от балды. Я проверял разные населенные пункты и во многих это присутствует. Далее как я уже говорил прибор, как и нормальные люди под адресом понимает №дома, имя улицы, имя населенного пункта, имя региона (область, район), имя страны. Вот я и поставил себе задачу привести данные ОСМ к такому виду, иначе ничего хорошего не получится (с маперами не договориться, у них одно правило не мапить под рендер), но из положения надо выходить. И я как мне кажется нашел более менее приемлимый способ. Скачав данные ОСМ я сначала обрабатываю их программой Osmosis (смотри сообщения №330 и №332 в этой теме) что бы всем городам (city, town) присвоить admin_level7 (он в России не используется), а остальным населенным пунктам admin_level11 (тоже в России не используется) и только после этого я создаю файлы границ, методом тыка переставил строки в файле address и создал карту. Но как выяснилось, все-таки вкралась ошибка и в городе Набережные Челны ничего не найти. Стал разбираться и нашел что город разделен на три района и вот этим районам мапер присвоил admin_level7. Сейчас я скачанные ОСМ данные сначала обрабатываю программой Osmfilter чтобы модифицировать теги admin_level7 в admin_level8, затем Osmosis обрабатывает населенные пункты и только потом границы и карта.
Итог для России
admin_level2 - страна
admin_level4 - города Москва, Санкт-Петербург, Севастополь
admin_level4 - регион (области, края и т.д.)
admin_level5 - добавляем в регион (районы Москвы, Санкт-Петербурга, Севастополя)
admin_level6 - добавляем в регион (районы)
admin_level7 - города
admin_level11 - остальные населенные пункты
Возможно это сработает для всего бывшего СССР, для иностранных государств надо пробовать.

Offline

#371 2018-02-21 09:44:34

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

ValentinAK wrote:

Допустим, есть тестовая карта Псковской области с частью прилегающих территорий Беларуси и Латвии. И на российской территории есть точка с такими тегами внутри одноименного полигона и более ни чем:
place=hamlet
name=какая-то-деревня
Она расположена в границах РФ (admin_level=2), Псковской области (admin_level=4) Но начнем со страны. Для этого в заранее очищенный файл inc/address добавляем строчку:

mkgmap:country!=* & mkgmap:admin_level2=* { set mkgmap:country='${mkgmap:admin_level2}' }

Я ее понимаю так, что во все индексируемые объекты должна упасть информация от границы с тегом admin_level=2 из прекомпилированного набора bnd-файлов. Но нет, адресная информация о стране РФ в нашу точку не добавляется. Собственно как и во всё остальное в границах РФ. Запускаем Gpsmapedit и смотрим, чего там получилось. Наблюдаем печальную картину: всем индексируемым объектам за пределами РФ правильно присвоился код страны и название государства (Беларусь BLR, Латвия LVA). Все, что российское значится как COUNTRY ABC.
Добавляем строчку:

mkgmap:country!=* & addr:country=* { set mkgmap:country='${addr:country|country-ISO:}' }

Теперь находящаяся рядом деревня с заботливо прописанным country= RU получила в адрес такую информацию. Первая по-прежнему ее не имеет.

Вот попробуй развить эту тему (у меня с иностранными языками никак) http://gis.19327.n8.nabble.com/Why-is-m … 11420.html
Я так и не понял что они мне отвечали. Но понял, что по этому вопросу надо теребить их. А также надо вводить в ОСМ жеские правила адресации, иначе бардак сохранится. Сейчас смотрел свою карту на приборе, изменил страну на Эстонию поискал адрес в Нарве. Набирал имя города по русски, Только нажал "Н" сразу высветилась "Нарва, Уезд Ида-Вирумаа", ввожу улицу "Пу" сразу высвечиватся "Пушкина улица", ввожу № 4, высвечивается четыре позиции:
1я поз. "Александра Пушкина улица 5 Нарва, EST" и три поз. "Александра Пушкина улица Нарва, EST".
Нажимаю первую (прибор Нуви 1310) указатель "Александра Пушкина улица 5 Нарва, Уезд Ида-Вирумаа Эстония," указывает на правильную улицу но в районе дома 10, возвращаюсь и смотрю вторую позицию "Александра Пушкина улица Нарва, Уезд Ида-Вирумаа Эстония" указывает на конец правильной улицы в районе дома 69. Следующая позиция в районе остановки Rugodiv на правильной улице, следующая позиция возле дома 21.
Теперь возвращаюсь и набираю улицу по английски "Pu" - высвечивает улицы начинающиеся с Pu, но нужной нет, ввожу улицу "Aleksander" - совпадений не найдено, а ведь есть в ОСМ Здание 5 Aleksander Puškini, но не индексируется так как улице уже присвоено имя по русски. Опять возвращаемся вводим город "Narva"- совпадений не найдено.
Вывод - надо теребить автора программы для правильного адресного поиска. Или теребить Маперов для правильного строгово тегирования для поиска.

Last edited by Eugeny_B (2018-02-21 09:53:09)

Offline

#372 2018-02-21 12:11:38

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

Вот еще интересная штука. https://forum.openstreetmap.org/viewtopic.php?id=58978
Я пробовал чтобы смотреть точки в MapSource, навел курсор на магазин клик правой кнопкой создать маршрутную точку и смотришь какой адрес прописывается, но обработка долгая, и срабатывает не везде, пример населенный пункт Скоропусковский, Московская область, Сергиево-Посадский район. В нас.пункте нет наименований улиц и там плагин не работает.

Offline

#373 2018-02-21 13:00:55

Eugeny_B
Member
Registered: 2014-11-30
Posts: 140

Re: Mkgmap

Вот только что провел эксперимент, поменял, было name-tag-list: name:ru,name,name:en,int_name стало name-tag-list: name,name:ru,int_name,name:en
И теперь при выборе страны наименование на родном языке и соответственно улицы на родном языке. Теперь в Narve (Нарве) ищутся адреса на улице Aleksander Pu...(Александра Пушкина) так как там на каждом доме указаны теги addr:country, addr:city, addr:street, addr:housenumber. До этого улица получала русское имя и соответственно дома не искались, так как на них прописана другая улица а не Александра Пушкина. Вот такие пироги... Надо еще экспериментировать.

Offline

#374 2018-02-21 20:23:11

ValentinAK
Member
From: notMoscow, Russia
Registered: 2010-07-06
Posts: 447
Website

Re: Mkgmap

Разобрался.
В выгрузке Гислаба граница РФ сломана. Отсюда и проблема.
Как починить:
1. Качаем отношение границы РФ по ссылке www.openstreetmap.org/api/0.6/relation/60189/full
2. Делаем еще один проход фильтрации перед созданием bnd-файлов и наваливаем через Osmconvert это скачанное отношение к уже отфильтрованным границам.
3. Делаем bnd-файлы.
4. Profit. cool


Еще одна ежедневная сборка OSM для Garmin.

Offline

#375 2018-03-04 23:39:00

ValentinAK
Member
From: notMoscow, Russia
Registered: 2010-07-06
Posts: 447
Website

Re: Mkgmap

А давайте подумаем, как наладить адресный поиск в населенных пунктах без названий улиц? Такое достаточно часто встречается. Вот сам теперь живу в деревне и у меня адрес без улицы совсем. Просто Деревня, номер_дома. Так вот. Mkgmap в этом случае находит ближайшую линию дороги с именем и пихает это имя в mkgmap:label:2. Получается очень странный результат, никак не влияющий на работоспособность поиска. Но Выяснив это я решил унифицировать все такие случаи добавив правило, заменяющее левые названия на "без названия" вот такой строчкой в файл настроек адресации:

mkgmap:country=RUS & mkgmap:street!=* & highway=* { set addr:street='без названия' }

Но это никак не способствует включению адресного поиска - название населенного пункта Гармин не дает ввести. Это начинает работать только если внутри населенного пункта есть хотя-бы одна улица с названием. Выходит, что необходимо название улицы в mkgmap:label:1. Но как туда запихнуть это самое "без названия" и только для улиц с адресацией? У меня не получилось. В лучшем случае такое имя добавлялось ко всем безымянным дорогам. Что не правильно и не нужно. В общем взываю к коллективному разуму.


Еще одна ежедневная сборка OSM для Garmin.

Offline

Board footer

Powered by FluxBB