OpenStreetMap

Некоторое время назад я начал описывать свой процесс сбора и ввода данных о POI. Само описание ещё далеко от завершения, хотя часть продолжения уже давно написана, но не опубликована. Там ещё много чего надо отредактировать, потом я решил написать другую запись покороче, но она получилась втрое длиннее последней записи про POI, и теперь я не знаю, когда доделаю и её. Сейчас я напишу кое-что на самом деле покороче.

Как и его описание, сам процесс обновления POI идёт с тормозами. Одна из очевидных причин этого — его двухэтапность.1 Сначала я иду на место и собираю там информацию о POI. Потом я иду за комп и ввожу собранную информацию. Это «потом» может наступить весьма потом или не наступить вовсе. Последнее происходит, когда данные достаточно устаревают из-за длительного срока с момента сбора или каких-либо существенных событий. Например, сейчас мне придётся выбросить данные, собранные осенью 2020 года. Летом того же года мне пришлось выбросить всё собранное до коронавируса.

Конечно, есть средства, позволяющие минимизировать количество возможных конфликтов от ввода старых данных, но сейчас я собираюсь написать не о них, так что вернёмся к двухэтапности. Двухэтапность это, вроде бы, плохо. Если бы я сразу вводил выясняемую на месте информацию, процесс шёл бы быстрее и с меньшим количеством потерь. И у нас же есть средства для ввода POI сразу, например, плагин редактирования в OsmAnd. Почему я им не пользуюсь?

Полунаписанная запись про особенности редактирования из OsmAnd у меня тоже есть в черновиках. Аналогичная ей про MAPS.ME уже давно написана. В ней в основном говорится о чужих правках, которые нам могут попасться, как они объясняются и что с ними делать. Сейчас же мы посмотрим на редактирование из OsmAnd с другой стороны — с сугубо практической для нас, на конкретном примере.

Конкретный пример

Пройдём по 9-й линии Васильевского острова с только что обновлённой через OsmAnd Live картой. В первом же доме, в котором есть типичные POI, мы обнаружим различия между картой и реальностью. Различия заключаются в трёх точках между южным краем дома 2/11 и аркой. Там есть три входа, за которыми находятся следующие заведения:

  • кафе «O’Yes»,
  • винный магазин «Vinissimo»,
  • ресторан «Panda», на данный момент закрытый.

кафе «O'Yes» винный магазин «Vinissimo» ресторан «Panda»

Наблюдаемое в реальности

На карте в OsmAnd в том же месте наблюдается следующее:

  • автошкола «Светофор»,
  • note=«выглядит запущенно»,
  • строительная компания «Петротрест».

скриншот рассматриваемого места в OsmAnd

Наблюдаемое на карте

Как бы вы стали с помощью OsmAnd обновлять POI в этом месте? Ситуация тут ещё относительно простая: три точки было, три точки есть. Значит, и решение, казалось бы простое: заменить автошколу на кафе, note на вино, строителей на закрытый ресторан. Последнюю замену допустят только те, кто признаёт возможность обозначения неработающих заведений. Предположим, что мы такую возможность признаём.

Самой очевидной выглядит замена note. Обратим внимание, что это именно тег note на осмовском элементе, а не отдельная заметка. Отображение тегов note нам надо было предварительно включить, иначе они никак не будут видны. Включается оно через меню Configure map > Map rendering > Details > OSM mapper assistant. Отображение мы включили, теперь отредактируем соответствующий элемент. Обычно это делается нажатием на значок элемента и выбором из меню Actions > Modify POI, доступным со включённым плагином редактирования. Тут мы обнаружим, что для note в Actions пункта Modify POI нет, так что наш исходный план по замене трёх точек уже не удался.

Хотя почему не удался? Мы не смогли заменить note редактированием элемента, а кто сказал, что мы собирались делать замены редактированием? Может быть, нам плевать на сохранение истории точек, или мы не признаём в таких случаях её преемственность. А может быть, мы всё это признаём, но считаем, что важнее иметь актуальные данные, и если инструмент редактирования не позволяет редактировать правильно, то лучше редактировать как возможно, чем не редактировать никак. То есть, мы можем решить просто удалить старые точки и создать новые. В случае с note это нам всё равно сделать не удастся, пункта «удалить» в меню мы тоже не найдём. Остальные две точки можно как редактировать, так и удалять, так что для них разницы в осуществимости правки не будет.

