С детства мне более привычно когда меня называют Гошей, поэтому я очень обрадовался, найдя такой одноименный населенный пункт, расположенный в Череповецком районе Вологодской области, почти по дороге в мою семейную деревню, которая тоже находится в Вологодской области.
Разочарован же я был тем, что село “Гоша” недостаточно подробно представлено на карте Openstreetmap — очень приблизительная граница и ни одного нарисованного домика…
Опишу на примере этого географического открытия, как с помощью платформы Mapflow ускорить отрисовку и как загрузить данные в Openstreetmap. Постараюсь обобщить некоторые соображения, чтобы ими можно было руководствоваться при работе с данными проекта Open Urban Mapping — это база автоматических контуров зданий на всю Россию, которую мы выкладываем по приоритетным регионам.
Понадобится
- Аккаунт Mapflow
- Аккаунт Openstreetmap.org
- JOSM — приложение для редактирования и загрузки данных в OSM
Алгоритм поиска и обработки данных
- Предположим что вы, как и я, нашли свой уникальный участок карты, над детализацией которого хотите поработать.
Говорят, у опытных волонтеров картографов есть своя наиболее изученная и отслеживаемая ими территория, где всегда можно найти белые пятна, все дело лишь в размере последних.
NB! Для удобства поиска неохваченных населенных пунктов, в проекте “Open Urban Mapping”, мы посчитали статистику по регионам. Каждый может скопировать и дополнить таблицу статистикой по отдельным населенным пунктам, как это, например, сделано для Чечни.
Важно! Проверяем что на эту территорию есть нормальный снимок Mapbox Satellite (проверить либо в приложении Mapflow, о котором ниже, либо на самом сайте Openstreetmap.org, в режиме редактирования).
Новость! Поскольку компания Mapbox заявила об обновлении снимков — теперь, скорее всего, нормальный снимок появился.
2. Для начала я скачал границу интересующего меня населенного пункта, используя поиск Openstrteetmap.org, чтобы определить ID объекта, и замечательный сервис https://overpass-turbo.eu/, чтобы скачать границу в формате GeoJSON.
way
(45425374);
out;
3. Загружаем границу GeoJSON в Mapflow.ai
Если видим, что граница НП не охватывает какую-то часть действительно населенной территории, обводим новый контур с помощью инструмента рамки.
Шаг 2 можно было бы пропустить, если вы просто воспользуетесь рамкой, но хотелось показать полезный инструмент, которым пользуются для небольших выгрузок из Openstreetmap
4. Для запуска обработки в Mapflow нам понадобится, кроме добавления географической области, выбрать модель обработки (здания) и параметры пост-обработки (классификация), если она нас интересует. В моем примере классификация по типам зданий не несет особой пользы, т.к. все дома — частные, деревенские, кроме нескольких больших ферм (?), а такие типы объектов все равно не определяются алгоритмом.
Еще Mapflow поддерживает обработку зданий с высотами, но, поскольку эта модель требует ввода метаданных и референсных значений, на ее использование выставлен порог минимальной площади (>50 кв.км). Для моей территории с низкоэтажными зданиями, эта модель не нужна.
Запускаем обработку и ждем результатов, чтобы скачать их в формате GeoJSON. ☺️
Импорт в OSM
Устанавливаем JOSM. Нужно сначала установить Java — https://www.java.com/en/download/
Есть инструкция по установке JOSM на разные ОС — https://wiki.openstreetmap.org/wiki/JOSM/Installation
- Запускаем JOSM и загружаем данные из скачанного файла GeoJSON
- Удаляем те теги, которые распарсились из “properties” (in_zkh, class_id и т.д.) — я все-таки забыл отключить классификацию при обработке 😃
Вместо них добавляем теги согласно справочнику https://wiki.openstreetmap.org/wiki/Map_Features — ну или JOSM нам подскажет.
Для этого выделим все объекты ways (обратите внимание, чтобы не присваивать эти же теги объектам nodes)
building=house
source=Mapbox/Geoalert - Смотрим смещение снимка — в моем счастливом случае его нет, и снимок “Mapbox Satellite” совпадал с “Maxar Premium” еще до обновления
- Удаляем false positive — ошибочно предсказанные дома. На своем примере я обнаружил таких три штуки (из 427 домиков).
- Добавляем false negative — пропуски зданий. Такой нашелся только один очевидный.
6. Вспомнил! Ах да, еще же граница населенного пункта. Скажу честно, что границу я отрисовал по Публичной кадастровой карте.
Кстати, данные ПКК может посмотреть каждый, а вот скачать и использовать — только с письменного разрешения, механизм процедуры которого и правовой статус не прояснены.
Признаюсь, что и для отрисовки я использовал инструмент векторизации, но мы к нему прибегаем только в крайнем случае, а это, как вы понимаете, был крайний случай.
7. Все готово, чтобы залить данные в продакшн базу.
Стоп! Важно! Необходимо обратить внимание на то, что сообщает автоматический валидатор. (Я выделял все объекты и, после присвоения тегов, они добавились каждой вершине (“nodes”) в полигонах (ways). Чтобы этого избежать пришлось выделить только “ways” и после этого еще раз присваивать теги)
В OSM считается хорошим тоном давать пояснения к правкам. Пишем: “Validated import of auto generated buildings for the settlement which name spelling is similar to my name. I hope to visit it next summer” 🙂
8. Проверяем что все наши правки попали на карту. Готово. ✅ https://www.openstreetmap.org/changeset/95301607
Продолжение следует!
Для добавления адресов и поиска достоверных ответов на вопросы действительно ли большое отдельно стоящее здание является фермой, сколько молока дают местные коровы и т.д. — понадобится сбор информации на местности. Надеюсь продолжить свой материал летом и совершить картографическую экскурсию в место под названием way[“name”=”Гоша”].
Ссылки
- Описание проекта Open Urban Mapping — Github
- Wiki Openstreetmap eng
- Инструменты для импорта в OSM
- Платформа Mapflow.ai