Мечты о визуализации чейнджсетов

Achavi — всего лишь js-интерфейс к Overpass API. Его можно поставить даже на локалхост, наверное, даже просто из html запускать.

Zverik, да, я уже ознакомился с этим проектом. Все ускорение Achavi сводится к изменению ссылки на более быстрый overpass, которого нет :(. В общем, хорошая пища для размышлений…

http://tyrasd.github.io/latest-changes/

Что-то все про эту красоту забыли. Да, глубинных инструментов для фильтрации тут нет, но выглядит наглядно.

вот и я о том-же, вместо того чтобы мечтать об абстрактном и фантастическом функционале лучше предложить конкретные идеи по улучшению этих двух уже существующих сервисов. Achavi есть на гитхабе, если кодить не можете/не умеете, можно написать в issues https://github.com/nrenner/achavi/issues

whodidit на гитхабе вроде нету (не нашел), поэтому пулреквеста не предложить, но идеи/предложения можно писать и здесь. Возможно эти вещи когда-нибудь станут частью сайта osm.org

Главная проблема конечно скорость (whodidit постоянно пользуюсь), но пока не очень понимаю в какую сторону копать чтобы эту скорость пофиксить и где взять людей которые на это способны. Имею ввиду конечно квалификацию программиста. Насколько я понимаю, дифы в базе ОСМ нечто невероятно сложное что под силу далеко не каждому прогеру.

https://github.com/simon04/whodidit
В Achavi, да и похоже в Who did it, разработчик мало поможет, по крайней мере я не встречал разработчиков, хорошо шарящих в оптимизации БД.
Achavi поможет свой оверпасс прокси, держащий свежие чейжсеты и только за отсутвием оных смотрел в офф оверпасс. Судя по услышанному на радио ОСМ (про выкачку всего региона), возможно, будет лучше даже свой костыль соорудить, отдающий данные конкретного чейнжсета и Achavi под это подпилить.
У who did it, похоже, своя база. Т.е. развернув свой who did it можно сразу приступать к анализу слабых мест базы и оптимизировать ее и запросы к ней.

Мой whodidit вот. Как его ускорить, я знаю, и записал себе в тикеты. Другой вопрос, что как и у всех остальных разработчиков в OSM, мой todo-list переполнен, и улучшение whodidit примерно на 3-4 месте (что очень неплохо, но не 1).

Боже, и у тебя на мускуле:(. А чего ссылки на гитхаб нет с обзорной страницы? Захочешь, не найдешь.

Я, конечно, не особо дружу с мускулом, однако, что-то мне подсказывает, что даже он удовлетворяет стандарту SQL-92, и никак не пойму, какова цель использования группировки в этом запросе

select 1 from wdi_changesets where user_name = \''.$db->escape_string($username).'\' group by user_name limit 1

Без неё результат должен быть тотже и быстрее

вот этот, от симона работает быстрее http://simon04.dev.openstreetmap.org/whodidit/

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

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

Но в подробностях в rss нет ссылки на achavi что не удобно. А так да, работает быстро.

Whodidit + Achavi задачу визуализации решают.

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

Добавил ранее себе в RSS-ридер ленты whodidit интересующих bbox, но пришлось забить на них, т. к. из-за таких людей поток даже для одного города выходит чересчур большим, если его правят хоть несколько мапперов, пренебрегающих хорошим тоном оформления чейнджсетов.

Почему-то мне встречается противоположная крайность, когда человек в одном changeset делает сотню правок по территории целого города, так что не прощелкав по каждому изменению, невозможно понять, что же именно и где он правил.

Achavi оказывается умеет показывать правки за определенное время по bbox’у, нужно добавить в Whodidit “показать все правки в Achavi” для каждого квадрата.

Тоже с этим столкнулся. В начале прошлого месяца паре человек пришлось это объяснять. Наверное, надо специальную тему завести, или страничку в вике, где описывалось бы, чего не стоит делать:
– сохраняться после отрисовки каждого домика
– подписывать гаражи, стоянки и спортплощадки в стиле НЯК
– и т.п.

И где вкратце объяснялись бы базовые концепции, вроде того, что OSM – это не только Мапник на главной…

Есть ли среди нас люди, не на словах заинтереснованные в ускорении работы Achavi, но и на деле способные реализовать сие подстравиванием Achavi под работу с иным сервисом?
К чему вопрос? Пилю сервис для этого дела, думал молчать, пока не сделаю, но как-то времени своего жалко, если никому не нужно будет. Сам-то я с JS не особо дружу, поэтому за переделку самого Achavi даже браться не буду. Сервис же для получения необходимых данных в обход overpass-api предоставить вполне в моих силах.
Сбор данных производится по дифам. Если что-то из требуемых данных отсутствует, ну что же, с этим ничего не сделаешь, всю планету с версиями всех элементов позволить держать я себе не могу, сервис полезет в API. Но все быстрее, чем все через API тягать, плюс, при повторном обращении к этим данным они уже будут браться из базы сервиса.
Сервис уже способен пополнять свою базу по дифам, может выдать список ченжсетов по ббок за период “указанная дата - текущим момент”, любой объект любой версии, ну и все объекты с их версиями конкретного ченжсета.
Однако, показать особо нечего, сервис лишь на локали и API пока отсутствуют.

Есть одна идейка по поводу Achavi.

Как сделано сейчас: если геометрия линии изменена (пердвинуты, добавлены или удалены точки), то рисуется прошлая геометрия всей линии (красным) и новая геометрия всей линии (зелёным).

Что я предлагаю сделать:

  1. Если точка линии была передвинута, то показывать старую и новую геометрии только для двух рёбер этой линии, в которые входит данная точка. Если данная точка - крайняя в линии, то показывать только одно ребро.
  2. Если точка была добавлена в линию, то показывать новую геометрию только для двух рёбер этой линии, в которые входит данная точка, старую - для одного ребра между ближайшими к данной точке (в списке точек линии) точками, которые существовали в прошлой версии линии. Если данная точка - крайняя в линии, то показывать только новую геометрию (зеленым).
  3. Если точка была удалена из линии, то показывать новую геометрию только для ребра между ближайшими к данной точке (в списке точек линии) точками, которые существуют в последней версии линии; старую - только для двух рёбер этой линии, в которые входила данная точка. Если данная точка - крайняя в линии, то показывать только старую геометрию (красным).

Всё это позволит легче находить места, где линия была изменена.

Главный вопрос: как вы считаете, полезная ли эта идея? Нужно ли писать о ней автору?
Если да, то если ли ещё что-то, что можно добавить сюда? И помогите, пожалуйста, понятно написать это на английском.

P. S. Простите за многократное повторение слова “точка” :slight_smile:

Автору можно писать, что угодно, но уже с полгода он не занимается Achavi. Хотя и принимает пул-реквесты.
Лично мне всё равно, какая часть геометрии была изменена: важно только, какие линии человек потрогал в ченджсете.

Если точки подергали, а версия линии не изменилась, то Achavi все равно эту линию отобразить? Я так ни разу не смог дождаться результата Achavi.