Permanent IDs при использовании Overpass

Здравствуйте!

Может быть немного не по адресу, но, надеюсь, не выгоните :slight_smile:
Пишу приложение, использующее данные OpenStreetMap в своей работе.
Искалка бизнес-ланчей вокруг + постилка/смотрелка фоток меню.
В работе требуется прицеплять к POI, взятым из OSM через Overpass API свои данные
(цену бизнес-ланча, фотки меню и т.д.).

Сейчас идет ранняя стадия тестирования, в качестве идентификаторов для привязки
беру ID нод, которые возвращает Overpass. Заметил, что ноды регулярно меняют
свои айдишники, что совершенно не приемлемо. Прочитал страничку документации
http://wiki.openstreetmap.org/wiki/Overpass_API/Permanent_ID , но понял слабо.

Может здесь кто-нибудь пояснить, как нужно правильно привязываться к
базе OSM, по каким критериям?

Спасибо.

Там вполне ясно написано, что overpass api может возвращать объект по запросу, включающему характеристики объекта. Что позволяет находить его (их) в базе, даже если сама запись будет удалена и создана заново.

Попробую переформулировать: “amenity=cafe; name=Шоколадница” в районе точки 55.760984,37.580282 идентифицирует один и тот же объект, независимо от того, пересоздавали его или нет.

К айдишникам действительно не привяжешься.
Хуже того, к типу тоже привязываться нельзя: любую ноду в любой момент переделают в полигон, потом в мультиполигон, а потом снова в ноду, но уже другую :smiley:

Спасибо за быстрые ответы, не ожидал :slight_smile:

PShA, у меня обратная последовательность работы, вот такая:

  1. Из приложения идет запрос на мой сервер, который работает
    с OSM и своей БД, выдавая в ответ приложению информацию
    в своем протоколе.

  2. В запросе к Overpass я ищу только ноды, формируя запрос типа
    node[“amenity”~“cafe|pub|bar|biergarten|fast_food|restaurant”]

  3. Выбираю из своей базы всю инфу по тем нодам, которые уже там есть.
    Все ноды, которых не было у меня, добавляю для того, чтобы позже можно
    было привязать к ним фотографии и дополнительную инфу.

  4. Выдаю ответ приложению.

Т.о. если я не могу здесь привязываться к ID ноды, у меня один выход - формировать такой ID,
например хешем из названия и координат. Думаю это процентов 80% проблемы решит,
останутся ситуации, в которых поменялись либо координаты ноды, либо название.
Поэтому этот подход не прокатит.

Может кто-то может подсказать решение? Очень бы не хотелось откатываться к использованию
баз данных 2ГИС или FourSquare. Часть идеи была в том, чтобы за счет моего приложения
данные OSM по кафе-ресторанам актуализировалось. Но если ситуация с привязками такая
неразрешимая…

Кроме как держать базу своих точек у себя же, а на основе OSM ее только пополнять, другого выхода не существует.

Эти объекты могут быть не только node’ми.
Теги cafe|pub|bar|biergarten|fast_food|restaurant вполне могуи стоять и на зданиях, и их частях.

Держать всю базу POI у себя - не вариант. Такая интеграция для того и затевалась, чтобы данные
брались из сторонне обновляемой базы. Если все держать у себя, надо и самим будет все это в порядке
поддерживать - слабо реальная затея.

Дмитрий, а в рамках одного Overpass-запроса можно выбрать сразу и ноды и здания и части?

Работать напрямую с данными осм, пусть даже через оверпасс, - наивная затея. Ничего хорошего не получится.

Еще раз: держать у себя базу, которая причесана под свои нужды. Периодически обновлять ее на основе сведений из OSM (например, путем составления запросов на основе собственного экземпляра базы через тот же overpass, дабы выявить изменения в уже существующих объектах и найти новые). Прямая работа с OSM - утопия.

Не знаю - я в этой области “чайник”. :roll_eyes:

