NameRuBot. Предназначен для добавления “name:ru” зарубежным городам.
Что может: сканирует .osm файл в поисках place=, выбирает ноды, полигоны и релейшены. Ищет город по его name в зарубежной википедии, пытается найти соответствие с русской википедией и при нахождении добавляет тег name:ru. Создаёт html файл отчета и осм-файл для загрузки на сервер. Загрузка вручную, после тщательной проверки. Плюсы:
можно конвертировать карты для навигаторов с русскими именами. Минусы:
я пока не вижу.
Прогнал через него небольшой кусочек Италии. Лог-файл, Правка. Если сообщество решит, что оно надо, буду периодически запускать. TODO:
Согласно wiki рекомендуется использовать схему с одним главным линком (wikipedia=lang:page title) а не для каждого языка отдельно. В данном случае наверное лучше всего линк на используемую статью языка местности (и если тег wikipedia уже не проставлен).
В какой википедии он ищет название? Главное чтобы на правильном языке. Дело в том, что ты запустил бота в Аль дАоста, а там говорят на смеси французского с итальянским.
Все имена перевелись по-французски, и по написанию похожи. Если поискать испанское слово Rojo (“Рохо”) в финской вики, может попасться “Ройо”.
Самая жопа будет в А Корунье, испанском регионе, где говорят на португальском. Просто для примера, как фонетика отличается: chorar - “шорар” по-португальски, по-испански прочитают как “чорар”. В одной и той же провинции в одной долине говорят на испанском, в другой через 500 метров - на португальском. На юге Франции (между Испанией и Италией) есть ещё Гайего, диалект, со своей фонетикой. Понять, на каком языке название, не зная местной жизни, проблема. Я бы автомату это просто так не скармливал.
Лучше взять те названия, что точно известны (например, где в википедии у города стоят координаты и есть русская страница) и выставить их.
вы что, какая лишняя кавычка? Должно быть
у меня от несогласованных кавычек почти физический дискомфорт.
желательно убрать bom из начала документа (это не по стандарту), а во-вторых, сервер в заголовках HTTP выдаёт Content-Type=text/html; charset=windows-1251, нужно поправить на utf-8.
А нормально, что этот тег не закрыт?
meta http-equiv=“Content-Type” content=“text/html; charset=utf-8”
А какие еще делаются проверки?
Я, когда делал такую работу вручную (список id добыл из planet.osm, а в Википедию ходил ручками), сравнивал также население и координаты. Увы, население может отличаться довольно существенно (до 2 раз), а вот координаты, думаю, до долей градуса должны совпадать. Сомневаюсь, что в радиусе 0.1-0.2 градуса окажутся одноименные города либо города с близким произношением названия.
Думаю, поиск по имени + население (отношение в пределах 0.5-2.0) + координаты в пределах 0.2 градуса можно считать достаточно надежными критериями.
Ну и сам поиск IMHO следует проводить не по всем н/п, а только по тем, у которых уже есть name:en (name:fr/name:de - по выбору) или int_name. Таковых в мире около 62 тыс, так что объем работы вполне подъемен для бота, а разбор лога ошибок глазами - тоже вполне реален.
PS. Да, хорошо было бы запоминать уже найденные имена и при встрече одноименных тоже выдавать сообщение в лог ошибок.
Автоматически только на совпадение osm-name и wiki-name. А дальше в ручную.
А зачем? Я планирую запускать бота на определенную территорию, ограниченную одним государством. Т.е. теоритически возможно конечно, что в одном и том же государстве находятся два города с одинаковыми названиями и разными названиями на русском языке, но я про такие не слышал. Т.е. я хочу сказать, что н.п. Любань к примеру в Ленинградской области и где-нибудь в Челябинской должны одинаково переводиться на другие языки, поэтому мне не обязательно проверять координаты и численность населения, чтобы определить, какая именно это Любань, т.к. мне для перевода на другой язык это роли не играет.
А почему только по ним? Я хотел бы видеть карту полностью на русском языке, а не выборочные н.п.
Постараюсь сделать. Сейчас пока буду делать список исключений, чтоб автоматически убирать фразы типа " (значения)" или " город)".
Конечно некошерно. Именно поэтому рекомендуется иное: задавать только wikipedia=ru:Екатеринбург, а остальное вытягивать при помощи API самой википедии. Тем самым не будет необходимости в OSM следить за актуальностью синхронизации между названиями на разных языках (ссылки в википедии тоже иногда меняются).
Но это играет существенную роль, если таки захотите проставлять ссылку на википедию - т.к. ссылки, очевидно, будут отличаться.
Кроме того, перевод даже одноимённых городов в разных местностях может таки отличаться (в силу исторических, диалектовых и прочих причин).
Sergey Astakhov
на самом деле ссылки на города должны выглядеть так:
ru:Киров (Калужская область)
ru:Киров (Кировская область)
И в самой Википедии статьи о разных городах должны быть разными. Если вдруг города переводятся по-разному - этот конфликт тоже разрешается средствами Википедии.
Зависит от конкретного города. “Москва (Московская область)” или “Москва (Россия)” ведь не пишут, несмотря на наличии населённых пунктов Москва в других местах. Просто убирают неодназначности в ссылках тем или иным способом.