Валидатор московских адресов

спасибо! может все таки раскрасить большим количеством цветов?
например, логичным мне кажется следующий набор
зеленый - правильный
серый - не найден в осм
розовый - не найден в реестре
желтый - неправильный формат адреса
оранжевый - неправильное название улицы
и куда нибудь легенду ткнуть…

Я бы рекомендовал пользоваться подходом ОКУМ-а, во всяком случае он разумен и непротиворечив. Улицы с двойными названиями есть во всех крупных городах и так их различают. А для удобства пользователей можно вводить сколько угодно понятных всем территорий типа Замоскворечье, Китай-город или Южное Бутово.

Поставил так.
Но как я уже говорил, за нормальный дизайн был бы очень благодарен :slight_smile:

Круть!

Только вот тут глюк - считает название улицы неправильным, хотя оно правильное
http://gis-lab.info/data/mp/msk/?code=00970

А не, вру. Там в названии (в осм) два пробела. Вроде все кривые addr:street по Москве исправил.

Что будем делать с “проезд N XXX” и “проектируемый проезд N XXX”?
Не писать же их в самом деле с большой буквы?

Так все таки что же делать?
Эти домики, например, по http://www.ggk.mos.ru/data/guest/show_map_frame имеют совершенно другие адреса и по другой улице. В ОСМ они по ул. Академика Скрябина - в ОМКУМ таких адресов вообще нет, в ggk.mos.ru они по Ферганской ул.

А нельзя ли прикрутить статистику, когда и сколько процентов было сделано? Чтобы видеть “прогресс”?
И еще мне интересно, что все-таки помешало когда-то взять адресацию с http://www.atlasmoscow.ru ?

А можно не форсить адреса с пробелами? Кроме того, что никто так и не сказал зачем они нужны (учитывая что буквы, включенные в номер и с/к от строения/корпус мы различаем по регистру), один еще и сумятицу вносят - я видел где-то адрес вида 1 к2/2. Посмотрите как написаны адреса в том же atlasmoscow - по-моему, больше ничего не надо.

Лучше отмечать жёлтым всякие “корп.” и “стр.”. И, кстати, как писать владение и домовладение?

PS. Валидатор приравнивает латинские k и с к соответствующим кириллическим, но не aAbBdDeE. Поэтому я вчера сконвертил все addr:housenumber в Москве в кириллицу где можно было - с B и D получается неоднозначно, им добавил fixme.

Разделил статистику по отдельным нас. пунктам.
Правда, глюки со сложными улицами пока не решены.

С прогрессом пока нет смысла заморачиваться, потому что сам расчёт ещё не устаканился.

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

Что-то я не могу найти тему, где это последний раз обсуждалось.

Перезакачал адресный реестр - разница почти в тысячу записей…

Кстати, доступа к полному реестру у меня всё так же нет, так что улицы только те, что есть в ОМКУМ.
А иногда вылезают и такие перлы:

Вроде сделал нормальную обработку одноимённых улиц. Проверяйте.

Зеленоград в эту норму, как всегда, не укладывается.

  1. Если название улицы не уникально в Москве, то это еще не повод от нее требовать в обязательном порядке наличия suburb. Улица может и без этого быть вполне уникальна в рамках Зеленограда. (Первомайская улица)
  2. Если название улицы уникально в Москве, или в Зеленограде, то это еще не повод от нее требовать в обязательном порядке отсутствия suburb. Для уточнения suburb бывает полезен. (Медведковская улица, Садовая, Новая, Ровная и т.п.)
  3. Если название улицы не уникально в Зеленограде, то это еще не повод от нее требовать в обязательном порядке наличия suburb. subur должны иметь только улицы вне “собственно Зеленограда”. Иначе suburb=Зеленоград :wink:
  4. Если название улицы уникально в Зеленограде, то это еще не повод от нее требовать в обязательном порядке наличия/отсутствия правильного suburb. Для уникальности в классификаторе стоит или “Зеленоград” или suburb, угадать невозможно.
    Заречная улица (г. Зеленоград), плавно переходит в Школьная улица (Крюково). Ладно, есть Школьная улица (пос. Малино) , но почему улица Ленина (Крюково), а выходящая на нее Советская улица (г. Зеленоград), это никак не понять.

В общем алгоритм надо выворачивать на изнанку. Идти от того, что есть в OSM и пытаться найти это в классификаторе, причем не единственным образом.
Сейчас же из классификатора берется “идеальное название” и ищется в OSM причем единственным образом.

С Заводской беда. Она, как я писал, искусственно поделена на две части, но дома приписаны к одной.