Тут нам стоило бы задуматься, на каком элементе поставлен тег note. Мы ничего про него не знаем, так как OsmAnd нам ничего кроме значения тега не показывает. Мы даже не знаем, что это точка, а не другой тип элемента, собственно поэтому мы иногда и называли его «элементом», а не «точкой». А ведь примечание написано про какой-то определённый объект, который «выглядит запущенно». Наверняка на элементе есть ещё теги, из которых стало бы ясно, о каком объекте идёт речь. Жаль, что OsmAnd нам их не покажет. Может быть это точка обнаруженного нами закрытого ресторана?2 Так мы можем начать сомневаться в соответствии обозначенных на карте и обнаруженных в реальности объектов.

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

Ясно, что каждый раз оставляя старые точки, мы будем делать ситуацию всё более запутанной. Сейчас мы не знаем, что делать с тремя точками. Потом мы тем более не будем знать, что делать с шестью. От неактуальных данных надо избавляться, но делать это с мобильника на ходу проблематично. Нам стоило бы посмотреть на старые фотографии места, чтобы возможно обнаружить там старые POI, проверить их контактные данные и так далее. В принципе мы могли бы этим заняться, но так вся операция обновления данных может занять у нас ещё больше времени, чем двухэтапный ввод со вторым этапом за компом с клавиатурой, мышью и нормальным интернетом. И уж конечно мы не сможем так идти вдоль улицы и фиксировать все POI подряд. Нам пришлось бы торчать рядом с каждым заведением неопределённое время, проверяя информацию о его предшественнике.

Некоторые выводы

Нам может попасться и более сложная ситуация, когда точек POI на определённом участке гораздо больше, когда нет уверенности, где именно они находятся, когда мы даже не знаем, все ли они отображаются в приложении. Получается, что воспользоваться OsmAnd’ом для ввода POI не так и просто, если POI в интересующем нас месте уже вводились. Не будь в нашем примере уже трёх поставленных точек, мы бы без проблем добавили три новые, ну или две, без закрытого ресторана. Но точки есть, и помимо добавления POI надо делать что-то и с уже имеющимися обозначениями.

Можно сделать и более общее наблюдение: часто подходы к редактированию осмовских данных описываются так, как будто бы на интересующем нас месте никаких данных ещё нет. Но часто они уже есть, и в общем случае помимо добавления новых данных надо что-то делать со старыми, и желательно их не ломать. На это «не ломать» используемые подходы к редактированию рассчитаны далеко не всегда.

Примечания

  1. В посте по ссылке, правда, автор отказывается не только от двухэтапного ввода данных, но и от их ввода в осм вообще. Одна из причин такого решения (добавлять просто, а поддерживать — нет) обнаружится и у нас. Но также там приводятся и не слишком убедительные причины. Например, споры про теги будут только по ряду заметных сетей заведений, которые подвернутся участникам, любящим массовые правки. 

  2. На самом деле это точка, но не ресторана. Является ли элемент точкой для OsmAnd имеет значение при попытке его удаления. 

Discussion

Comment from literan on 19 March 2021 at 12:16

Спасибо за статью, близкая мне тема.

Я пытался редактировать POI на ходу, но, учитывая описанные проблемы (а также холод на улице большую часть года, не располагающий к длительному тыканию в телефон), делаю это исключительно в два этапа. В ходе прогулок только уточняю теги существующих поек через Стриткомплит.

Comment from Anton Khorev on 20 March 2021 at 02:27

Из Османда тоже можно уточнять теги существующих пои типа режима работы. На знакомом месте или на незнакомом, но пустом не будет проблем с выяснением соответствия старых и новых пои, а значит, можно также добавлять пои. Но уверенности, что место свободно от пои, у нас не будет, потому что Османд может просто не отрендерить имеющуюся точку. Не отрендерит он amenity с неизвестным ему значением. Хотя, например, офисы с неизвестным значением заставить рендерить можно той же опцией OSM mapper assistant.

Log in to leave a comment