Адресация с номером дома но без улицы

Он плохо работает в том же Nominatim? Кто на него жаловался хоть раз?
Плохо. Пишет много лишнего. То, что он выдает не есть адрес.

Федеральный округ - замечательно
Административный округ - прелестно
Старое Крюково - отлично! Муниципальный округ похоже. притянут suburb
19-й микрорайон - вообще на другой стороне железной дороги, а тут 8-й микрорайон, да и нет его в адресе (как 19-й сюда попал, ведь лежит же дом в микрорайоне 8а , а за уши притянули 19-й микрорайон только точкой обозначен)
Солнечная аллея - нет ее в адресе, за уши притянуто

Теперь это тема про Nominatim :smiley:

https://www.openstreetmap.org/search?query=55.98071%2C37.18222#map=17/55.98045/37.18266
https://www.openstreetmap.org/way/272863825/history

  1. “Солнечная аллея” - это ближайшая дорога т.к. addr:street пустой, но в Зеленограде это в корне неверно. В почти всех городах (даже в Корее) теперь уличная адресация. Четная/нечётная или дистанционная это детали - http://www.openstreetmap.org/user/d1g/diary/38041#comment33943
    Для разрешения этой проблемы я предложил указывать addr:system для всего города/admin_level
    http://www.openstreetmap.org/user/d1g/diary/38041#comment33964

  2. “19-й микрорайон”

https://www.openstreetmap.org/node/3958288104/history - вот этот? что будет если его площадью переделать?
https://www.openstreetmap.org/way/294886463/history - сюды? а ту точку грохнуть?

Без учёта ошибки с номером микрорайона в Зеленограде, разве будет критично его указать?
Куда интересней Челнинская схема где используется нумерация “Микрорайон/Дом”, хотя есть и привычная “улица, Дом”, но вообще не на слуху. Тут наверное решилось бы

addr:suburb + addr:housenumber
addr2:street + addr2:housenumber

И в данном случае натягивание place=suburb не понятно куда, для всех альтернативных номеров или нет.

Я имел ввиду, что addr:street=no + геометрическая вложенность также работает как адресация по площади, собственно вне зависимости от наличия addr:place или addr:city на внешнем полигоне.

В то же время без addr:place (или addr:street=no или других аналогичных “костылей”) на доме, невозможно, как минимум, определить действительно ли дом адресуется по территории или ему просто забыли указать улицу.
Более того, поскольку схема Карслруэ предполагает допустимым для дома с единственным адресным тегом housenumber брать ближайшую улицу в качестве addr:street, то получается определённая неоднозначность в отношении того брать улицу или же вышестоящий объект.(это происходит именно из-за неоднозначности “забыли указать улицу”/“адресуется по территории”)

Гипотетически можно было бы придумать сложные правила типа “если вокруг есть addr:place, то брать его, иначе - ближайшую улицу”, но на практике такие правила сбивают с толку не-программистов. Поэтому я считаю, что для адресации по территории указывать addr:place на доме обязательно(он логичнее чем мета addr:street=no или addr:system).

В том числе. И про другие способы автоматической реконструкции адреса для дома по имеющейся в ОСМ информации.

  1. Площадь было бы хорошо, пожалуй можно даже сделать, правда она не очень точно изветна, а грохать-то точку зачем?
  2. Практически всё, что там внутри предлагаемой границы, к микрорайону даже никак не относится. К микрорайону относится плотора дома. Вся застройка еще доисторическая, до возникновения микрорайона :slight_smile:

Давайте вернемся к addr:suburb и addr:place с несколько другой стороны.
В чем же принципиальное их отличие от addr:country, addr:city.

Решаем следующую задачу: ходим по домикам и составляем им полные адреса.
Грубо говоря, вот какие возможные элементы у нас в стране:
addr:country
addr:region
addr:district
addr:subdistrict
addr:city
addr:suburb
addr:place
addr:street
addr:housenumber

  1. Если есть ли на домике addr:country - хорошо, иначе, поскольку страна обязательна в адресе, то ишем в полигон какой страны попадает домик.
  2. Аналогично вплоть до addr:city включительно, для отсутствующих обязательных элементов адреса ищем полигоны, в которые попадает домик и извлекаем имя элемента.
  3. addr:suburb - необязательный элемент. Если он не указан на домике либо мы ничего не делаем и быстренько идем дальше, либо, как я понимаю d1g, опять ищем, а не попал ли домик в какой-нибудь place=suburb? В большинстве случаев убеждаемся, что не попал, и потеряв время идем дальше. Если же попал, то включаем его в адрес. Как вариант, смотрим его теги, допустим там будет написано, что именно этот suburb обязателен в адресе всех, кто в него попал.
  4. addr:place - необязательный элемент. Та же ботва, только для поиска возможного кандидата смотрим все возможные place=neighbourhood, place=quarter, place=square, landuse=residential/industrial, да практически все именованные площадные объекты, (wiki: “some another polygonal object”). И делаем это практичечески для любого домика впустую.

Т.е. минус только в том что долго. Зайти с другой стороны, обработать домики только по пунктам 1-2, а дальше отобрать подоходящие полигоны и дополнить адреса для найденных в полигонах домиках.

  1. addr:street - необязательный элемент. Ну хоть тут-то мы, слава Богу. пока не смотрим улицы вокруг и не притягиваем ближайшую, как Nominatim

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

