add name:ru to all objects in Russia dump that have name:en

Вроде неплохой пример, поясняющий разницу, есть в вики:

name=Channel Tunnel - Default name

int_name=Eurotunnel - Internationally known as

nat_name=That debt ridden hole in the ground - Nationally known As

reg_name=Gateway to France - Regionally known As

loc_name=The way to Carrefour - Locally known As

old_name=A long swim - Historically or previously known As

alt_name=Chunnel - when alternative name exists (which doesn’t fit in one of the tags name above)

Предложение писать в name название на официальном языке и оставлять пустым name:<оф. язык> будет работать только при выполнении следующих условий:
а) официальный язык один (иначе хрен знает что писать);
б) этому предложению последуют все без исключения (иначе логика определения языка написания name не будет работать).
name — тег низкоприоритетный. Его стоит использовать в качестве затычки, если названия на приоритетном языке не нашлось (или приоритетный язык не выбран).
И да, тупая программа — хорошая программа. Зачем решать задачу сложно, если можно решить просто? Зачем и кому нужны эти пляски с официальными языками, когда можно просто выбирать самый первый присутствующий в списке языков?

Интересно, а аффтор правок и губитель кучи границ не хочет поучаствовать в теме? Ну так, чисто для приличия?

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

Косяк вышел из-за неоднозначного поведения tagtransform, он не обрабатывал . То, что name:ru затёрлось на некоторых объектах - мой косяк, буду пытаться исправить. То, что name:ru появилось на приграничных объектах, на которых его не было и оно неверно - это collateral damage, без него никак. Если выставить там верный name:ru, то дальнейшие автоматические правки его не тронут.

Не понял как именно поломались границы. Кроме добавления тэга name:ru никаких больше изменений не вносилось. Топология ways и relations не менялась.

А ты лог ирки почитай позавчерашний, там ссылочки были, во множестве. Если навыков писать боты хватает только на вики - может этим и ограничиться?

Или я что-то не понимаю, или у меня от третьих суток бессонницы уже крыша поехала. А зачем добавлять name:ru?
Алгоритм “иметь возможность стопроцентно программно выбирать именно русские наименования” тривиальнейший: если name:ru есть, берем его, если нету - берем просто name. Все.
И для любого объекта в РФ дублирующий name:ru просто не нужен. Поскольку name уже на русском.
Для заграницы и граничных объектов - name:ru.

Update:
Зато простору для махинаций… В name пишем Татарстан, в name:ru Татария.
По идее, надо контролировать, чтобы в name и name:ru лежало одно и то-же. Но это чревато для граничных и заграничных объектов… Не стоит овчинка выделки.

Например,
http://www.openstreetmap.org/browse/way/25314189/
сейчас уже вернул из истории, но по рендерингу видно, что линия была обрезана

Вижу. Это баг osmosis или tagtransform. Не получается его воспроизвести на маленьких файлах, где только затронутые объекты. Попробую воспроизвести на всём дампе России.

А может не надо его воспроизводить и достаточно починить испорченное?

Ну например рекомендуемый конфиг к mkgmap говорит, что в гармин попадает название в порядке приоритетности: name:ru, name:en, name. Очень полезно если делается карта сразу нескольких стран. Считается что пользователю родной язык русский, английский язык он знает, а остальные не знает. Если опустить из списка name:ru, то куча русских городов станут иметь английские названия. Если опустить из списка name:en, то карты неанглоязычных стран станут менее удобны.

А может не надо его воспроизводить и достаточно починить испорченное?

Не хочется в следующий раз давать тебе повод поязвить.

Чего-то я видимо не понимаю, но как это связано с выборкой русских наименований понять я не могу. Непонятно чем name:en такой особенный. Тогда уж name:* надо делать было.

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

Плюс дамп как оказалось не только России. Тоже смысла расставлять автоматом name:ru не вижу, для конвертирования в навигационные программы теги можно выставлять локально - у себя на компе

Согласен.

Может быть и в этом дело. Разбираюсь.

Ну вот и надо править конфиги mkgmap для приоритетности name:ru, name, name:en, а не генерировать стотыщпицот дублирующихся имен…
Либо, если через конфиги приоритеты не меняются - сделать препроцессор.

Да, проблема оказалась в дампе. Буду общаться с sim как избежать подобного в будущем.

ikz,

Ну вот и надо править конфиги mkgmap для приоритетности name:ru, name, name:en

Если так поправить конфиг, то будет совсем не то, что нужно.

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

  1. Проверяем наличие в именах нерусских символов (все кроме пробела, кириллицы цифр и знаков пунктуации). Если есть, то объект не трогаем (можно заодно и произвести запись в отдельный лог).
  2. Проверяем попадание объекта на границу (и за границу), поступаем аналогично.
  3. Берем в качестве области не всю Россию, а только те ее части, в которых нет официальных языков, отличных от русского.

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

  1. Зачем всю эту массу наименований переносить на карту?
  2. Если уж 1 так необходимо, по каким именно критериям следует заполнять различные теги?

Да, пример прояснял не эти вопросы, а только вопрос “Для чего нужны разные теги?” :slight_smile:

  1. Разные теги надо заполнять по критериям смысла этих тегов.
  2. Рендереры и конвертеры могут выбирать теги по приоритетам, не обязательно тащить всю массу.

Это серьезное возражение.
Очень серьезное.
И, пожалуй, ЕДИНСТВЕННОЕ серьезное.
Вот только в НАШЕМ случае официальный язык как раз один. Так что, учитывая местные особенности, возражение неактуальное.

Строго говоря, ЛЮБОЙ механизм будет надежно работать лишь в случае, если он поддерживается ВСЕМИ БЕЗ ИСКЛЮЧЕНИЯ.
То есть приведена совершенно очевидная банальность, которая для тега nabe выполняется ровно с тем же успехом, что и name:ru или name:en или для любого другого.
Не аргумент это в данном случае ни разу.

Вот именно результат такого “простого” решения мы и наблюдаем.