Карты для СитиГида

fserges,
//place=hamlet это официальный населённый пункт.
Ничего такого в принятой классификации ( http://wiki.openstreetmap.org/wiki/RU:Key:place ) нет. Так что это личное мнение уважаемого камрада fserges :slight_smile: Действующие правила спрашивают официальный статус города при номинации на town. НП, имеющие статус города, получают тег town при меньшем населении, по сравнению с неимеющими такового. И не более того.

//А я [садоводства, действительно превратившиеся в посёлки] вижу. И дальше что?
Дальше мапить их как поселки. :slight_smile:

//Этот населённый пункт летом - самый крупный населённый пункт Ленинградской области! Почему мы не мапим его как place=city?
150 тысяч - это общее число всех, кто съездил туда хотя бы один раз. 22000 участков - это дай бог 10 000 среднего населения. Вполне можно было бы обозначать как place=town. От среднего города правда Мшинская отстает по инфраструктуре, но на поселок тянет: рынок, несколько продуктовых магазинов, точка заправки газовых балонов, церковь, медпункт, полицейский околоток.

Я в свое время предлагал классификацию по инфраструктуре, но ее сочли слишком сложной.

liosha
//И как раз категория “населённый пункт” относится к тем сведениям, которые зависят от документов: между “тут стоят дома” и “это населённый пункт” есть ощутимая разница
Почему? Для меня “населенный пункт” - это просто место, где живут люди, хотя бы сезонно, в пределах некой непрерывной застройки.

Единственно деление нп по** преобладающему характеру занятости** на городские и сельские уже устарело, лет на 30. Теперь надо бы делить НП на городские (население занято в промышленности и услугах), сельские (население занято в сельском хозяйстве) и рекреационные (население нигде не занято, а отдыхает).

Dinamik
Разберемся, когда с флудом закончим. :smiley:

Хорошо, убедили. Наверное, надо в ВИКИ на главной проекта ОСМ написать, что данные из официальных источников имеют приоритет над фактическим положением дел на местности, тогда бы я сразу понял, что это не “мой” проект. Надеюсь, я всё же принёс больше пользы, чем вреда, а дальше товарищи поправят всё по кадастрам и клардам, у меня самого рука не поднимется.

Ну что вы как дети … Вот для примера открыл карту Финляндии в ОСМ. Там классификация НП сделана вполне в соответствии с законами о муниципальном устройстве. Что в этом плохого? Я смотрел районы Коуволы и Йоэнсуу и вижу огромное количество place=suburb для НП не являющимися юридически самостоятельными городами/посёлками. Да, в каком-то посёлке живёт некоторое количество людей, но самостоятельным НП оно не является. place=suburb или place=neighborhood решает ситуацию. А ведь такие “пригороды” часто находятся на большом расстоянии от “родительского НП”. И что в этом плохого?

А ведь если бы Алексей Александрович был бы в Финляндии то им всем бы поставил place=village или place=hamlet по своему усмотрению. Ну и что что это не НП, главное там добротные дома и вывеска висит! Отлично! И получим карту Финляндии которая … ну сами понимаете.

Не надо стараться каждой именованной жилой зоне прилепить статус официального НП. Нужно просто более грамотно определиться с обработкой этих нерегулярных НП и только всего. Продумать иерархию и протолкнуть на международный уровень. Это решаемо. Не нужно в существующие теги вписывать новое значение.

Ладно, поболтали, а теперь давайте о деле.

fserges,

если ты понимаешь, как устроено административно-территориальное деление в Финляндии, ты не мог бы о нем коротенько рассказать?
Потому что, в отличие от России, ситуция в Финке с тегами совсем не радужная, дофига НП вообще без границ:
http://peirce.gis-lab.info/qa/FI-SOUTH#citynoborder

Как итог, не работает поиск, пользователи ругаются. Может что подскажешь?

Dinamik,
я кажется понял, чего ты хочешь, но все как обычно не так просто.

В СГ адресный поиск, как ты помнишь, устроен так, что адреса должны быть связаны с рутинговыми улицами.

чтобы дом

; WayID = 148888712
; building = yes
[POLYGON]
Data0=(59.8212310,30.0868219),(59.8212767,30.0870220),(59.8212014,30.0870900),(59.8211557,30.0868899),(59.8212310,30.0868219)
Type=0x13
HouseNumber=3
Label=3
StreetDesc=Спортивная улица (Володарский)
[END]

искался, нужно чтобы была улица с label=Спортивная улица (Володарский) и/или StreetDesc=Спортивная улица (Володарский)

Как этого добиться? если начинать обрабатывать все полигональные place=suburb, и name c него сувать во все улицы внутри него, то получится просто ужасно - название района вылезает везде, где есть районы города с границами. Так было когда-то, я это отключил.

Нужен какой-то другой способ, чтобы названия районов в скобочках прибавлялись только для улиц внутри некоторых объектов. Есть идеи?

С получением “Спортивная улица (Володарский)” как раз проблем нет:). Линия highway = residential + name = Спортивная улица + addr:suburb = Володарский → роутинговое ребро Спортивная улица (Володарский)

