Городское картирование — пост-обработка результатов

В работе картографа есть масса инструментов, которые помогают ускорить процесс. Такие инструменты встроены в ГИС — рисование геометрических примитивов (точка, полигон и т.д.), валидация и процессинг данных с помощью таких алгоритмов как симплификация, сглаживание контуров, примагничивание (как лучше перевести snapping? :) и т.д.

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

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

После постобработки с примененим алгоритмов полигонизации — визуальный результат уже намного лучше.

До и после обработки с полигонизацией контуров

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

Вот некоторые примеры алгоритмов валидации, применяемых на этапах пост-обработки данных:

Есть и менее очевидные правила, которые можно применять в цепочке обработки:

Все эти шаги в настоящее время управляются на уровне платформы Geoalert с помощью длинной простыни настроек, как-то так:

    -   _step: FilterSmallObjects
input: buildings
min_area: 30.0
output: buildings_filtered
- _step: RemoveSmallHoles
input: buildings_filtered
min_hole_area: 50.0
output: buildings_filtered_fixed
- _step: LoadOSMBuildings
input: buildings_filtered_fixed
output: osm
- _step: MergeByReplace
input: buildings_filtered_fixed_with_osm
min_iou: 0.8

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

Выравнивание зданий вдоль дорог

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

Безусловно, это неидеальный алгоритм, который также может добавлять ошибки поворота, а не только устранять их. Применение таких алгоритмов это всегда поиск баланса. На тестовых участках мы оценили его работу как в среднем уменьшающую ошибку поворота (~ c 5.3 градусов до 1.8). Пока что мы тестировали на прямоугольных формах зданий, однако сам алгоритм уже работает и для зданий Г-образной формы (на английском мы назвали такие здания L-shape buildings). А значит количество работы картографов по валидации и исправлению контуров еще уменьшится.

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

--

--

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
GeoAlert

We apply Machine learning to automated analysis over Earth observation data