Важливе зауваження, дякую! Не опрацьовувалися звʼязки з теґами addr:street
та addr:place
. Обовʼязково врахую для нових змін і перевірю вже опрацьовані області.
@muchichka_s, виправив алгоритм і пройшовся по попередніх областях, дякую за уважність.
Назви, які планую перейменувати у Хмельницькій області: https://mellangr.github.io/assets/rename/khmelnytska_oblast_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/khmelnytska_oblast_unchanged.txt
UPD: Перейменування у Хмельницькій області завершене
Назви, які планую перейменувати у Житомирській області: https://mellangr.github.io/assets/rename/zhytomyrska_oblast_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/zhytomyrska_oblast_unchanged.txt
Було б добре додати конверсію Ігора => Ігоря. Така перевірка відсутня.
Дякую за ідею, подивлюся
@darkonus схоже бот пропустив чималу кількість addr:street в Хмельницькій області
Приклад: Way: 130632626 | OpenStreetMap
Ось тут зручно дивитися візуальну статистику (так і знайшов, що бот пропустив) Nominatim QA Tool
Перепрошую, останній раз трохи переписав скрипт і забув включити addr:street
та addr:place
. Поки зроблю паузу в перейменуваннях і виправлю свої можливі помилки. Також додам оновлений код скрипта на вікі, тому що там зараз трохи застаріла версія.
Доперейменував пропущені addr:street
у Хмельницькій області. Оновив код скрипта і опис роботи на вікі, дублюю тут:
Changing the order of words in some street names. Objects that will be selected for possible renaming:
Nodes, ways and relations with addr:street=*, addr:place=*
Ways highway=* with values motorway, trunk, primary, secondary, tertiary, unclassified, residential, motorway_link, trunk_link, primary_link, secondary_link, tertiary_link, living_street, service, pedestrian, track, bus_guideway, escape, raceway, road, busway, footway, bridleway, steps, corridor, path, cycleway, proposed, construction tagged with name:left:uk=*, name:left=*, name:right:uk=*, name:right=*, name:uk=*, name=*, old_name:left:uk=*, old_name:left=*, old_name:right:uk=*, old_name:right=*, old_name:uk=*, old_name=*, official_name:left:uk=*, official_name:left=*, official_name:right:uk=*, official_name:right=*, official_name:uk=*, official_name=*, loc_name:left:uk=*, loc_name:left=*, loc_name:right:uk=*, loc_name:right=*, loc_name:uk=*, loc_name=*, short_name:left:uk=*, short_name:left=*, short_name:right:uk=*, short_name:right=*, short_name:uk=*, short_name=*
Relations type=associatedStreet with name:left:uk=*, name:left=*, name:right:uk=*, name:right=*, name:uk=*, name=*, old_name:left:uk=*, old_name:left=*, old_name:right:uk=*, old_name:right=*, old_name:uk=*, old_name=*, official_name:left:uk=*, official_name:left=*, official_name:right:uk=*, official_name:right=*, official_name:uk=*, official_name=*, loc_name:left:uk=*, loc_name:left=*, loc_name:right:uk=*, loc_name:right=*, loc_name:uk=*, loc_name=*, short_name:left:uk=*, short_name:left=*, short_name:right:uk=*, short_name:right=*, short_name:uk=*, short_name=*
Tags whose values will be changed if a match is found:
addr:street=*, addr:place=*, name=*, name:left:uk=*, name:left=*, name:right:uk=*, name:right=*, name:uk=*, name=*, old_name:left:uk=*, old_name:left=*, old_name:right:uk=*, old_name:right=*, old_name:uk=*, old_name=*, official_name:left:uk=*, official_name:left=*, official_name:right:uk=*, official_name:right=*, official_name:uk=*, official_name=*, loc_name:left:uk=*, loc_name:left=*, loc_name:right:uk=*, loc_name:right=*, loc_name:uk=*, loc_name=*, short_name:left:uk=*, short_name:left=*, short_name:right:uk=*, short_name:right=*, short_name:uk=*, short_name=*
from osm_bot_abstraction_layer.generic_bot_retagging import run_simple_retagging_task
# Function to load renaming data from a file
def load_renaming_data(file_name):
renaming_dict = {}
# Read the file line by line
with open(file_name, 'r', encoding='utf-8') as file:
for line in file:
# Split each line into original_name and new_name
original_name, new_name = line.strip().split('\t')
# Add the names to the renaming_dict
renaming_dict[original_name] = new_name
return renaming_dict
# Function to edit tags based on loaded renaming data
def edit_element(tags, renaming_data):
# List of keys to edit
keys_to_edit = [
# Add all the keys you want to edit here
"addr:place",
"addr:street",
"loc_name:left:uk",
"loc_name:left",
"loc_name:right:uk",
"loc_name:right",
"loc_name:uk",
"loc_name",
"name:left:uk",
"name:left",
"name:right:uk",
"name:right",
"name:uk",
"name",
"official_name:left:uk",
"official_name:left",
"official_name:right:uk",
"official_name:right",
"official_name:uk",
"official_name",
"old_name:left:uk",
"old_name:left",
"old_name:right:uk",
"old_name:right",
"old_name:uk",
"old_name",
"short_name:left:uk",
"short_name:left",
"short_name:right:uk",
"short_name:right",
"short_name:uk",
"short_name"
]
# Iterate over the keys to edit
for key in keys_to_edit:
# If the key exists in tags and its value is in renaming_data, update the value
if key in tags and tags[key] in renaming_data:
tags[key] = renaming_data[tags[key]]
return tags
def main():
# Prompt for region name
region_name = input("Введіть назву області: ")
region_name_eng = input("Введіть назву області англійською: ")
# File name for renaming data
renaming_file = f"{region_name} (перейменування).txt"
# Load renaming data from the file
renaming_data = load_renaming_data(renaming_file)
# Run the simple retagging task
run_simple_retagging_task(
max_count_of_elements_in_one_changeset=500,
# Set up the Overpass query to get the data
objects_to_consider_query=f"""
[out:xml][timeout:1000];
area["name"="{region_name}"]->.a;
(
nwr(area.a)[~"^(addr:street|addr:place)$"~"."];
way(area.a)["highway"~"^(motorway|trunk|primary|secondary|tertiary|unclassified|residential|motorway_link|trunk_link|primary_link|secondary_link|tertiary_link|living_street|service|pedestrian|track|bus_guideway|escape|raceway|road|busway|footway|bridleway|steps|corridor|path|cycleway|proposed|construction)$"][~"^(name:left:uk|name:left|name:right:uk|name:right|name:uk|name|old_name:left:uk|old_name:left|old_name:right:uk|old_name:right|old_name:uk|old_name|official_name:left:uk|official_name:left|official_name:right:uk|official_name:right|official_name:uk|official_name|loc_name:left:uk|loc_name:left|loc_name:right:uk|loc_name:right|loc_name:uk|loc_name|short_name:left:uk|short_name:left|short_name:right:uk|short_name:right|short_name:uk|short_name)$"~"."];
rel(area.a)[type=associatedStreet][~"^(name:left:uk|name:left|name:right:uk|name:right|name:uk|name|old_name:left:uk|old_name:left|old_name:right:uk|old_name:right|old_name:uk|old_name|official_name:left:uk|official_name:left|official_name:right:uk|official_name:right|official_name:uk|official_name|loc_name:left:uk|loc_name:left|loc_name:right:uk|loc_name:right|loc_name:uk|loc_name|short_name:left:uk|short_name:left|short_name:right:uk|short_name:right|short_name:uk|short_name)$"~"."];
);
out body;
>;
out skel qt;
""",
cache_folder_filepath='/Users/user/test',
is_in_manual_mode=False,
changeset_comment=f'Renaming of streets in {region_name_eng} according to new recommendations of the Ukrainian community',
discussion_url='https://community.openstreetmap.org/t/topic/97007',
osm_wiki_documentation_page='https://wiki.openstreetmap.org/wiki/Automated_edits/darkonus_-_bot_account/Renaming_of_streets_in_Ukraine_according_to_new_recommendations_of_the_Ukrainian_community',
# Pass the edit_element function as an argument, and pass renaming_data through a lambda function
edit_element_function=lambda tags: edit_element(tags, renaming_data),
)
main()
Поки що планую доробити Житомирську й Вінницьку області і зробити паузу в перейменуваннях на деякий час.
UPD: Перейменування у Житомирській області завершене.
Назви, які планую перейменувати у Вінницькій області: https://mellangr.github.io/assets/rename/vinnytska_oblast_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/vinnytska_oblast_unchanged.txt
UPD: Перейменування у Вінницькій області завершене
Привіт усім! Продовжую перейменування — ось назви вулиць, які планую перейменувати у Київській області: https://mellangr.github.io/assets/rename/kyivska_oblast_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/kyivska_oblast_unchanged.txt
UPD: Перейменування завершене
Недавно getpin додали чимало нових POI з тегом contact:street
, подивився по overpass, є значення в старому форматі. До прикладу: Node: Аптека Подорожник (10917668905) | OpenStreetMap
Стосовно списку Київської області, подивився, виглядає гарно
@darkonus схоже на “Левадний провулок”, “Журавлиний провулок”, “Вербний провулок” помилково спрацювало
Вчора дивився, але не помітив одразу
Дякую, виправлю.
UPD: Виправив. Також надалі враховуватиму теґ contact:street
Назви вулиць, які планую перейменувати у Черкаській області: https://mellangr.github.io/assets/rename/cherkaska_oblast_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/cherkaska_oblast_unchanged.txt
UPD: Перейменування завершене
Назви вулиць, які планую перейменувати у Кіровоградській області: https://mellangr.github.io/assets/rename/kirovohradska_oblast_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/kirovohradska_oblast_unchanged.txt
UPD: Перейменування у Кіровоградській область завершене
Назви вулиць, які планую перейменувати у Києві: https://mellangr.github.io/assets/rename/kyiv_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/kyiv_unchanged.txt
Додав ще файл де відсіяв назви для ручної перевірки в JOSM: https://mellangr.github.io/assets/rename/kyiv_special_attention.html
Для того щоб підвантажити обʼєкти треба увімкнути дистанційне керування. Деякі з обʼєктів треба виправляти, деякі — ні. Я не обіцяю що назви з цього файлу виправлю, але вирішив прикріпити для довідки, щоб за бажанням хтось щось міг підправити.
UPD: Перейменування вулиць у Києві завершене
Назви вулиць, які планую перейменувати у Полтавській області: https://mellangr.github.io/assets/rename/poltavska_oblast_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/poltavska_oblast_unchanged.txt
UPD: Перейменування у Полтавській області завершене
Було б добре в одному стилі, якщо вийде:
1-й Тупик провулок провулок 1-й Тупик
3-й Тупик провулок провулок 3-й Тупик
2-й Тупик провулок 2-й провулок Тупик
Дякую, виправив у себе в списку
Назви вулиць, які планую перейменувати у Чернігівській області: https://mellangr.github.io/assets/rename/chernihivska_oblast_renaming.txt, та список назв, які не будуть змінюватися: https://mellangr.github.io/assets/rename/chernihivska_oblast_unchanged.txt
UPD: перейменування вулиць у Чернігівській області завершене