Таким образом, уточнение добавляется ровно там, где нужно. Это уже работает.

За что отвечают поля label и StreetDesc? В чём отличие?

Эти уточнения нужны для устранения неоднозначности. Алгоритм мне видится примерно таким:

  1. Составляем общий список улиц с разбиением по НП и suburb-ам в них.
  2. Если улица с данным названием встречается только один раз на карте - используем только название улицы.
  3. Если встречается в разных НП - добавляем названием НП
  4. Если несколько в одном НП - добавляем название района.

Ну и можно усложнять алгоритм по мере необходимости.
Главное преимущество - никаких лишних тегов, только полигоны НП и районов.

Предлагается делать это автоматически, используя исключительно данные name и полигоны населённых пунктов и suburb? Если так, то не выйдет.

Без обращения к внешней базе данных никак не узнать:
а) проходит ли это одна улица через несколько suburb-ов или это несколько разных улиц
б) как какую из улиц следует называть, т. к. обычно при наличии нескольких одноимённых улиц в пределах одного населённого пункта одна из них именуется без уточнения, прочие - с уточнениями

Мало того, что алгоритм, на мой взгляд, не самый простой для автоматической обработки, и он не будет работать, так его ещё и усложнять надо:)

На мой взгляд, куда проще записать данные о районе в addr:suburb.
Если есть “Центральная улица” с домом 1 и “Центральная улица (Район)” с домом 2, по большому счёту, надо так или иначе для первой указывать name=Центральная улица на улице и addr:street=Центральная улица на доме, для второй - name=Центральная улица (Район) на улице и addr:street=Центральная улица (Район) на доме. Ладно, не нравятся людям уточнения в name, вынесем (Район) из тега name в тег addr:suburb. Всё. Осталось только научить osm2mp, установленный у Zkir-а, делать одно действие, которое умеет делать osm2mp, установленный у liosha - склеивать addr:street и addr:suburb на доме - и всё заработает.

Да. Лучше править конвертеры вместо данных.

Идеально - возможно и не выйдет. Но нам и не нужно идеально, нам нужно приемлемо.
Ручной труд он всегда лучше автоматического по качеству, если этим занимается профессионал. Но профессионалов мало, а работы много. Так пусть лучше железяка работает.

Можно пример таких улиц?

Не вижу большой беды, если все они будут с уточнением. Опять же, не помешал бы конкретный пример.

Мне кажется, тут есть важное условие: данных при этом должно хватать. Если же имеющихся данных самих по себе не хватает для решения задачи, то редактирование конвертеров проблему никак не решит, в отличие от дополнения данных до того объёма, при которых их уже должно хватать.

Боюсь, в каких-то случаях может получиться хуже, чем есть.

Нужно постараться настроить железяку так, чтобы она не делала хуже там, где профессионал уже поработал:)

Так это ж практическая любая крупная дорога.
Проспект Стачек проходит через Автово и Юго-Запад, улица Савушкина проходит через Старую Деревню и Новую Деревню, Московский проспект проходит через всевозможные Рогатки. Проспект Обуховской Обороны - Рыбацкое, Троицкое поле, Александровское, Щемиловка и т. д. Может, в данных примерах и получится, на самом деле, что улицы везде проходят строго по границам или в какой-то из suburb-ов не попадают, но смысл в том, что более-менее длинная улица имеет обыкновение проходить через несколько suburb-ов.

