Гоша, он же Жора… он же way[“name”=”Гоша”]

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

Село на карте Mapbox, стиль Mapbox Street — обновляется с задержкой, и мои правки, о которых пойдет речь ниже в посте, еще не отрисовались

Разочарован же я был тем, что село “Гоша” недостаточно подробно представлено на карте Openstreetmap — очень приблизительная граница и ни одного нарисованного домика…

Кадр из советского фильма “Москва слезам не верит”

Опишу на примере этого географического открытия, как с помощью платформы Mapflow ускорить отрисовку и как загрузить данные в Openstreetmap. Постараюсь обобщить некоторые соображения, чтобы ими можно было руководствоваться при работе с данными проекта Open Urban Mapping — это база автоматических контуров зданий на всю Россию, которую мы выкладываем по приоритетным регионам.

Понадобится

  • Аккаунт Mapflow
  • Аккаунт Openstreetmap.org
  • JOSM — приложение для редактирования и загрузки данных в OSM

Алгоритм поиска и обработки данных

  1. Предположим что вы, как и я, нашли свой уникальный участок карты, над детализацией которого хотите поработать.
    Говорят, у опытных волонтеров картографов есть своя наиболее изученная и отслеживаемая ими территория, где всегда можно найти белые пятна, все дело лишь в размере последних.

2. Для начала я скачал границу интересующего меня населенного пункта, используя поиск Openstrteetmap.org, чтобы определить ID объекта, и замечательный сервис https://overpass-turbo.eu/, чтобы скачать границу в формате GeoJSON.

way
(45425374);
out;
overpass-turbo.eu (Export — GeoJSON)

3. Загружаем границу GeoJSON в Mapflow.ai
Если видим, что граница НП не охватывает какую-то часть действительно населенной территории, обводим новый контур с помощью инструмента рамки.

Загрузка территории обработки в Mapflow

4. Для запуска обработки в Mapflow нам понадобится, кроме добавления географической области, выбрать модель обработки (здания) и параметры пост-обработки (классификация), если она нас интересует. В моем примере классификация по типам зданий не несет особой пользы, т.к. все дома — частные, деревенские, кроме нескольких больших ферм (?), а такие типы объектов все равно не определяются алгоритмом.

Выбор параметров и запуск обработки

Запускаем обработку и ждем результатов, чтобы скачать их в формате GeoJSON. ☺️

Импорт в OSM

Устанавливаем JOSM. Нужно сначала установить Java — https://www.java.com/en/download/

Есть инструкция по установке JOSM на разные ОС — https://wiki.openstreetmap.org/wiki/JOSM/Installation

  1. Запускаем JOSM и загружаем данные из скачанного файла GeoJSON
  2. Удаляем те теги, которые распарсились из “properties” (in_zkh, class_id и т.д.) — я все-таки забыл отключить классификацию при обработке 😃
    Вместо них добавляем теги согласно справочнику https://wiki.openstreetmap.org/wiki/Map_Features — ну или JOSM нам подскажет.
    Для этого выделим все объекты ways (обратите внимание, чтобы не присваивать эти же теги объектам nodes)
    building=house
    source=Mapbox/Geoalert
  3. Смотрим смещение снимка — в моем счастливом случае его нет, и снимок “Mapbox Satellite” совпадал с “Maxar Premium” еще до обновления
  4. Удаляем false positive — ошибочно предсказанные дома. На своем примере я обнаружил таких три штуки (из 427 домиков).
  5. Добавляем false negative — пропуски зданий. Такой нашелся только один очевидный.
Редактирование данных в JOSM — удаление ложных контуров

6. Вспомнил! Ах да, еще же граница населенного пункта. Скажу честно, что границу я отрисовал по Публичной кадастровой карте.

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

7. Все готово, чтобы залить данные в продакшн базу.
Стоп! Важно! Необходимо обратить внимание на то, что сообщает автоматический валидатор. (Я выделял все объекты и, после присвоения тегов, они добавились каждой вершине (“nodes”) в полигонах (ways). Чтобы этого избежать пришлось выделить только “ways” и после этого еще раз присваивать теги)

8. Проверяем что все наши правки попали на карту. Готово. ✅ https://www.openstreetmap.org/changeset/95301607

Правки на карте Openstreetmap.org

Продолжение следует!
Для добавления адресов и поиска достоверных ответов на вопросы действительно ли большое отдельно стоящее здание является фермой, сколько молока дают местные коровы и т.д. — понадобится сбор информации на местности. Надеюсь продолжить свой материал летом и совершить картографическую экскурсию в место под названием way[“name”=”Гоша”].

Ссылки

We apply Machine learning to automated analysis over Earth observation data

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store