У нас активно законодавчо змінюються назви вулиць, і при кількості перейменованих від двох десятків починаючи, ручне перейменування може зайняти досить багато часу. Пропоную тул, що в цьому допоможе: https://github.com/Larry0ua/ua-convert/tree/master/other/renameStreets
Як користуватись:
- заповнити файл replacements.txt за шаблоном (tab separated, можна відкрити у excel і зберегти потім у Unicode text. Перша колонка в файлі - регекспи, тобто можна писати повну назву, можна і частину назви, але щоб вона не співпала з іншими вулицями)
- поставити Groovy (Windows: http://www.groovy-lang.org/install.html#_installation_on_windows)) та Java, якщо нема
- скачати чи вирізати з дампа місто, зберегти в osm
- всі файли покласти в одну папку - скрипт, файл перейменувань і дамп міста
- поміняти в скрипті імена файлів, запустити. На цьому етапі кажуть, що краще запускати з консолі стрічкою
"C:\Program Files (x86)\Groovy\Groovy-2.4.5\bin\groovy" RenameStreets.groovy -e UTF-8 > log.txt
- отриманий файл відкрити джосмом, перевірити, чи не зачеплено нічого зайвого, залити
По файлу замін - треба бути обережним, щоб правила не перекривались для вулиць, провулків з номерами і т.д. була однозначна відповідність.
Якщо якихось вулиць є кілька по різних районах, такі вулиці перейменовуються ЛИШЕ вручну!
Скрипт переписує всі name в old_name (name:xx також) на вулицях і адресних відношеннях і заповнює name, name:uk. Також заміняє addr:steet.
Будь-ласка, при використанні будьте уважні, щоб не зачепити сусідні міста та інші об’єкти. Ну і звичайно не робіть перейменувань поки нема документального підтвердження про перейменування (а то й пізніше, коли нові назви почнуть використовуватись)
dudka
2
Вхідний файл з osm-даними можна отримати overpass-запитом
http://overpass-turbo.eu/s/cY6
Имеются ли какие-то средства, для того чтобы указать дату, когда старое значение перестало быть актуальным?
Частично скопирую свой пост из другого треда (OSMAnd):
Возможно ли реализовать режим, чтобы были видны одновременно и новые названия и старые (например в скобочках)?
Сразу возникает вопрос как отделить новые переименования от исторических (например в каких-то случаях old_name имеет название которое уже неактуально)
Хотелось бы иметь дату переименования и использовать такой режим только для новых переименований (например меньше трех лет)
Вики предлагает следующий подход:
Key variants can be suffixed with language code (such as “name:en”) and date namespace suffix (such as “old_name:en:1921-1932”).
Однако я не уверен, что все будут придерживаться этого принципа
Vort
4
полагаю что это излишне, всё-таки мы тут не историей занимаемся
для исторической справки я бы предложил давать ссылку на Википедию или Викиданные
wowik
5
Новые названия не все люди сразу выучат, все документы поменяют, адреса всех знакомых уточнят. Посему старое название будет востребовано.
Ставьте дату
name:-2015=xxx конечно весьма прикольно выглядит.
Я бы предпочел old_name=xxx (как более общепринятый) + что-нибудь типа old_name:date=2015, но ведь вики другое советует…
Главное, чтобы однообразно, потом можно будет как-то и использовать, например добавлять в скобках.
http://wiki.openstreetmap.org/wiki/Date_namespace
Vort
6
во-первых, у улицы есть дата создания и присвоения ей официального имени
во-вторых, старых названий часто несколько. и не всегда они различны
к примеру, 50 улицам из 173 переименованных в Харькове просто вернули старые названия
http://www.city.kharkov.ua/ru/document/zaproponovani-nazvi-vulits-yaki-mayut-buti-zmineni-vidpovidno-do-zakonu-ukraini-pro-zasudzhennya-komunistichnogo-ta-natsional-sotsialistichnogo-natsistskogo-totalitarnikh-rezhimiv-v-ukraini-ta-zaboronu-propagandi-ikh-simvoliki-47404.html
получается, для них корректно надо записывать как-то так:
name:Воскресенська вулиця
old_name:1923-2015=Урицького вулиця
old_name:1804-1923=Воскресенська вулиця
есть улицы с ещё более насыщенной историей переименований
можно, конечно, со всем этим разобраться и внести в базу
но мне кажется что в этом нет смысла - как для редакторов, так и для пользователей
внесения old_name вполне достаточно, и то для потребителей это будет иметь ценность только в переходной период
Vort
7
ещё из весёлостей переименования
улицу Спартака переименовали в улицу Спартака
именно так. пишется одинаково. только смысл разный 
wowik
8
сомневаюсь.
там могут быть слишком старые, которые точно нынче не нужны, а вот последние переименования точно нужны.
Я бы точно хотел иметь в навигаторе в списке улиц что-то такое:
Воскресенская улица (бывш. Урицкого)
улица Спартака (бывш. Спартака)
Кстати, пойду подумаю как прилепить визуализацию предыдущего имени…
Уже есть обработанные НП для тренировки?
Vort
9
значит нужно заменять старый old_name на новый old_name
глуповато звучит, но мне кажется что это достаточно адекватно
olehz
(olehz)
10
Вы забываете, что геометрия улиц меняется со временем. Например две улицы могут объеденить в одну или наоборот разъеденить (продолжить, застроить и т.д.). Точно также с домами. Согласен с Vort, что таким данным не место в OSM, а то при желании можно дойти до такого:
old_name:-320000000–260000000=океан Палеотетіс
old_name:-260000000–65000000=океан Тетіс
…
Так как в рамках ОСМ невозможно описать смену береговой линии древних океанов, точно также нельзя описать смену геометрии улицы. Потому как это уже может быть совершенно другая улица, у которой со старыми совпадают лишь отдельные части строений или сегменты дорог
К тому же ключ получается динамическим. Это очень нехорошо для работы с данными. Для одного 20-го века прийдется 100 отдельных полей в таблице создавать
Vort
11
для этого, кстати, по принципу “any tags you like” можно запросто подобавлять улицам что-то типа ua_rename_2015=yes
wowik
12
Да, но как узнать, что он обновился в 2015?
wowik
13
Ну я и писал, что, что что-то типа date:old_name или old_name:date=2015 и т.п. было бы понятнее
Есть же population:date - сделать по анологии
Vort
14
согласен, это тоже надо иметь в виду
на примере того же Харькова такая ситуация с улицей Фрунзе:
у новосозданной улицы Кирпичёва получается два “предка”
Vort
15
с таким вариантом будет высокий риск рассинхронизации
поменяют имя, не поменяют дату. или поменяют дату, но не поменяют имя
wowik
16
с population’ом так и бывает.
Vort
17
придумался мне гибридный вариант
совместимый, но с дублированием:
name = Воскресенська вулиця
name:2015- = Воскресенська вулиця
old_name = Урицького вулиця
old_name:1923-2015 = Урицького вулиця
old_name:1804-1923 = Воскресенська вулиця
правда, хаоса тут наведут со временем…
а если учесть ещё языковые приставки (, :uk, :ru, :en), вобще монстр получается
wowik
18
Это уже второго яаления порядка точности.
Зачем еще нужен old_name. Чтобы назад не возвращали по недоразумению.
Увидят новое имя, а подумают, что оно по ошибке тут случилось, и “исправят”
wowik
19
В голом виде old_name пока плох. Правда стали видны застарелые ошибки.
[ removed porn links ]
Vort
20
чуть переделал и расширил последний вариант:
name = Воскресенська вулиця (основное отображение, актуальное состояние)
name:uk = Воскресенська вулиця (дубль для верификации языка name тега)
name:ru = Воскресенская улица
name:en = Voskresenska Street
old_name = Урицького вулиця (альтернативное отображение, для поиска, актуальное состояние предыдущего имени)
old_name:uk = Урицького вулиця
old_name:ru = Урицкого улица
old_name:en = Urytskoho Street
name:uk:2015- = Воскресенська вулиця (для поиска и верификации, полу-архивные данные)
name:ru:2015- = Воскресенская улица
name:en:2015- = Voskresenska Street
name:uk:1923-2015 = Урицького вулиця (для поиска, архивные данные)
name:ru:1923-2015 = Урицкого улица
name:en:1923-2015 = Urytskoho Street
name:uk:1804-1923 = Воскресенська вулиця
name:ru:1804-1923 = Воскресенская улица
name:en:1804-1923 = Voskresenska Street
из недостатков - повышенная сложность и много дублирования
из преимуществ - совместимость и верификация