Сканирование и векторизация старых схем рудников и карт (часть 4* — заключительная)
Часть 2 смотрите в № 4 (30)/декабрь 2015 г.
Часть 3 смотрите в № 1 (31)/март 2016 г.

Введение
Во 2-й части этой статьи мы описывали подготовку и список необходимой информации для создания хорошего скана исходной карты, в части 3 были описаны некоторые способы подготовки и подгонки сканированных изображений, а также создания цифровых линий наилучшего качества с использованием программного обеспечения для векторизации. Результат векторизации карты — сбор исходных цифровых линий, представляющих изображение исходной карты, как показано на рисунке 1 (результат из WinTopo).
В этой части мы дадим описание некоторых методов обработки исходных линий и их очистки, присвоения атрибутов и высотных отметок. Несмотря на то, что фокус статьи будет направлен на Micromine как на целевое программное обеспечение, данный материал будет вам полезен, также если вы используете другое программное обеспечение. Рабочий процесс на основании использования ГИС систем не отличается от описанного.
Рис. 1. Исходная карта (верхняя часть) и результирующее векторное изображение, отображенное в программном обеспечении WinTopo. Окна расположены таким образом, что карта начинается в одном окне, а продолжается в другом.
Я часто обращаюсь к термину «стринги» в данном тексте. Если вы не являетесь пользователем Micromine, просто мысленно заменяйте этот термин словом «полилиния».
Шаги обработки
Обычный процесс от бумаги к цифре включает в себя следующие шаги, данная часть посвящена с 7 по 9 пунктам, выделенным жирным шрифтом:
1. Привести в порядок бумажную карту.
2. Отсканировать.
3. Обрезать.
4. Сделать геопривязку, трансформацию растра или при необходимости спроецировать его.
5. Повысить качество растра и подчистить его.
6. Векторизовать его (оцифровать).
7. Импортировать растр в нужное приложение.
8. Подчистить оцифрованные линии.
9. Объединить, закрыть и присвоить атрибуты линиям, если необходимо присвоить им высотные отметки при работе 3D.
Рабочий процесс — исходные линии в конечный продукт
Шаг 7. Импорт в Micromine (или другое программное обеспечение)
Импорт векторных линий в файл стрингов Micromine осуществляется через Файл / Импорт / Векторные данные (CAD|GIS|GPS). Если вы не использовали продвинутых опций векторизации, не стоит беспокоиться об атрибутах и высотных отметках. Если ваш векторизатор создал атрибуты, используйте опцию Импортировать атрибуты.
В программе QGIS просто загрузите сохраненные векторные данные.
Шаг 8. Очистите линии в Micromine
Теперь начинается тяжелая работа, тем не менее некоторые из ее шагов возможно автоматизировать. Начните с отображения импортированных данных через Форму Визекс Стринги (Визекс — среда визуализации Micromine), а затем избавьтесь от очень коротких линий (текст и деформированные пересечения линий), а также очень длинных линий (границы и линии сетки).
Отметить для удаления
Несмотря на то, что хочется просто выбрать и удалить ненужные линии, существует реальный риск удаления чего-нибудь нужного (спросите меня, откуда я это знаю). Более безопасный способ очистки карты — отметить линии для удаления. Этот способ хорош тем, что вы можете отменить выделение в любое время.
Это легко сделать в Micromine: просто создайте новое поле атрибутов с названием ДЛЯ УДАЛЕНИЯ, выберете линии, которые необходимо удалить, укажите значение, например «1» в поле ДЛЯ УДАЛЕНИЯ в окне Свойства, как показано на рисунке 2. Вы можете сразу увидеть результат вашего действия, применив набор цветов к слою стрингов по этому полю. Я использую яркий цвет для линий, которые я хочу сохранить (ДЛЯ УДАЛЕНИЯ = пустота) и затемняю или использую нулевой цвет для линий на удаление (ДЛЯ УДАЛЕНИЯ = 1).
Рис. 2. Использование окна Свойства для кодировки выделенных стрингов на удаление
Чтобы отменить выделение отмеченного стринга, просто выберете его и удалите «1» в окне Свойства.
Проще снять выделение с 50 хороших стрингов, чем вручную выделять 1000 плохих.
Чтобы отметить короткие стринги, используйте Выбор по условию, чтобы выбрать те стринги, длина которых меньше или равна некоторому значению, которое вы определите экспериментально. По правде, ваше цель — выбрать и отметить все маленькие стринги, учитывая, что вы все равно прихватите некоторое количество нужных линий. Но на много проще отменить выделение 50 хороших стрингов, чем вручную выделять 1000 ненужных (самая короткая разумная длина — 1,5 от размера пикселя, что примерно равно диагональному разрешению одного пикселя). Последовательность этого процесса показана на рисунках 3–3.4.
Рис. 3. Выделение стрингов для удаления. Исходная карта
Вы можете также попробовать выделение на основании длины вдоль стринга, но так как они большие, проще использовать прямоугольник выбора или клик левой клавишей мыши.
Чтобы выбрать множественные объекты в Micromine, просто нажмите на первый, а затем Ctrl+клик на другие. Так как Ctrl+клик делает выборку, данное сочетание можно также использовать для отмены выборки.
Рис. 3.1. Выделение стрингов для удаления. (Исходные векторизованные линии, отображенные в Micromine. Обратите внимание, что здесь включена штриховка из исходного зеленого полигона наряду с буквами географических названий. Линии также включают в себя ненужные дороги, маршруты, схему дренажной сети. (Некоторый текст и темная штриховка были исключены из изображения до процесса векторизации)
Для сложной выборки — например, чтобы отметить множество маленьких стрингов в одной области, иногда проще использовать прямоугольник выборки, чтобы выбрать все в этой области, а затем нажмите Ctrl+клик, чтобы отменить выборку для тех стрингов, которые вы хотите сохранить.
Чтобы сделать выборку прямоугольником по наклонным линиям, используйте Инструмент Вращения (или используйте скролл — колесико мыши), а затем перетащите курсор, удерживая клавишу Z. Это заблокирует вращение вдоль оси Z, что позволяет вам вращать вид до того, как все линии попадут в обзор экрана. А затем используйте прямоугольник выбора.
Рис. 3.2. Выделение стрингов для удаления. (Выборка на основании длины тех стрингов, длина которых меньше или равна 450 м. (Размер пикселя изображения 25 м). Обратите внимание на то, как выборка включает все линии штриховки и букв, а также пересечения и нежелательные линии дренажной сети и маршрутов. К несчастью, она также включает некоторые геологические линии)
Этот шаг очистки обычно занимает наибольшее количество времени, поэтому важно сделать его правильно. Заканчивайте выделение стрингов до того, как вы сделаете что-либо еще, не беспокойтесь, если вы пропустите зазоры при выделении коротких сегментов, они все исчезнут, когда вы соедините стринги.
Чтобы добавить поле ДЛЯ УДАЛЕНИЯ в QGIS, откройте таблицу атрибутов и используйте кнопку Новая колонка, чтобы добавить поле целых чисел с шириной 1.
Рис. 3.3. Выделение стрингов для удаления. (Результат выделения стрингов для удаления, которые здесь отображены светло-серым цветом. Неотмеченные стринги отображены черным. Проще увидеть короткие геологические линии, которые не должны быть выделены на фоне выделенных линий маршрутов и линий дренажной системы)
Вы делаете выборку на основании длины в QGIS с кнопкой Выбрать опции, используя выражение на панели инструментов Атрибутов (или напрямую в пределах таблицы атрибутов), при помощи встроенного атрибута $length в группе Геометрия. Вы можете затем обновить выбранные опции в пределах таблицы атрибутов.
Сохранить невыделенные стринги
Для безопасности лучше хранить отмеченный файл как перманентную запись исходных векторов, поэтому вы не должны физически удалять отмеченные стринги. Вместо этого используйте Выбор по условию, чтобы выбрать все, что не отмечено (т. е. ДЛЯ УДАЛЕНИЯ = пустое), тогда используйте нажатие правой клавиши мыши и выберете Выбор | Сохранить стринги как (или Скопируйте стринги в активный слой) из выпадающего меню (рис. 4). Micromine создаст новый файл или слой, содержащий только не отмеченные стринги.
Чтобы сохранить неотмеченные полилинии в QGIS, создайте выборку (т. е., «ДЛЯ УДАЛЕНИЯ» НЕ 1), а затем нажмите правой клавишей мыши на слой и выберете Сохранить как. Будьте уверены, что используется опция Сохранить только выбранные опции до сохранения файла.
Рис. 3.4. Выделение стрингов для удаления. (Несколько минут ручной работы по выделению и снятию выделения со стрингов дают этот результат. Все нежелательные стринги выделены для удаления, а все геологические стринги без выделения готовы к следующему шагу. Маленькие промежутки исчезнут, как только соедините стринги)
Шаг 9. Соединить, отметить и заполнить атрибутами стринги
Чтобы соединить отдельные стринги в один длинный стринг в Micromine , используйте Ctrl+клик для отдельных стрингов в порядке их объединения, а затем нажмите правой клавишей мыши / Соединить стринги. Соединение множества стрингов будет проще в Micromine 2016, так как вы можете просто использовать прямоугольник выбора, а затем инструмент Объединить стринги. Micromine 2016 автоматически определяет порядок соединения. Мы планируем выход этой версии в скором времени.
В этом шаге вам также возможно придется разделять стринги. Это обычно происходит, когда изменяется значение атрибута для части одного стринга., например когда уровень штрека понижается без отрыва в боковых стенках. Просто используйте кнопку Разделить стринг на панели инструментов Редактирование стрингов, чтобы разделить стринг на переходе от наклона. Вы также можете отдельно отметить и добавить атрибут для каждого стринга.
Рис. 4. Сохранение неотмеченных стрингов
На рисунке 5 горизонтальные выработки нарисованы коричневым цветом, а наклонные выработки — зеленым. Хоть нет причины разделять стринги на пересечении стрингов ствола/штрека, важно, чтобы они имели соответсвующие атрибуты. Тогда они будут иметь разный цвет.
Я думаю, что самый простой способ присвоить атрибуты стрингам — сделать это после того, как вы соедините их или разделите. Способ, который можно использовать на существующих значениях атрибутов — отслеживать стринги, которые были обработаны и которые нет.
Как только вы закончили объединение стрингов, используйте Ограничения по стрингу и присваивайте атрибуты. Чтобы сделать это, выберете все стринги, нажмите на них правой клавишей мыши, выберете Ограничение по стрингу. По меньшей мере вы должны удалить дублирующиеся точки и повторно очерченные линии, но также вы можете поэкспериментировать с установкой минимального расстояния (равного примерно одному пикселю). Вы можете также поэкспериментировать с упрощением и сглаживанием стринга.
Рис. 5. Подземные горные выработки, раскрашенные по типу
Если вы выполняете эти шаги в QGIS, то вам сначала необходимо преобразовать множественные отдельные сегменты в один объект, иначе у вас возникнет проблема удаления отдельных кусочков. Вы можете сделать это через Вектор / Геометрические инструменты / Многосоставные объекты в единичный.
В QGIS для объединения полилиний вы используйте модуль Объединение множественных линий, а для разделения их в любом месте — кнопка Разделить объект на панели инструментов Расширенная оцифровка. К сожалению, я не смог найти простой способ разделения линий на существующих вершинах. Это одна из тех задач, которые проще выполнить в нетопологическом редакторе, например, Micromine, чем в ограниченных инструментах редакторов типичных ГИС.
Следующие шаги?
Перевод бумажных планов в цифровые линии — одна часть истории. Цифровые линии должны быть в 3D и преобразованы в триангуляционные солиды (каркасы), как показано на рисунке 6, до того, как они могут быть использованы в эксплоразведке или горном планировании. Этот процесс имеет множество ловушек, например то как вы будете присваивать высотные отметки спиралевидному спуску без скручивания подошвы между линиями боковых стенок. Все это будет описано уже в другой статье.
Вывод
Векторизаторы не всегда дают чистые данные, даже с чистого изображения, и в общем случае они не понимают значения каждой полилинии или перехода от одной линии к другой. Эти ограничения означают, что результирующие линии нуждаются в присвоении атрибутов, а также в редактировании, чтобы мы могли их использовать. Эта последняя часть статьи посвящена очистке линий, присвоении атрибутов (выборочно присвоении высотных отметок, например, в Micromine).
Последние мысли
Несмотря на то, что горная индустрия все больше и больше погружается в цифровые технологии, существует огромное число рудников, хранящих огромное количество архивов с не оцифрованными данными. Преобразование бумажных карт в цифру и желательно 3D формат может быть пугающей идеей, но эту информацию важно передать современным технологиям.
Рис. 6. Перевод бумажной карты в 3D данные. Все на этом рисунке, включая скважины, было оцифровано по бумажной карте, отображенной ниже трехмерных солидов
Привязанные и очищенные изображения с современных сканнеров большого формата почти исключили необходимость традиционных планшетов для оцифровки. Сегодня проблема оцифровки устаревших данных не так велика, когда отсканированные карты очищены для удаления искажений, а также в них уменьшены дефекты и подчеркнуты важные детали, а после для них использовался автоматический векоризатор, который преобразовал все линии в цифровые. Оцифровка большого архива бумажных карт до сих пор очень трудозатратный процесс, но он никогда не был проще, чем сегодня.
Благодарности
Я благодарен сотрудникам Klondike Silver Corporation за предоставление исторических данных по выработкам. Этот рабочий процесс был разработан с использованием этих данных и был также протестирован на геологических данных.
Опубликовано в журнале «Золото и технологии», № 2 (32)/июнь 2016 г.