Переименование улиц: Дніпро (Днепропетровск)

Кому интересно. Создал таблицу для последующего использования в скрипте по автоматическому переименованию улиц Днепропетровска. Постоянный адрес здесь. Наиболее интересная информация находится на втором листе. Он содержит уже фактически готовые данные для переименования улиц на трёх языках: украинском, русском, английском. Транслитерация на английский проведена в соответствии с национальным украинским стандартом, действующим с 2010 года.

Также готов скрипт для PowerShell v.2.0 и позже по переименованию топонимов и связанных с ними зданий. Замечания, соображения приветствуются. Ссылка может меняться при доработке скрипта.

Алгоритм работы скрипта

  1. Пройтись по всем узлам типа node, way и relation (у них обязательно должен быть тег addr:street).

Если попался узел с тегом, у которого addr:street равно значению из таблицы (старое название топонима на украинском языке), то для тегов addr:street, addr:street:uk, addr:street:ru, addr:street:en внести соответствующие значения из таблицы (новые названия топонимов).

Если какой-то из тегов типа addr:street:* (uk, ru, en) отсутствовал, он будет создан. Однако, можно очень быстро настроить скрипт так, чтобы эти теги удалялись, если встретятся при обработке.

  1. Пройтись по всем узлам типа way, relation (у way должен быть тег highway, у relation - associatedStreet).

Если попался узел с тегом, у которого name = значению из таблицы (старое название топонима на украинском языке), то для тегов name, name:uk, name:ru, name:en внести соответствующие значения из таблицы (новые названия топонимов).

Если какой-то из тегов типа name:uk, name:ru, name:en отсутствовал, он будет создан.

Если теги name:* (uk, ru, en) существовали до начала обработки, то их старые значения будут сохранены в новых (будут созданы, если их не было) или в существующих тегах типа old_name:*

Багатенько у вас опечаток і дубльованих пробілів


"80-річчя  Дніпропетровської  області площа"
"Г орького площа"
"Малишева  провулок"
"80-річчя  Дніпропетровської  області сквер"
"Пролетарської  перемоги провулок"
"Набережна  Чудновського вулиця"
"Набережна  В.І.Леніна вулиця"
"Перекопської  перемоги вулиця"
"Червонопролетар ський провулок"
"Генерала  Грушевого вулиця"
"XIX партзїзду вулиця"
"Пролетарської  перемоги вулиця"
"Малишева  вулиця"
"Героїв  Громадянської війни вулиця"
"Арсеиичева вулиця"
"Миколи  Островського площа"
"Митрофана  Андреєва вулиця"
"Людмили  Мокієвської провулок"
"Газети "Правда" проспект"
"80-річчя  Дніпропетровщини вулиця"


"Костя Гордієнка вулиця"
"Михайла Вербицького провулок"
"Афанасьєва- Чужбинського вулиця"
"Андарівська вулиця"
"Гулака- Артемовського вулиця"
"Василя Тютюнника тупик"
"Василя Тютюнника провулок"
"Олександра Чєрнікова вулиця"
"Омеляновича- Павленка вулиця"
"Антіна Синявського провулок"
"Семена Скляренка провулок"
"Осина Бодянського вулиця"

new_name_ru не перевіряв, але “вулиця Болбочана” перекладається як “улица Болбочана”, а не “Болбочаная”
в new_name_en слово Street/Lane пишеться з великої букви

Данные взяты из pdf-файла с приказом. Были распознаны с помощью OCR-программы и подкорректированы вручную. Что-то мог пропустить. Двойные пробелы убираются проще простого. Остальные мелочи тоже поправлю. Спасибо за замечание.

Ви уже третій хто OCR-ить пдф.
Спочатку rename.dp.ua, потім algot i andygol, тепер ви.
http://forum.openstreetmap.org/viewtopic.php?pid=562977#p562977

Разница между мной и остальными в том, что ответственным товарищам я вполне могу дать доступ на редактирование файла. То есть, со мной даже не обязательно будет советоваться, прежде, чем вносить изменения. Гугл-драйв рулит в этом плане.

Убрал двойные пробелы, убрал пробелы после “-”, поменял регистр первой буквы в названии топонима на английском языке, исправил перевод улицы Болбочана, название улицы Осипа Бодянського. Неправильные написания для других улиц тоже поправил: где-то исправил ошибки, где-то убрал имена (хотя, мне кажется, в приказе просто забыли его почему-то написать). Давайте ещё замечания.

Скрипт по обработке данных готов. Описание алгоритма в первом сообщении.

