Zkir
Собственно:
Патч применяется нормально на вашу версию конвертера. Вот я выбрал участок для проверки. Файл экспорта из OSM.
MP файлы получившиеся на выходе конвертера с вашими конфигами: Непатченного и патченного Вот дифф этих MP файлов (с кодировкой CP1251) а Он же но перекодированный в UTF-8
По диффам видно, что единственные изменения в карте это появление атрибута StreetDesc у тех нод у которых уже есть HouseNumber. Остальные объекты, в том числе и другие POI не затронуты.
Имена улиц тоже проставлены верно (тут я правда только глазами смотрел).
Этого достаточно, или нужны еще какие нибудь тесты?
Германия (admin_level=2) делится на земли (admin_level=4). Земли делятся на районы (admin_level=6). Районы делятся на коммуны/общины (admin_level=8). Общины могут делится на административные единицы, имеющие своё самоуправление (admin_level=9) или не имеющие своего самоуправления (admin_level=10). В некоторых землях существуют административные округа (admin_level=5) - промежуточная административная единица между землёй и районом. В некоторых землях существуют амты (admin_level=7) - промежуточная административная единица между районами и коммунами.
Существует 3 города-государства (имеют статус земли) - Берлин, Вольный и ганзейский город Гамбург (он же просто Гамбург) и Вольный ганзейский город Бремен:
Берлин и Гамбург: admin_level=4, но определяются через place=city, Вольный ганзейский город Бремен (admin_level=4) состоит из городов Бремен и Бремерхафен, имеющие admin_level=6, но определяемые через place/de:place=city.
Некоторые другие города тоже имеют статус района: admin_level=6 + de:place=city.
Города районного подчинения: admin_level=8 (где-то, возможно, admin_level=7) + de:place=town
Коммуны: admin_level=8 + de:place=village.
В достаточно населённых пунктах (которые, скорее всего, имеют тег de:place=town или de:place=city), могут попадаться admin_level=8/9/10/11, соответствующие частям города.
Именно поэтому я предлагаю следующий алгоритм:
а) смотрим, попадает ли адрес в полигон place (в Германии этот тег не очень распространён, но встречается), если попадает - конец программы, если нет - идём дальше;
б) смотрим, попадает ли адрес в полигон de:place=village/town/city (широко распространённый в Германии тег), если попадает - конец программы, если нет - идём дальше;
в) смотрим, попадает ли адрес в полигон admin_level=8 (широко распространённый тег), если попадает - конец программы, если нет - удивляемся и разбираемся, как такое могло получиться:)
ЧаВо:
Вопрос 1: почему не предлагается опираться только на de:place=village/town/city?
Ответ 1: потому что я не уверен, что эти теги везде проставлены: возможно, где-то проставлены только admin_level=8.
Вопрос 2: почему не предлагается опираться только на admin_level=8?
Ответ 2: а) потому что я не уверен, что эти теги везде проставлены (хотя, скорее всего, это так): возможно, где-то проставлены только de:place=village/town/city; б) потому что существуют крупные населённые пункты, имеющие admin_level=4/6.
Если я где-то ошибся в рассуждениях и меня поправят, буду весьма признателен.
Согласен. Но вопрос адресного поиска там проработан. А сообщество пользователей гарминовских карт заведомо больше ситигидовского, поэтому ошибки адресного поиска там должны быть минимизированы. Поэтому можно брать ту схему как отправную точку.
Вопрос адресного поиска там совсем не проработан - достаточно посмотреть, какую чушь он выдаёт для России. Адресный поиск там появился недавно, он жёстко завязан на boundary=administrative (это уже ошибка), и сейчас их схема подходит только для самых простых случаев.
А что касается гарминосообщества, оно там хоть и большое, но достаточно “специфическое”, и ему адресный поиск не сильно интересен.
То есть я к тому, что как отправная точка оно годится, но не более того. И уж тем более не как цель.
Простите, а зачем? Есть Административно-территориальное деление Федеративной Республики Германия - на него и следует опираться. Если где-то в моих рассуждениях ошибка, укажите на неё, пожалуйста. Строго формально из населённых пунктов в Германии есть только города (крупные), а иные объекты, которые, скажем, в России называют (в туристических справочниках, форумах и т. д.) городами и деревнями, являются коммунами (Gemeinde). Соответственно, я предложил схему, которая позволяет определить крупные города (Stadtstaat, Kreisfreie Stadt, Stadtkreis) и небольшие поселения (Gemeinde).
Хорошо, я не настаиваю. Заблуждался, считая что в mkqmap сделано правильно, но меня уже переубедил liosha.
Давайте попробуем по вашему предложению, и посмотрим, что получится. При необходимости - подкорректируем.
А я и не смеялся. В тот момент, когда Вы писали, что уверены, что я не найду ни одного подобного объекта, они уже существовали. Соответственно, Ваше утверждение являлось, очевидно, неверным. Если бы taginfo работал, а не выдавал “Internal Server Error”, я бы мог поискать на карте другие подобные объекты. Потому я, чтобы далеко не ходить, и привёл в качестве примера те объекты, о которых знал.
Если это чем-то мешает, можно пока объединить эти мультиполигоны.
Это лишняя сущность. Я понимаю, что вы его создали как костыль для адресного поиска в СитиГиде. Но теперь он не нужен, и по моему мнению его можно удалить.
Еще раз - в Европе (в отличии от нашей страны) порядка больше. Там есть четкая структура, которая уже давно внесена в ОСМ. Нужно просто научится ее использовать. Поэтому полигонов place в Европе нету, там есть границы различного уровня. Кирилл уже вплотную подошел к их правильной интерпретации и использованию при конвертации.
Скорее всего да. Я пока не имел возможности их протестировать, видимо ближе к выходным. Валидатор - это живая система, кроме валидации используется для конвертации в СГ. Поэтому надо чуть-чуть подождать)
Zkir
Хорошо, спасибо. А то эти сотни домов в Алчевске и не только в Алчевске мне прямо кушать не дают
Кстати на всякий случай: патч никак не меняет логику поведения конвертера. Он только добавлет еще один метод поиска улицы для POI в том месте где конвертер это и так пытается сделать.