Open d1g opened 8 years ago
Я в выгрузках и так матчу здание (если оно само было тегировано) и пои, правда, возможно, я слишком многовыкидываю подробностей когда записываю конечный резульат.
Nominatim:
osm.me:
Погоди, для начала, давай разберемся с выгрузками, что ищет osm.me это отдельный разговор (Мне так и не удалось добиться от ElasticSearch всего того что я хочу по поиску и сортировке результатов, так что находит он далеко не всегда то что я ожидаю).
Дай осмовскую айдишку для этого мола пожалуйста.
Хорошо, мне надо посмотреть что именно я выгружаю для мола и для поек внутри. Это займет некоторое время.
Так вот что я выгружаю для Афимола https://gist.github.com/kiselev-dv/a24c3e6e498d142d905db5ddfe3db966
вижу есть данные по Starbucks: http://www.openstreetmap.org/node/1225311629
Я ожидаю его увидеть по "Старбакс АФИМОЛЛ" "АФИМОЛЛ Старбакс" "старбакс в афимолле"
Точно не старбакс в афимолле, вообще над генерацией текста я еще подумаю как это лучше сделать, сам объект я добавил https://gist.github.com/kiselev-dv/67737f2a0ff1abc24b88bd7ee4ae2595
Так, поехали дальше, @d1g как ты хотел это использовать?
@kiselev-dv, изначальный сценарий был "вывести все POI внутри <АФИМОЛЛ>". В случае OLU была часть магазов на экране (из overpass).
Когда смотришь большой молл, нужно подменить результаты с bbox на area.
Затем возникла идея по айдишнику POI (n1225311629) возвращать ID здания (+ название). Третий вариант (магаз-здание) я недавно предложил.
overpass плох тем, что 1. он выводит по bbox (не попадает в экран часть магазов) 2. он требует знать название магаза (в случае area)
Так, POI=>здание
будет работать как только обновлю, точнее айдишку и сейчас думаю можно вытащить она в рефах должна быть.
Все пои внутри здания, если я записываю айди здания для пои в рефы, то тоже уже сейчас должно работать.
Что не работает и пока я думаю как лучше - это текст. Ну точнее я отвлекся маленько, может на выходных прикручу текст.
Геокодирование по паре сотен POI внутри дома может выглядеть как overkill но для неё есть самое прямое применение в OpenLevelUp. Главное чтобы osmid в ответе приходил.
Параметры API
В WEB API gazetteer нужно добавить какой-нибудь параметр по которому будет ограничена область геокодинга.
Похожее было здесь: https://github.com/kiselev-dv/gazetteer/tree/develop/Gazetteer#3-how-to-filter-data-by-boundary
osm_id=w00000001 osm_id=r00000001
Очевидно, что для этого клиентам нужно знать osmid (что противоречит геокодингу без костылей), но OpenLevelUp может сделать и такое потому как данные есть от overpass.
Возможно упростить всё пользователям двумя параметрами: restrict=admin_level + restrict_query=Москва restrict=building + restrict_query=Афимолл Сити restrict=mall + restrict_query=Centre Commercial Le Coudoulet
Индексация
Самая простая реализация это добавить метки is_in_Афимолл_Сити всем объектам внутри здания.
Моллы/retail здания можно выделить из всех остальных "домов" для уменьшения индекса.
Для админ границ не такая востребованная фича, может подождать.
Обработка запросов
Матчить 2 параметра по этим меткам да хоть на равенство (уже лучше Номинатима).
Можно сортировать одинаковые результаты по дистанции к lat/lot/zoom параметоров из клиентского приложения (у OpenLevelUp в URL есть они). Т.е. перезаписывая веса внутренние веса ES на метры до lat/lot.
Можно эту пост-сортировку до центра экрана сделать опциональной.
PS. тикет в OpenLevelUp https://framagit.org/PanierAvide/OpenLevelUp/issues/10 тикет в Photon https://github.com/komoot/photon/issues/226