перебираем все улицы в городе, ищем улицы с одинаковым названием. Одной улицей будем считать привязанные друг к другу отрезки с одинаковым тегом name. А также отрезки, связанные релейшеном.
для каждой из таких улиц определяем принадлежность к определённому району (районам) или микрорайону (-ам) города.
(берём каждую точку в каждом отрезке улицы и определяем принадлежность точки к полигону района). Дописываем к названию улицы названия районов, в которые она попадает.
Могут, конечно, возникнуть сложности, когда отрезки улиц не связаны релейшеном и не связаны друг с другом общими точками. Ну, значит, придётся связывать их релейшенами даже если там нет домов. В конце-концов, если отрезки принадлежат одной улице, то почему бы и не связать их релейшеном?
Та же ситуация и в Киеве. Логичнее прописывать не район, а микрорайон (как правило название села поглощенного городом). Ex: Дарниця, Бортничі, Жуляни… У вас Заїки, Затишшя, Олексіївка…
Основной минус - отсутствие каких либо четких границ для микрорайонов. А рисовать полигоны с потолка и вносить дезинформирмацию - считаю неоправданным. Я с границами сельрад так делал по-глупости.
Вулиці → Харків - Улицы помеченные синим с большой вероятностью дубликаты.
Харьков уникален тем, что на нем уже прийдется решать как быть с мультиязычностью, отношениями, отдельными домами, и сегментами. По-логике если вешаем name:lang на каждый сегмент, значит и addr:suburb:lang вешать надо. Проблему с домами в случае Харькова можно проигнорировать, учитывая, что у вас все через отношения. addr:suburb для них можно брать прямо из отношения. Но для других городов это проблемка в перспективе.
addr:suburb:lang - очевидное неправильное решение. Простое для программиста, пишущего конвертор и ужасно неудобное для пользователей, вносящих данные. Представь: на каждом домике десяток тегов addr:suburb:lang, на каждом отрезке улицы тоже десяток addr:suburb:lang.
если у нас есть сущности дом и улица, между которыми делаем отношение, то что нас останавливает сделать отношения между сущностями улица и район
или вообще, в идеале6 психануть и все 600 микрорайонов перенести, и сделать иерархию дом-улица-микрорайон-район-город
точно такой же список6 как street_id streen_name я из своей карты могу вынуть и по административным районам. для связки street_id-административный район
Вопрос только в том как связать точку микрорайона с отношением associatedStreet или же конкретным сегментом улицы/домом
Это имеет смысл только для домов. Не знаю как в Харькове, но в других городах одна улица может пересекать несколько районов и тем-более микрорайонов. Жесткую иерархию 1:N не построишь. Т.е. addr:suburb проставлялся только для дубликатов дабы как-то различать улицы с одинаковыми названиями.
Ну вот, значит, нужен такой тип релейшена, чтобы связать некоторые улицы с микрорайонами. Что там для этого подходит? collection? address? или какой-то другой тип релейшена?
К примеру, улица Такаято проходит через Фрунзенский и Червонозаводский районы. А в Ленинском р-не тоже есть улица Такаято.
делаем два релейшена:
объединяем первую ул. Такаято с полигонами Фрунзенского и Червонозаводского районов.
объединяем вторую ул. Такаято с полигоном Ленинского района.
Хотя liosha такую штуку точно отвергнет. Границы районов тоже в с свою очередь заданы релейшенами. А Лёше не нравятся вложенные релейшены.
А может, как-то прописать принадлежность улицы к району в тегах релейшена улицы? Хотя нет, этого в схеме Карлсруэ не предусмотрено.
В таком случае, нам и иерархия никакая не нужна. Достаточно просто нанести эти микрорайоны в виде пазла полигонов.
А вообще предлагаю следующее:
Заполнить addr:suburb (название бывшего села на украинском) для отношений синих улиц (их всего около 50) - для остальных ничего не менять. Если один из дубликатов в центре города - игнорируем. Пускай name субурба и будет ID ключем по которому будет происходить связка элементов отношения с точкой микрорайона.
В схеме Карлсруэ (см. вики) не предусмотрено в релейшене тегов для привязки улицы у suburb. Там только type=associatedStreet и опционально имя релейшена. И всё. (кстати, для type=Street тоже)
Можно, конечно, поднапрячься и прописать для таких улиц и домиков addr:suburb на украинском языке, как это указано в вики.
А Liosha пусть доделывает свой конвертор для получения русскоязычных названий для адресов домиков “по ближайшей улице” и “по ближайшему району”. Если валидатор такое может, то почему конвертор такое не сможет?
Я для Киева и Львова addr:suburb просто на сегменты расставил. На домики ставить не надо, если адресация задана через associatedStreet. Проблемы могут возникнуть, если в одном городе намешано несколько схем адресации, но Харьков по ходу к ним не относится.
Я хз о каком конверторе идет речь, но переделать name на (name + suburb) совсем крохотная проблема
liosha пишет, что в новой версии его конвертора обрабатываться тег релейшена addr:suburb и addr:suburb:{lang}
Хотя это и не указано в вики.
Так что можно в релейшенах прописывать привязку улиц с одинаковыми названиями к соответствующим районам города.
Но я на всякий случай, наверное, пропишу на таких улицах addr:suburb на домах и на линиях улицы.
P.S. Что-то как-то напряжно и муторно доделывать импортированные релейшены по Харькову. Хотя вроде бы там уже не так много их осталось.
К тому же многие домики (по частному сектору) не совпадают со спутниковыми снимками. Лажа получается
И что, сцука, характерно, некоторые такие ошибки присутствуют и в тревеловской карте от VF. Наверное, оба автора из одного места эти домики вытащили.
Будь ласка не використовуйте addr:suburb:{lang}. Локалізації addr:suburb:{lang} придумані виключно для того щоб відмазатися від тих хто вмовляє Льошу реалізувати переклад в його конверторі. {lang}-суфікси необхідні тільки для name-тегу. Всі ці addr:street:, addr:city:, addr:suburb:** треба безжально видаляти щоб ніхто не брав з того приклад
Не дублюйте інформацію. Достатньо вказати addr:suburb в звязку.