Не надо ничего предпологать. Надо быть точно уверенным.
Я например уверен что в Германии вы не найдете ни одного полигона/мультиполигона place.
admin_level=8,9,10
Я был бы уверен, если бы все без исключения линии, точки, полигоны и мультиполигоны были отрисованы лично мной. Гарантировать, что не существует ни одного участника, использовавшего не замеченную мной и потому не озвученную мной схему, я не могу.
А зря. Они там заведомо есть.
Насчёт всех населённых пунктов не буду утверждать, но в нескольких городах, где я смотрел, встречаются admin_level=9 - примерные аналоги районов Санкт-Петербурга (Приморский район, Центральный район), admin_level=10 и admin_level=11 - примерные аналоги нашего муниципального образования (муниципальный округ “Княжево”, муниципальный округ “Дачное”), admin_level=8 там вообще нет, а admin_level=6 - крупная часть города (аналог объединения нескольких районов города). Сам город - admin_level=6 или даже admin_level=4 (но при этом стоят place и/или de:place). В случае не очень крупных поселений admin_level=8 - это коммуны, по которым и имеет смысл адресовать улицы.
Смотрим: только по admin_level=9 и admin_level=10 адресовать нельзя, т. к. это части поселений/коммун (Вы же, наверное, будете искать Невский проспект в населённом пункте “Санкт-Петербург”, а не в “Центральный”). Если адресовать по admin_level=8, получится построить адресацию в небольших поселениях, т. к. admin_level=8 - это обычно коммуны. Но одними admin_level=8 полностью адресацию в Германии не построить, т. к. где-то таких единиц нет (или это часть населённого пункта), а населённые пункты имеют admin_level=6 или даже admin_level=4. Но такие города можно определить по place или de:place.
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 в Европе нету, там есть границы различного уровня. Кирилл уже вплотную подошел к их правильной интерпретации и использованию при конвертации.
Скорее всего да. Я пока не имел возможности их протестировать, видимо ближе к выходным. Валидатор - это живая система, кроме валидации используется для конвертации в СГ. Поэтому надо чуть-чуть подождать)