Например, в Санкт-Петербурге есть две Софийских улицы: в Купчине и в Шувалове. Одна из них называется “Софийская улица”, другая - "Софийская улица (Шувалово). Есть два проспекта Академика Павлова, один из них - на Петроградской стороне, другой - в Володарском. Один из них называется “проспект Академика Павлова”, другой - “проспект Академика Павлова (Володарский)”. Есть две улицы Калинина - одна в районе Гутуевского острова, другая в Володарском. Одна - “улица Калинина”, другая - “улица Калинина (Володарский)”. Есть две улицы Ломоносова - одна в центре, другая - в Горелове. Одна - “улица Ломоносова”, другая - “улица Ломоносова (Горелово)”. Есть две улицы Льва Толстого - одна на Петроградской стороне, другая - в Володарском. Одна - “улица Льва Толстого”, другая - “улица Льва Толстого (Володарский)”. Перспектива обнаружить “Софийская улица (Купчино)”, “проспект Академика Павлова (Петроградская сторона)” и “улица Льва Толстого (Петроградская сторона)” меня не очень прельщает.

Ну, это то как раз легко алгоритмически решить, если проверять их на соединение и считать единой соединяющиеся одноимённые улицы в соседних районах. Проблема будет, если они не соединяются, есть примеры таких?

Ну это уже какая-то вкусовщина пошла. А жителю Шувалово как будет привычнее видеть свою - “Софийская улица” или “Софийская улица (Шувалово)”? Меня вот “Софийская улица (Купчино)” в поиске не коробит, хоть я и в Купчино живу.

а) улица может состоять из кусков сама по себе; пример - 7-й Предпортовый проезд)
б) на улице может начаться ремонт, что приведёт к разрыву улицы (пример - Расстанная улица)
в) улица может иметь пересечение с другой на перекрёстке с круговым движением; если есть круг, состоящий из четырёх дуг, к которым подходят роутинговые линии с четырёх сторон, нельзя сделать так, чтобы названия обеих улиц не прерывались; а если у перекрёстка есть своё название (это какая-нибудь площадь), то разорваны будут названия обеих улиц; примеры - разрывы Гражданского и Северного проспектов на Северной площади, разрыв Комендантского проспекта на Комендантской площади, разрыв Краснопутиловской улицы на площади Конституции.

Полагаю, что не вкусовщина. Житель Шувалова, заинтересованный в том, чтобы его поняли, будет говорить, что живёт на Софийской улице в Шувалове (будет адрес указывать соответствующим образом, т. к. если он не скажет про Шувалово, люди уедут в Купчино). Мне говорят: “следуй до Софийской улицы, дом 1”. Я достаю навигатор, ввожу “Санкт-Петербург” - “Софийская улица”, а он мне "Вам нужна “Софийская улица (Купчино)” или “Софийская улица (Шувалово)?”. А я почём знаю? Мне сказали просто “Софийская улица” без “Купчино” или “Шувалово”. И в навигаторе я хочу найти просто Софийскую улицу, т. к. не знаю, какая из двух улиц является просто Софийской улицей.

Друзья, спасибо за комменты) Пропатчить Osm2mp чтобы он прибавлял addr:suburb на домах к названию улицы наверно можно.
Но вы уверены что “suburb” подходит по семантике?
“suburb” - это просто “часть города со своим названием”, а нужно “часть города, со своим названием, и имеющая отдельное пространство имен улиц”, особенно если речь идет (шла в начале) о СДТ в черте города.

А в какие разные suburb-ы попадают данные куски улиц?
Ремонты проблемой являться не будут, если не будут стирать название точно на границе двух suburb-ов и если анализ делать до фильтрации construction (IMHO, идея вырезания construction плоха сама по себе).

Ситуация ровно зеркальна и в противоположную сторону. Поменяйте местами Шувалово и Купчино - в чём существенная разница? Если в том, что Софийская в Купчино имеет более высокий статус (а значит более на слуху) - ну так давайте именно это и использовать, типа если одна из улиц имеет более высокий класс highway чем у остальных, то по умолчанию делаем её без уточнения.

Просто вы пытаетесь ручным редактированием разрулить неоднозначности при помощи применения некоторых правил. Я же предлагаю эти правила формализовать и алгоритмизировать.

Вот поэтому я и против добавления дополнительных тегов туда, где можно обойтись алгоритмами. Сегодня addr:suburb, потом addr:allotments, потом ещё какая-нибудь хрень. В то время как все данные уже есть в виде соответствующих полигонов, достаточно просто их нужным образом учитывать при построении адрески.

Могу даже плугин к osmosis написать для подобного разруливания. Конечно, проще было бы подобный алгоритм в osm2mp добавить, где вся геометрия уже под рукой, но раз liosha не хочет подобным заниматься, можем и препроцессором обойтись.

Мне addr:suburb казалось логичным (во всяком случае, глаз не резало), т. к. я размышлял так: “addr:street говорит, что этот дом с точки зрения адресации относится к такой-то улице; addr:suburb ровно так же говорит, что с точки зрения адресации дом и улица относятся к такой-то части населённого пункта”.