Вообще-то мне это кажется или те улицы, на которых, по мнению справочника, нет домов в список не попадают?
Зато потом выплывают, как “неизвестные” .

Что-то в моем списке улиц, взятом с http://mosclassific.ru/mClass/spravum_view.php , в Зеленограде больше.
http://wowik.000space.com/zelenograd.htm

Где у вас, к примеру, Филаретовская улица ?

Да, и последнее по порядку, но не по важности, а где же все безуличные корпуса? :wink:

Повод, повод. Все вменяемые случаи, типа addr:suburb=Зеленоград в Зеленограде, разруливаются правильно. Все остальные это уже ошибки.

Да, улицы без домов отбрасываются.

У безуличных корпусов [по официальному реестру] предполагается addr:street=“город Зеленоград”

Не верно. Вы исходите, что адрес правильно может быть записан единственным образом.

А здря.

Масло масляное. Приехали. Дойдем до того, чтобы писать

addr:city=Зеленоград
addr:suburb=Зеленоград
addr:street=Зеленоград

А потом скатимся
addr:city=Москва
addr:suburb=Москва

У нас задача не привести адреса к тому, как они в реестре, а проверить по реестру.
Там введена искусственная конструкция, из-за ленивости программистов, не могущих дом повесить на город.
В OSM сейчас введена другая, чуть более осмысленная, искусственная конструкция (addr:street=Микрорайон), для ленивых программистов конверторов, не могущих сделать поиск домов без улицы.

Еще раз повторяю, что в реестре suburb написан порой от балды.

Оно конечно можно мапить под данный валидатор, но тогда почему бы не под другой, или под конвертор?

В общем, как минимум, перед сравнением надо избыточные addr:suburb откидывать при сравнении, как в адресе, так и в улице.
Ибо наличие уже addr:city приводит к уменьшению неоднозначности.

Ещё раз:

  • валидатор предназначен для сравнения адресов из ОСМ с официальным адресным реестром
  • addr:city игнорируется вообще и принципиально, н/п матчатся только по попаданию в полигон
  • addr:suburb считается частью адреса, а не территориальной принадлежностью или чем-то ещё, и соответственно его совпадение тоже проверяется
  • когда addr:suburb совпадает с названием города, он игнорируется

Что касается безуличных корпусов, с ними надо думать отдельно (они, кстати, не только в Зеленограде есть).
предложения принимаются :slight_smile:

Я про эту ошибку и говорю. addr:suburb определяется неединственным образом.

В отличие от реестра:

  1. Он может присутствовать в OSM, даже когда избыточен.
  2. Он может отсутствовать в OSM, когда избыточен в пределах Зеленограда.
  3. В реестре может присутствовать addr:suburb более высокого уровня, если этого достаточно для однозначности в пределах Москвы.

Я уже писал, что сам реестр территорий подразумевает их вложенность!
http://forum.openstreetmap.org/viewtopic.php?pid=117824#p117824

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

при этом, разумеется, делается поправка на разницу в структурах представления адресов, но сами адреса не меняются

С них и надо было начинать! Тогда остальное бы само получилось. :wink:
Кстати в деревнях это тоже принято. “Село Васино, дом 8”

  1. Для начала допустить неединственность записи адреса.
  2. Надо реестр понимать творчески — дополнить его признаками бутафорности улицы.
    То есть пометить их костыли, как костыли. Это “улицы” “Зеленоград” и “Х-й Микрорайон”. Причем “Зеленоград”, в добавок к бутафорности (то есть такая улица в почтовом адресе такая улица отсутствует, но полезна, к примеру, для поиска и т.п.), добавит признак дефолтности. То есть, “тут лежат дома, у которых нет улицы”.
  3. Бутафорские улицы в OSM тоже бы пометить, как бутафорские, но может обойдется.

Итого:

Перед сравнением приводим адреса из реестра и из OSM к одному каноническому виду (например максимально короткому виду, достаточному для разрешения неоднозначности).

Для однозначности заменяем указание на suburb на самый suburb самого высокого уровня, сохраняющего отсутствие неоднозначности. В реестре это уже почти так.
Тем самым “улица Ленина(Крюково)” становится “улица Ленина(Зеленоград)”

Если улица единственна в Зеленограде, то из реестрового адреса выкидываем указание на suburb, да он и будет совпадать с Зеленоград.

Если найденная улица помечена (см. п.2) как бутафорская, (3-й Микрорайон), то ее пропускаем (при сравнении).

М-да, что-то сумбурно получилось…

Чтобы не ломать всё сразу, то можно все эти дела применять только к тем домам, которые на первом проходе не нашли себе места.