Кстати, вспомнил. У нас ведь вроде есть улицы с одинаковым названием, но в разных районах Харькова. Если их не “привязать” к районам, то в адресном поиске будут ошибки
Блин, а ещё ведь подобные ошибки и с привязкой деревень к районам области. Аж 608 штук.
Для таких улиц надобно addr:suburb выставить. В моем "валидаторе они синим подсвечиваются. Я бы потом помог addr:suburb для домов и отрезков проставить - на для начала сами микрорайоны хотя бы точками проставить нужно.
addr:suburb
Это можно. Но тогда опять всплывёт вопрос мультиязычности адресов. На каком языке писать и как сделать так, чтобы в сконверченной под навигатор карте название района города было на нужном языке.
Кстати, это ж надо не только на веях улицы писать, но и на каждом домике
Тут есть пара вариантов
- addr:suburb:uk, addr:suburb:ru, addr:suburb:en…
- Прорисовка границ микрорайонов и анализ вложености
- Введение какого-то нового тега-ссылки на точку suburb в отношении associatedStreet
Мне лично больше симпатизирует 3-ий вариант. Но в любом случае для каждого сегмента улицы addr:suburb на украинском нужно проставить обязательно.
С этой рутиной я могу помочь. Проще конечно отношением ограничиться. Не знаю как будет правильнее
это будет ужас. На каждом домике по десятку addr:suburb:хх
Это однозначно убогий вариант. И база данных распухнет, и ошибиться недолго. Программерам, конечно, так будет проще, но вот вносить в базу такие навания - заколебаешься
Мне нравится второй вариант. Никаких тегов прописывать не надо и шанс ошибиться меньше.
Хотя конвертеру будет больше работы: перебрать все улицы в городе, найти улицы с одинаковым названием, проверить, в какие suburb они попадают и приписаить название suburb к названию улицы. Причём на нужном языке.
Кстати, есть случаи когда такие улицы проходят через несколько районов. Например, есть улица Такойская, которая проходит через Такойский р-н и Сякойский р-н, и есть ещё одна улица Такойская, которая расположена вообще в другом конце города в Этаковском р-не.
А ещё бывает, что улица проходит чётко по границе районов. Например, улица Полтавский Шлях в Харькове проходит по границе Ленинского и Октябрьского районов.
Так что конвертеру придётся сильно напрячь мозги (конечно, не конвертеру, а программеру, который будет его писать ).
Ну, то есть, примерно так:
перебираем все улицы в городе, ищем улицы с одинаковым названием. Одной улицей будем считать привязанные друг к другу отрезки с одинаковым тегом name. А также отрезки, связанные релейшеном.
для каждой из таких улиц определяем принадлежность к определённому району (районам) или микрорайону (-ам) города.
(берём каждую точку в каждом отрезке улицы и определяем принадлежность точки к полигону района). Дописываем к названию улицы названия районов, в которые она попадает.
Могут, конечно, возникнуть сложности, когда отрезки улиц не связаны релейшеном и не связаны друг с другом общими точками. Ну, значит, придётся связывать их релейшенами даже если там нет домов. В конце-концов, если отрезки принадлежат одной улице, то почему бы и не связать их релейшеном?
он железный, пусть считает
а у нас таких улиц много?
ну, бакулина вот
какие ещё?
что-то ещё было на даниловке дубль улицы в городе
Я тут подглядел в тревеловскую карту Харькова от уважаемого VF и нашёл примерно 30 таких улиц (поиском по слову “р-н”).
- Бакулина (Дзерж, Киевск
- Вишнёвый пер (Дзерж, Коминт
- Донецкая ул (Фрунз, Червон
- Кирова (Киевск, Черв и Коминт
- Лесная (Киевск, Ленинск
- Ногина пер (Лен, Окт
- Ореховская ул (Окт, Червон
- Павленковский пер (Дзерж, Черв
- Парковая ул (Фрунз, Червон
- Продольная ул (Дзерж, Киевск
- Родниковая (Моск, Фрунз
- Соединённая ул (Киевск, Моск
- Спортивная ул (ленинск, Моск
- Черемушный пер (Червон, Киевск.
Та же ситуация и в Киеве. Логичнее прописывать не район, а микрорайон (как правило название села поглощенного городом). Ex: Дарниця, Бортничі, Жуляни… У вас Заїки, Затишшя, Олексіївка…
Основной минус - отсутствие каких либо четких границ для микрорайонов. А рисовать полигоны с потолка и вносить дезинформирмацию - считаю неоправданным. Я с границами сельрад так делал по-глупости.
Вулиці → Харків - Улицы помеченные синим с большой вероятностью дубликаты.
Харьков уникален тем, что на нем уже прийдется решать как быть с мультиязычностью, отношениями, отдельными домами, и сегментами. По-логике если вешаем name:lang на каждый сегмент, значит и addr:suburb:lang вешать надо. Проблему с домами в случае Харькова можно проигнорировать, учитывая, что у вас все через отношения. addr:suburb для них можно брать прямо из отношения. Но для других городов это проблемка в перспективе.
addr:suburb:lang - очевидное неправильное решение. Простое для программиста, пишущего конвертор и ужасно неудобное для пользователей, вносящих данные. Представь: на каждом домике десяток тегов addr:suburb:lang, на каждом отрезке улицы тоже десяток addr:suburb:lang.
ну чтобы не париться с addr:suburb:хх, мультиязычные имена можно брать с точки микрорайона (с их name:xx)
эм
а оч ем вы развили ДИМАгогию
если у нас есть сущности дом и улица, между которыми делаем отношение, то что нас останавливает сделать отношения между сущностями улица и район
или вообще, в идеале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 пусть доделывает свой конвертор для получения русскоязычных названий для адресов домиков “по ближайшей улице” и “по ближайшему району”. Если валидатор такое может, то почему конвертор такое не сможет?