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

Вопросом на вопрос?

Что-то вы путаетесь и растекаетесь.
Коротко, что вы предлагаете?
Самое простое:
Не писать на каждом домике addr:suburb, а что и где написать?

У freeExec спросите, он понял.

  1. Не писать на каждом домике addr:suburb, addr:country, addr:state (т.к. мапперов бесполезный труд)
  2. указывать полигон точной границей с тегом addr:suburb (если такое возможно)
  3. брать addr:suburb для домиков с addr:housenumber с полигона с addr:suburb.

addr:city не так работает?

http://www.openstreetmap.org/way/375927637/history

addr:housenumber 	72
addr:street 	Самарская улица

http://www.openstreetmap.org/search?query=53.18932%2C50.10259#map=19/53.18934/50.10279

Если addr:street нужно у объекта или отношения указывать, то addr:place=* - можно площадью указать, как addr:city=* http://www.openstreetmap.org/relation/3368701

Нет. Не так.

  1. НП обязателен в адресе, посему на самом НП ничего писать не надо, никаких addr:city (хотя была такая мода)
  2. НП обязателен в адресе, посему взявший в руки домик понимает, что если нет на нем addr:city, то надо посмотреть НП, в который дом попал.

Он плохо работает в том же 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 не попадает?