вот тут опять потеря времени, смотреть что за домики туда попадают. Причем большинство домиков города в эту промзону явно не попадут, но проверять придется.

Ну тогда хотелось бы статистика, на 100%-200% это будешь дольше если работать сразу с обрезкой области. А то может тут вопрос 5 минут. Врочем всегда остаётся вариант, дёшево и сердито на такие тонкости забить :slight_smile:

Я считаю, что place и street надо поменять местами.
addr:suburb
addr:street
addr:place
Это даст возможность адресовать наиболее нестандартные элементы планировки, когда территория приписана к улице, а не наоборот(всякие дачи могут быть). При этом сохраняя suburb для территорий между населённым пунктом и улицей.

При этом addr:place не подставлять как addr:city(и, возможно, как addr:suburb), а брать только явно проставленный, аналогично addr:street. В случае, если addr:place совпадает с addr:city, полученным на этапе 2 - этап 3 пропускается.

При отсутствии и addp:place и addr:street адрес считается неполностью заполненным. В качестве временного решения может применяться:

плюс ближайшая улица, если не нашлось ни одного place.
А может не применяться и дома, не имеющие ни одного адресного тэга кроме дома являются неопределёнными.

Не получится. Там neighbourhood и т.п. бывают, а они выше улиц.

Вот это поддерживаю. Не надо ничего выдумыватьподставлять в адрес, если он не задан явно и конкретно. Это надо считать ошибкой или неполнотой данных.
Подстановка разумна лишь в случае с «высокоиерархичными» границами (страна, область, район, город), когда очевидны обязательное вхождение и «адресная приписка» объекта к/по данным административным единицам.
Со всякими «микроадминистративными» и т. п. экзотическими адм. единицами такая подстановка неуместна и будет вносить нелепицу.
Придуманный/додуманный (в совершенно неочевидном случае) адрес — большее зло, чем его отсутствие, ибо создаётся ложное впечатление, что он есть и «всё хорошо», и ничего менять не надо.

Объясни в чём зло если в адрес будет добавлен например suburb, наоборот это даст представление в какой части города он находится, даже если не знаешь конкретную улицу.
Т.е. это как в большом городе указать не главпочтампа, а конкретное почтовое отделение, которое носит почту в дом.

В том, что создаёт ложное ощущение будто по этому адресу можно найти дом.
Типа “Московская область, г. Балашиха, мкр. Салтыковка, д. 3”, а там полторы сотни улиц и наверняка хотя бы на половине есть дом 3.

В тоже время адрес “Московская область, г. Балашиха, мкр. Дзержинского, д. 3” вполне однозначен.

И для того, чтобы обозначить полноту второго адреса и неполноту первого я и предлагаю на втором указывать addr:place, а первый в отсутствии addr:place и addr:street считать неполным.

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

  1. Я в основном обсуждаю не как должна строить программа, а как должен заносить маппер. И пытаюсь аргументировать что маппер должен указывать addr:place как признак того, что дом адресуется по территории и ничего - если он не знает по чему адресуется дом.
    В случае же

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

  1. А если нет деревни и у нас дом addr:housenumber=35 стоит посреди облцентра? А если ещё в suburb не попадает?
  1. это отсутствие обязательного элемента адреса

От обсуждения отвлеку. В http://wiki.openstreetmap.org/wiki/Nominatim/FAQ был очень старый совет от Twain: http://wiki.openstreetmap.org/w/index.php?title=Nominatim%2FFAQ&type=revision&diff=372747&oldid=371574

“Why doesn’t Nominatim process addr:* tags on buildings”

  1. Это ещё актуально для Nominatim?
  2. Есть причины для этого?

Мы можем написать программу osm2osm готорая будет приписывать сколько угодно is_in/addr: тегов автоматом используя PostGiS/что угодно если какие-то программы вдруг не работают из-за этого.

Мне кажется что повторяющиеся теги нужно объединять на ближайшем населённом пункте. Как wowik сказал, не бывает такого что населённый пункт - необязательный.

Причина простая - населённый пункт один, домов в нём - тысячи, десятки тысяч.

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

Что же касается частей адреса, которые находятся межу “населённый пункт” и “отдельный дом”:

  1. НП отдельный relation/way
  2. relation/way place=* до-тегируются addr:place=* или addr:suburb=* или другмими однороными тегми где это необходимо. Речь идёт о 3 уровнях поселений suburb/neighbourhood (забыл 3).

Количество объектов с площадной адресацией значительно (процент), но не затрагивает каждый простой случай (addr:street + addr:housenumber) на доме для остальных больших процентов будет работать НП + два тега на доме (а то и один housenumber с Украинской схемой).

http://forum.openstreetmap.org/viewtopic.php?pid=606421#p606421

addr:country
addr:region
addr:district
addr:subdistrict
addr:city

указываются на одном way/relation.

Называйте это хоть условностью d1g-а, хоть чем 1 2

place=city / place=town / place=village объекты должны тегироваться всеми подходящими addr:* тегами.

Для скорости обработки (вместо тысяч домов, вместо 5-6 уровней от страны до деревни)
Для простоты обозначения (ошибки только в одном объекте уровня place=city / place=town / place=village)
Для простоты исправлений (один объект и валидация только одного объекта, а не тысяч или нескольких уровней)

Как уже было сказано, минусов - нет если первые 5-6 уровней от стран тегировать (предпочтительно) или обрабатывать при выгрузке (не предпочтительно).