Всем спасибо. Получается OSM - это некая “вещь в себе”?
Имхо проект здорово мог бы выйграть от сателлитов типа моего Обедоеда.
Мы бы брали данные по POI из OSM, а владельцев всех точек, которых еще нет на карте,
но которые хотели бы оказаться опубликованными у нас, посылали/заставляли/мотивировали бы
(прямо, либо через специальный упрощенный интерфейс) редактировать данные на OSM.

Видимо это только мечты :slight_smile:

Я один из таких сайтов держу, каталог фитнеса, привязка проще простого по адресу тегу operator, так что всё возможно, было бы желание.

  • обновление данных раз в N времени и руками по запросу, обновляя проверяется что и как изменилось.

то есть у всех POI OSM, которые у вас показываются установлен ваш тег operator:superfitness.ru ?
и вы вручную его сначала проставили на некотором количестве точек?

выглядит для меня не приемлемо - так как во-первых не реально расставлять такую кучу тегов массово
(у меня не на один город проект) + после расстановки тегов некоторый временной лаг есть, пока оно
в базе пропишется + (я подозреваю) такие теги некоторые участники вытирать могут из базы

я все правильно понял, если нет, напишите подробнее плиз.

*Только меня уже напрягает liosha, который в последнее время только такую писсемистичную фигню и постит? Ни капли конструктива, даже не пытается *

Webself, лучше привязываться к ID. Так легко отследишь перемещения точки (по-моему, это то, что чаще всего происходит - уточнение местоположения)

Если кто-то изменил точку на way или наоборот, то это можно поймать. Во первых это произойдёт в один changeset. А во вторых точка исчезнет(!) и в её окресностях появится(!) way с теми же или очень похожими тегами. Спорные ситуации, когда теги сильно поменялись, можно отправить на ручную проверку, но, думаю, абсолютное большинство смен ID на POI поймается автоматически.

Мерещиццо уже, что ли? Расшифровываю для особо мнительных: использовать данные ОСМ нужно только после предварительной обработки под свои нужды. Сырые осмоданные для конечного использования не годятся.

Так понятнее?

У меня такая же мечта :slight_smile: чтобы POI ставили не через потлач, а через специализированные сайты, где бы собирались люди, которым именно эти POI и интересны: автомобилисты, туристы, молодые мамочки и т.д.

Если есть проблемы, их надо просто решать, а Лёшу не слушай, это просто местный пессимист.

Нет, Алексей, не понятнее. Пиши пожалуйста ещё понятнее. Какая обработка, зачем нужна, и т.д. и т.п. И в первом же сообщении, пожалуйста.

Постить вбросы типа “Работать напрямую с данными осм, пусть даже через оверпасс, - наивная затея. Ничего хорошего не получится.” из под пользователя со статусом “модератор” (а значит авторитет) - это жесть. Всех распугиваешь

Если человек на форуме про самодельную сверхлегкую авиацию спросит: “Хочу построить самолет. Из картона. Но он рвется, посоветуйте картон, который не рвется?” - а ему ответят: “Непосредственно из картона построить не получится” - это что, недопустимо?

Очевидно же, что это означает, что спрашивающему нужно разобраться в вопросе, а на данном этапе излагать ему технологию изготовления высокопрочных композитных деталей из гофрокартона, стабилизированного полиэфирными смолами в вакуумно-термической камере - некий, мягко говоря, overhead. Не испугает ли его это еще больше?

Философия разжевывания - это как раз и есть ужасно вредная штука, потому что порождает культ “пошаговых инструкций” (в общем случае) по которым множество людей, совершенно не разбирающихся в вопросе, повторяют с легкими изменениями то, что уже существует благодаря тем, кто имел терпение разобраться. Если что - это не в сторону топикстартера упрек, хотя и он как-то, гхм, недостаточно в теме, чтобы сделать надежный проект такого рода на основе данных OSM, по крайней мере.

osmisto, мои слова были ответом на вопрос конкретному пользователю (не тебе), который описал свою ситуацию и был в контексте разговора. Кроме того, это было всего лишь дополнение ответа BushmanK постом выше.

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