Протокол взаимодействия в валидаторами

В ходе совместных усилий (alno) был придуман протокол взаимодействия с валидаторами, постарались сделать его предельно простым и достаточным.
Сам протокол

Если есть предложения, пожелания и пр. - пожалуйста.

Дальнейшее развитие: планируется поддержка на openstreetmap.ru и написание мной простых валидаторов по адресным косякам.

А API OpenStreetBugs было специально решено не использовать? (валидаторы AMDmi3 вроде бы через него работали)

Валидаторы и ОСБ это совершенно разноуровневые штуки всё-таки

API OpenStreetBugs - это просто возврат маркеров, насколько мне известно. Нельзя определить что за объекты вызвали ошибку без дополнительно парсинга, например.

Поправьте, если я не прав.

А так, да, конечно:

Но я например, еще планирую перенять наработки Java-сообщества в создании абстракций над абстракциями и написать адаптеры для некоторых существующих валидаторов.

Да, вроде только маркеры возвращаются. Своё будет лучше и роднее, главное - разработчиков валидаторов уговорите поддержать!

Забавно конечно, но какая именно поддержка планируется на openstreetmap.ru?

Чего бы хотелось - чтобы openstreetmap.ru работал как багтрекер - закачивал бы результаты валидаторов, показывал бы ошибки как ошибки, при этом была бы возможность пометить эти ошибки как пофикшенные. При этом они должны показываться как пофикшенные, пока эта ошибка не исчезнет из результатов валидатора. (может пройти несколько дней, прежде чем валидатор получит обновленные данные из осм, и не должно быть такого, что сперва агрегатор получил ошибку, потом человек пометил ее как исправленную, потом валидатор обновился (но, допустим, исправление до него еще не дошло), и ошибка снова показывается в агрегаторе как неисправленная).

В этой связи у меня возникает некое сомнение в целесообразности требования к валидаторам поддерживать запрос по BBOX.

Это лечится введением идентификаторов ошибок на время между обновлениями. Благо они у всех есть в том или ином виде.

Именно это и планируется. И именно для этого предполагается использовать запрос по BBOX.

Я лично об этом не думал, возможно у Евгения были такие планы, но я не вижу принципиальных проблем это реализовать (с хранением отметов о фиксах в базе openstreetmap.ru).

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

На самом деле это не является обязательным требованием к валидатору.

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

А в связи с обновлением валидаторов, а завел тему http://forum.openstreetmap.org/viewtopic.php?id=16283 , и тогда можно будет клипать валидаторы с часовым интервалом обновления :slight_smile: но это так, на будущее и те кто хочет работать с симпл схемой

Как раз валидатор следить за фиксами НЕ должен. Его задача простая - пройтись по данным и выплюнуть список ошибок. Следить же за фиксами должен багтрекер.

Мои - в ближайшее время не будут.

По-моему, это совсем не проблема. Насколько я понимаю, openstreetmap.ru как раз и задумывается как то место, гда пользователи должны смотреть на данные валидаторов (универсальное рабочее место пользователя).

И я так и не понял зачем нужен BBOX. Не легче ли раз в сутки (или в указанный интервал работы валидатора) зачитать его данные оптом?

Может так?
Валидатор - средство нахождения ошибок. По обновлению валидатора он дергает осмру и отдает ему файл/линк на файл со всем списком ошибок. Тогда осмру - средство отображения ошибок. Там их можно помечать закрытыми, комментировать и т.д (если надо).

Правда, нагрузка на сайт возрастет значительно…

А я уж думал, дело зашло о средстве обновления для валидаторов - чтоб они с минутными/часовыми диффами работали и были постоянно up-to-date и выдавали диффы ошибок, а не парсили всю страну-планету, например… :slight_smile: Ускорение должно быть значительное, если правильно поставить на поток, ну и запускать их можно будет чаще :wink:
Можно это дело совместить - валидаторы будут дергать на осмру только новые и закрытые баги за свой период обновления, а у ошибок будут статусы:

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

//upd - похоже, про минутные валидаторы - это к соседней теме, точно

Ок, вообщем-то согласен, но нужен этот багтрекер. Пока делаем взаимодействие с валидаторами напрямую, потом скорее всего допишем функции багтрекера на openstreetmap.ru или еще куда. Не все сразу.

Я прекрасно вас понимаю в этом. Думаю, что другие авторы валидаторов тоже не имеют желания добавлять валидатору эти функции.

Лично мое мнение - есть еще пользователи openstreetmap.by и openstreetmap.org. А еще могут появиться пользователи деревни X, которые запили свой сайт и хотят видеть результаты валидации на нем.

Можно ослабить это требование, но сначала стоит бы научить сайт работать с валидаторами напрямую, а потом уже вводить промежуточный слой. Протокол-то от этого по сути не поменяется.

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

Это что за наезд такой, что значит левые???
:stuck_out_tongue:

Такая простая агрегация вряд ли прокатит. Вот универсальный багтрекер было бы клево. Хорошо что понимание этого кажется есть.)


Еще несколько замечаний. :slight_smile:
Подумайте вот над чем. В одном валидаторе может быть несколько тестов, а в каждом тесте несколько типов ошибок. Поэтому было бы разумно, если бы валидатор отдавал описания ошибок тоже, вместе с краткой рекомендацией как ее починить. Как например здесь: http://peirce.gis-lab.info/qa/RU-SPO#errdescr

Что могу предложить лично я.
Есть xml’и с результатами валидации. Находятся здесь:
peirce.gis-lab.info/ADDR_CHK/{код карты по ISO 3166}.mp_addr.xml

Например: http://peirce.gis-lab.info/ADDR_CHK/RU-MOS.mp_addr.xml

Можете брать и использовать как хотите :slight_smile:

  1. Что я могу сделать:
  • вместо xml отдавать json’ы по тестам отдельно (но все равно в разрезе регионов).
  1. Чего я не буду делать:
  • Поддерживать выборки по BBOX
  • Делать багтрекер :slight_smile:

ну значит сначало будем те кто будет по bbox :stuck_out_tongue:

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

Круто, постараюсь в ближайшее время сделать кэширующий конвертер, отвечающий на bbox :slight_smile:

Если что, стучитесь в почту - zkir [гав] zkir.ru)

Уря, аггрегатор валидаторов :slight_smile:

Я согласен с Zkir, что BBOX не очень хорошо. Во-первых в работе это будет странно, отзумил я на область, а потом жду хз сколько, пока каждый из 50 валидаторов отдаст мне свой набор. А если кто-то ещё завис…?
Во-вторых, сами валидаторы станут сложнее, тогда как лучше было бы чтобы сложность была в одном месте, а в валидаторах минимум. Можно даже просто один json на все ошибки делать каждую ночь и дать на него ссылку.
И, в-третьих, если аггрегатор будет их к себе все выкачивать он сможет объединять маркеры на больших зумах и выдаавть “облачка ошибок с циферками”. Тогда на большом зуме будет видна общая загрязнённость, а не надпись “приблизь, а?”.

А ещё по протоколу:

В словарик с типами в “параметрах” можно добавить:

  • how_to_fix – инструкция (html?)
  • who_can_fix – anyone | resident

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

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

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

И в JSON-е с ошибками пропущен ID. Хорошо бы, если бы валидаторы сами генерировали ID для своих ошибок, и обеспечивали постоянство ID для одной и той же ошибки между обновлениями. Лучше них этого никто не сделает.

Update: я понял - description, это описание именно этой ошибки, а не типа! А описание типа похоже в text. Удалил это.