В общем-то, особой разницы нет, какой addr:Что-то добавлять - вы только скажите, какой:).

Но addr:suburb я считаю более предпочтительным, т. к. в этом случае: а) не придётся добавлять новый тег там, где уже стоит старый; б) там, где тег будет добавляться, он будет поддерживаться не только при конвертации в СитиГИД, но и при конвертации для других навигаторов, т. к. свежая версия osm2mp (которой пользуется liosha) поддерживает именно addr:suburb; в) после обновления osm2mp адресация в СитиГИДе не накроется медным тазом, т. к., опять же, свежая версия osm2mp работает с addr:suburb

В данных конкретных случаях попадания в разные suburb-ы кусков, получившихся после разрыва аккурат в месте прохождения границы suburb-ов, может, и нет, но я, полагаю, показал, что в общем случае надеяться на то, что название улицы будет непрерывно идти по роутинговой линии нельзя. И где-то может оказаться, что разрыв имеет место как раз на границе suburb-ов (например, на площади).

Дело не в том, что Софийская в Купчине имеет более высокий статус, а в том, что она официально называется просто “Софийская улица” в отличие от Софийской улицы в Шувалове, которая официально называется “Софийская улица (Шувалово)”.

Да какие уж тут правила:). Посмотреть на официальное название улицы и внести его в базу - нехитрое правило.


И ещё проблема. Не всегда есть возможность точно задать полигон suburb-а. Например, полигон Горской в Сестрорецке вызвал нарекания, т. к. Горская описывается несколько расплывчато, а полигон проходит по конкретным линиям. В итоге полигон превратился в точку. А чтобы алгоритм, базирующийся на вхождении в suburb-ы, работал, нам нужно полностью покрыть территорию населённого пункта покрывающими его полигонами suburb-ов.

Придумать можно много разных вариантов, когда конкретный алгоритм сломается. Но если эти варианты в реальной жизни не встречаются - думаю можно такой опасностью пренебречь.

Нету такого официального названия у улицы. Название улицы (топоним) - “Софийская улица”. “(Шувалово)” - это уточнение, которое может использоваться, а может и нет. И это уточнение может быть представлено в другом виде, например “Софийская улица, Шувалово” или "“Шувалово, Софийская улица”. И уточнение с “Купчино” имеет равноправный статус с “Шувалово”. То, что в конкретном реестре решили использовать один из способов уточнения - не отменяет другие способы разрешения неоднозначности. Сомневаетесь - давайте напишем в топонимическую комиссию и спросим.

Я могу про Финляндию написать, но не будет ли это оффтопиком? Это будет далеко не один развёрнутый пост :slight_smile: Жду подтверждения :slight_smile:

Зацепило то что определение что является населённым пунктом “на месте”, “по факту” это несколько сомнительный ход. В Финляндии это не работает как впрочем и не работает у нас. Простой пример:

На карте отмечено:

И я считаю что это правильно. Или правильно “по факту” писать так:

Ведь “осм - это карта местности, а не документов”.

fserges,

  1. Если Вынгапуровский — отдалённый микрорайон города Ноябрьска, то на местности это тоже будет заметно. Например будут стоять такие белые таблички на въезде с надписью “Ноябрьск”.
  2. Если кто-то обозначит его name = Вынгапуровский+place = village, никому сильно хуже не будет. Хуже, если он вообще не будет внутри place=village|town|city, потому что тогда адресация развалится.
  3. Нет, про Финляндию офтопиком не будет, наооборот, это как раз важно и нужно.

Zkir,

Про 1) не уверен что так, но там не был после реформы АТД поэтому оставим этот вопрос незакрытым.
2) Ну тогда я понял подход СитиГида к данной проблеме :slight_smile: Вот такой знак ( http://maps.yandex.ru/-/CRQt6HjH ) трактуем как конец полигона place=village, name=Горская и начало place=town,name=Сестрорецк? А по бумагам Горская - place=suburb и является частью Сестрорецка :slight_smile: Зато не паримся с документами и обозначаем как видим :slight_smile:
3) ОК - отпишусь из дома дабы пропустить в спешке чего-то важного.

Стал пробовать, обнаружил прелюбопытное явление.
“Володарский” находится поиском, причем в его составе есть две улицы, “Спортивная” и “Академика Павлова”. Причем без всяких скобок. Чудеса, да и только)