Алгоритм це добре, але покажіть ще код.
addr:street може існувати і на relation’ах.
addr:street:* не потрібно створювати

Добавил в обработку relation с addr:street. Одна дополнительная строчка в коде.

В некоторых node я обнаружил addr:street:. Поэтому решил их добавлять для всяких программулек, которые поиском объектов на разных языках занимаются. Для меня этот вопрос не принципиален, но всё-таки хотелось бы понимать, на чём основывается ваше убеждение. Буду признателен на какую-нибудь ссылку на официальную доку. Мало того, я могу для изменяемых (или вообще всех, которые встретятся) node, way, relation УДАЛЯТЬ существующие addr:street:, если они действительно не нужны.

^підтримую.

Я вже почав вносити зміни для вулиці, що мали однакові назви та знаходяться в різних районах. Якщо скрипт враховує таке в своїй роботі - це добре.

http://www.openstreetmap.org/changeset/35733666 - приклад того, як (на мою думку) повинен виглядати результат

теґування лінії вулиці


highway=residential
name=Олени Теліги вулиця
name:en=Oleny Telihy Street
name:ru=Елены Телеги улица
name:uk=Олени Теліги вулиця
old_name=Фурманова вулиця
old_name:en=Furmanova Street
old_name:ru=Фурманова улица
old_name:uk=Фурманова вулиця

теґування зв’язку


name=Олени Теліги вулиця
name:en=Oleny Telihy Street
name:ru=Елены Телеги улица
name:uk=Олени Теліги вулиця
old_name=Фурманова вулиця
old_name:en=Furmanova Street
old_name:ru=Фурманова улица
old_name:uk= Фурманова вулиця
type=associatedStreet

теґування будинка


add:housenumber=5а
addr:street=Олени Теліги вулиця
building=yes
building:levels=1

Я НЕ против удалять теги addr:street:*, мне это абсолютно несложно. Но хотелось бы понимать, на чём основывается ваше убеждение.

Скрипт, увы, никак не учитывает одноимённые улицы в городе. Ума не приложу, как это можно было бы реализовать, исходя из той структуры данных, которая хранится в БД. Такие улицы надо обрабатывать вручную. Если их названия вам заранее известны, и вы мне можете их сообщить, я их просто могу не обрабатывать никак в своём скрипте.

Структура данных после обработки будет в точности такой, как вы описали. Осталось всё-таки окончательно определиться с addr:street:* - удалить их, или всё-таки довести до полного набора. Оба решения реализовываются в течение 1 минуты.

Ясно, тож перед тим як запускати скрипт потрібно закінчити обробку вулиць двійників

за посиланям зміни які я вносив останім часов
http://resultmaps.neis-one.org/osm-changesets?comment=dp-rename

Взагалі, це надлишкова інформація, яка і так міститься в самих зв’язках - тож дублювати її в адресах - то зайве.

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

Не буду отрицать очевидного. Это действительно избыточная информация. Но, может быть, есть какие-то официальные рекомендации на эту тему? Кроме того, есть некоторые опасения, что поиск таких объектов на других языках может быть затруднен, если такие теги удалить.

Мне кажется, что в своё время osm2mp при сборке русскоязычной карты тупо у себя в голове замещал содержимое name содержимым name:ru . Соответственно он уже не мог найти связь addr:street домика с улицей. посему возник addr:street:ru .

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

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

https://docs.google.com/spreadsheets/d/10VOg8I_70TU1uDafMKbaV1gRrcuA5wIXrBs02QoZnEw/edit?usp=sharing - пройшов по першому Рішенню. Відповідно, біля кожної вулиці для якої назва була змінена вказано посилання на набір змін.
Тож можна спробувати спочатку, скрипт для вулиць, що лишились з першого рішення не перейменованими.

В другому рішенні також є зміни (здогадуюсь, що не тільки ті, що я робив)

Дробить изменения на порции… Ну можно, но какой в этом глубокий смысл? Проще запихнуть всё, что можно (то есть, всё, что осталось непереименованным - скрипт определит это автоматически) в одной транзакции, а потом уж сверяться по всем объектам сразу, что переименовалось, а что - нет. И то, что не переименовалось по какой-то причине, довести до ума доступным способом: то ли файл с новыми названиями подправить и обработать данные из OSM повторно скриптом, то ли сделать необходимые правки вручную.

Сегодня на ограниченной партии данных попробую работу скрипта. Если всё пройдёт успешно, то пропущу через скрипт все улицы.

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

Все гео-объекты (адреса домов, отношения, улицы) Днепропетровска сегодня были переименованы в соответствии с распоряжениями правительства. Просьба заняться проверкой.