Komяpa
(Komяpa)
1
Мне черезвычайно надоела ситуация с тем, что Nominatim никогда не обновляется, а “геокодер нового поколения” всё никак никем не заканчивается, поэтому написал свой.
Ставившиеся цели:
Вживую геокодер можно пощупать на http://openstreetmap.by/, набрав что-нибудь в поиске или передав в страничку параметром ?q=.
Цели, не ставившиеся перед геокодером:
- Находить всё. Это задача Яндекса, и если ее решать, то можно упереться в то же, что и Номинатим - импорт в базу будет происходить не в реальном времени, а с (много)недельным отставанием;
- Искать POI. На мой взгляд, это задача каталогов POI, а не геокодера, поэтому поиски типа “магазины мебели вокруг завода такого-то” поддерживать не планируется;
- Поддерживать все адресные схемы и весь мир. На мой взгляд, вполне достаточно ограничиться русским языком;
- Поддерживать поиск по некрасивым данным. Если кто-то напишет addr:street=“Ленина улица” вместо addr:street=“улица Ленина” (см. соглашение об именовании), то вполне нормально, если такой объект не будет найден.
Формат ввода:
а) Поиск по строгому совпадению name полигона и введенной строки (регистрозависимый). Вполне достаточно, чтобы написать Минск и найти в базе ближайший к вам Минск.
б) Поиск по паре “улица-дом-(город)” (регистронезависимый, relaxed). Выдаёт ближайший к опорной точке дом с таким адресом;
в) Поиск по улице (-городу) (регистронезависимый, relaxed). Выдаёт ближайший к вам сегмент улицы с таким названием.
г) Поиск по населенным пунктам (регистронезависимый, relaxed). Выдаёт населенный пункт с похожим названием.
Требования к данным:
- addr:street и name у улиц должен быть заполнен согласно Соглашению об именовании дорог, допустимы сокращения “ул.”, “просп.” и “пер.”;
- addr:street должен быть в базе проекта streetmangler (https://github.com/AMDmi3/streetmangler, автор AMDmi3, дополнения можно присылать там же, на гитхабе, в виде баг-репортов и пулл-реквестов);
- addr:housenumber записан в формате “48А к2 с1” - дом номер 48А, корпус 2, строение 1. на данный момент поиска по составным номерам домов нет.
- двойные адреса задаются в следующем виде: основной адрес прописывается на контур здания (addr:street, addr:housenumber), дополнительные адреса ставятся на точки (addr:street, addr:housenumber ,без тега building) внутри контура основного здания.
Как-то так. Попробуйте поискать свой дом; найдётся? Если да, мне будет приятно услышать “спасибо”, если нет, то мне хотелось бы знать ссылку на объект в OSM и тот запрос, который вы вводите. 
Hind
2
К слову, в реальной жизни искать пои — не задача геокодера, но и не задача каталога. Запросы вида «поесть» или «суши» КРАЙНЕ актуальны в практическом применении. Даже из моего личного опыта.
А вообще ня, мой дом находит :3
Вечером затестирую.
luiswoo
(Luiswoo)
3
Вбиваю “3-я линия 27 Ростов-на-Дону” - выдаёт тот же адрес, но в Краснодаре. Nominatim выдаёт то что надо.
Мой дом находит, слава котам!
Не находит улицу Нарского в Острогожске. Сам Острогожск находит, соседнюю с ним улицу Крамского находит.
Запрос: “Острогожск нарского”
Осмовей: http://www.openstreetmap.org/browse/way/51655450
DeKaN
5
Запрос: “Московское шоссе Самара” приводит сюда
Должен к http://www.openstreetmap.org/browse/relation/1531821 или хотя бы одному из указанных там
Kostik
(Kostik)
6
Запрос “Кандалакша Фрунзе 33” выдаёт:
Тверскую область, Конаково
“Сухой Лог” - находит Сухой Лог в Томской области. хотя он к моему геоположению не близок (ip должен быть екатеринбуржский, геопозиционирование в других местах работает нормально). Вариантов с выбором других мест не предлагает
“Сухой Лог, Сведловская область” - вообще переходит в Омск
upd:
хм… странно… начал находить правильный Сухой Лог…
Zverik
(Ilya Zverev)
8
Мою улицу, мой дом не находит. Например, Карташихина 4.
Ilis
(Кругликов Илья)
9
А можно на http://openstreetmap.by/ добавить переключалку источника тайлов между русским и белорусским языками?
siberiano
(Ы-ы-ыть)
10
Набираю “новосибирск, ильича, 3”, попадаю в Бердск на улицу Новосибирскую. (искал: вот)
“цветной проезд, 3” - попадаю в Барнаул. “Новосибирск, цветной проезд, 3” - в Томск. (вот что искал)
Почему-то меня при входе определяют как жителя Богучанского района Красноярского края. 
Miroff
(Miroff)
11
А это MaxMind вместо нормальной геобазы.
Komяpa
(Komяpa)
13
будут. Дайте до ума довести.
siberiano
(Ы-ы-ыть)
14
На БитБукете, пожалуйста.
Клонируй что угодно и куда угодно 
Mixail
(Michael)
16
В случае чего используй hg convert, Люк!
Если не писать в запросе “ё”, то не находит. Кстати, в Яндексе название улицы как раз без “ё”, но запросом с “ё” тоже находит.
По запросу “дмитров” выдаёт улицу Большую Дмитровку.
По запросам “краинка” и “валуево” вообще ничего не находит.
Mir76
18
Запрос “Титова Екатеринбург” приводит в Заславль, Белоруссия. Ну а хотелось бы екатеринбург 
Komяpa
(Komяpa)
19
Добавлена поддержка городов и прочих населенных пунктов.
Запросы должны быть теперь отвязаны от “ё”, они с “е” считаются одной буквой.
“Дмитров”, “краинка”, “валуево” находит соответствующие ближайшие населенные пункты.
“новосибирск, ильича, 3” и “новосибирск цветной проезд 3” тоже находятся.
У кого-нибудь что-то ещё не находится?)
Находит, спасибо. Но находит только один из. И по запросу “Валуево” выдаётся не “Валуево”, а “Верхнее Валуево”. Может из-за населения…
Ещё “озеро долгое” не ищется (гм… это относится к POI, которые вы не планируете искать?).