Новая Easy Trace Pro 9.6.2170 (часть 2)

Обсуждение бесплатной версии EasyTrace
Ответить
Григорий Степанов
Easy Trace – эксперт
Сообщения: 329
Зарегистрирован: 03 сен 2009, 11:13
Репутация: 64
Откуда: Россия, г.Рязань
Контактная информация:

Новая Easy Trace Pro 9.6.2170 (часть 2)

Сообщение Григорий Степанов » 25 окт 2013, 10:26

Оцифровка полигональных покрытий
Утилита Фильтрация связного мусора (NEW!)


Типичный цикл АВТОМАТИЗИРОВАННОЙ векторизации (не будем говорить об "автоматической" векторизации - она применима только к очень узкому классу задач) состоит из ряда операций:

• выделение, чистка и, возможно, оскелечивание тематического растра;
• векторизация растра, чистка, сшивка и доводка векторных элементов;
• сборка, правка формы, классификация и атрибутирование векторных объектов.

При таком подходе к векторизации, на нагруженных материалах до 90% времени обычно занимает отделение "зёрен от плевел". Т. е. удаление "векторного" мусора, неизбежно возникающего после векторизации растра. Для скептиков сразу заметим: удаление мусора и доводка результатов В РАЗЫ БЫСТРЕЕ последовательной и аккуратной прокладки отдельных линий по растру любым известным нам способом.

Наиболее муторная ситуация с удалением "мусора" складывается при обработке материалов ручного исполнения.
Например таких, как почвенные карты (ещё один наш недавний проект). Это очень толстые линии, обилие рукописного текста и условных знаков и, в довершение всего, раскраска карты цветными карандашами.

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

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

Для работы с подобными растрами и была написана эта утилита. Это почвенные карты, используемые для уточнения кадастровой стоимости земель сельхозугодий. Здесь показан исходный и выделенный из него толстый "чёрный" растр. Для выделения границ участков использовалась довольно длинная связка команд под управлением Комбинированного растрового инструмента. "Вытаскивание" границ, закрашенных тёмно-коричневым цветом выполнялось в этой связке утилитой Локальное повышение контраста.

Изображение
Изображение
Изображение

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

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

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

Изображение


Трассировщик по вектору (доработка)

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

Здесь речь вовсе не об обычных разрывах в линиях - такие преграды трассировщик умеет преодолевать от рождения. Тут ситуация несколько сложнее и требует пояснений. "Грязные" растры, в которых цвет линий мало отличается от фона, требуют особой обработки. Это могут быть полустёртые карандашные линии, малоразличимые на грязном фоне изношенной "пятисотки", или линии границ на "карте-раскраске" как в примере растра, приведённом выше. В таких случаях обязательно используется сочетание двух растровых операций - Размытие и Усиление резкости (Unsharp). Первая операция позволяет "собрать" следы линии в одно целое, вторая - отделить линию от окружающего фона.

И здесь очень важен параметр Радиус маски в операции Усиление резкости. Именно он отвечает на вопрос: "а что, собственно, будем усиливать?". Т.е. значение этого параметра однозначно "завязано" на толщину выделяемых линий. Так вот, в местах пересечений и примыканий линий их "толщина" увеличивается в разы. Ну а далее срабатывает "закон подлости" - утолщение в месте примыканий линий расценивается как фон (всё тёмное, в пределах радиуса маски перепадов яркости нет!), усиление резкости не срабатывает, и в итоге одна из линий, входящих в это примыкание (обычно самая "слабая" и тонкая), "отваливается".

Особенно эффективно "вытаскивает" линии, от которых остались одни следы, утилита Локальное усиление контраста. Но за всё приходится платить - в этом случае слабые примыкающие линии "отваливаются" заметно чаще. Обычно, "отвалившиеся" линии легко возвращаются на место с помощью операции Дотянуть концы линий утилиты Коррекция топология. Вот только на перегруженных растрах к таким линиям обязательно приклеится мусор, оставшийся от текста или топографических символов, собственно поэтому здесь и стоит использовать трассировку по вектору.

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

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


Утилита Распознавание точечных символов (доработка)

Ещё одна доработка позволила кардинально разгрузить растры почвенных карт от изобилия текста и топографических символов. Изначально, эта утилита предназначалась для распознавания и точной локализации точки вставки топографических символов. Причём распознаваемые символы могут быть повёрнуты, отличаться по размерам и состоять из нескольких, не связанных друг с другом элементов. В нашем случае, распознавание символов не требовалось (они кодировались атрибутами почвенных полигонов), а вот способность утилиты стирать с растра распознанные объекты пришлась очень кстати.

Был увеличен максимальный размер распознаваемых символов, точность распознавания и интерфейса указания образцов распознаваемых/удаляемых объектов. Это позволило избавиться не только от множества топосимволов, но и от изобилия длинных штрихов пунктира, изображавшего грунтовые дороги. Естественно, что они были того же цвета, что и границы полигонов и пересекали их совершенно произвольным образом.

В результате, за 7-10 минут удавалось очистить растр от нескольких десятков тысяч "мусорных" объектов. Это время уходило на указание образцов удаляемых объектов (все карты рисовались разными людьми, и общий в них был только смысл).

Указываемые образцы масок теперь связываются не с текущим векторным слоем, а с произвольным - заданным в строке таблицы распознаваемых образцов. Т. е. достаточно оставить поле Слой в строке этой таблицы пустым, и все найденные объекты будут распознаваться "в никуда", т. е. просто стираться с растра.

Изображение


Комбинированная обработка растра (NEW!)

Если ваш компьютер не полный "тормоз" (а ещё лучше, если в нём установлена современная графическая карта на процессоре от NVIDIA), то вам доступна возможность сразу оценить результат применения целой последовательности операций к исходному растру. Даже такая простая, базовая последовательность операций как Размытие - Усиление контраста - Конвертация в монохромный растр, вызывает у слушателей наших курсов непременное желание узнать некие секретные значение параметров операций, подходящие на все случаи жизни. А их-то как раз и нет!!!

Есть ряд довольно простых правил подбора этих параметров. И все они завязаны на разрешение растра, его текущее состояние, алгоритм и степень сжатия, которыми растр был упакован, плотность представленной на растре информации, оттенки цветов, которые надо отделить друг от друга и ещё Бог весть на что! А правила действительно просты - выделенные линии не должны рваться, слипаться и, по возможности, разделяться на отдельные растры по цветам. Всё.

Вот только как объяснить, до какой степени мутности растр должен быть размыт, чтобы после усилении резкости каверны на линиях "схлопнулись", "шипы" исчезли, "грязь" на фоне не "всплыла", а тонкие и слабые линии не исчезли? Особенно, если не знаешь этого сам? Ведь, как правило, приходится делать несколько пробных попыток, прежде чем добьёшься приличного результата. Особенно на наших картах.

Но оно того стоит. Ведь разница во времени оцифровки хорошо и плохо выделенного растра это РАЗЫ, а не проценты. Так что игра стоит свеч!

И вот теперь всё стало до смешного просто. Подобрать оптимальные параметры можно классическим методом "научного тыка". Берёте типовую стратегию прямо из утилиты или составляете набор операций, посмотрев один из видеоуроков или пост на нашем форуме, и смело подбираете параметры. Как? А по конечному результату! Ведь теперь его можно увидеть сразу!!!

Всего после нескольких попыток вы сами почувствуете, к чему ведут изменения тех или иных параметров в каждой из операций. На первых порах стоит попробовать погонять движки инструментов от упора до упора - так легче понять, на что они влияют (но всё же стоит учиться на копиях базовых стратегий - просто измените их имя и нажмите кнопку Save).

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

Изображение


Оцифровка рельефа
Утилита Обработка сгущений горизонталей (NEW!)


С таким количества ошибок и брошенных горизонталей в местах их сгущений, как на зарубежных "генштабовках" 1:50000, мы раньше не сталкивались. В общем и целом, это смахивает на халтуру: "А кому они нужны, эти зарубежные территории? Мы больше на танках за границу не ездим!". Но так или иначе, против ТЗ не попрёшь, и если велено горизонтали доводить - то так тому и быть.

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

Принцип работы утилиты основан на отслеживании коридоров, образованных утолщёнными горизонталями. Дополнительно используются линейные объекты и границы площадных элементов рельефа, которые, как и рамка листа, могут прерывать горизонтали.

Изображение


Утилита Восстановление толщины линий (NEW!)

В пару к предыдущей утилите, неплохо подходит новая утилита Восстановление толщины линий. Для дотягивания брошенных основных линий нужны коридоры, образованные утолщёнными горизонталями. А для их автоматического отделения от основных горизонталей после векторизации стоит снова обратиться к исходному растру.

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

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

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

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

Изображение

После нажатия клавиши Применить линиям, попавшим в заданные диапазоны, присваивается значение толщины. Оно записывается в специальный атрибут полилиний $Толщина (аналогичный атрибуту $Z собственной высоты любой из полилиний). Записываемые значения - это средние значения толщины в каждом из интервалов. Линии, толщина которых не вошла в заданные интервалы, сохраняют значение атрибута $Толщина равное нулю.

Далее линии с различной толщиной можно разделить по слоям или выбрать группы линий и присвоить им классические атрибуты типа горизонтали. Это можно сделать, используя окно Просмотр атрибутов, или окно Выбор объектов по критерию инструмента Групповой редактор.

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

И ещё. Если исходный растр был плох и тематический слой рельефа выделялся с помощью серии из пар операций Размытие + Усилений резкости, то итоговая толщина линий выравнивается и начинает зависеть от радиуса маски инструмента Усиление резкости. А нам случалось строить цепочки обработки растров, содержащие 3 пары таких операций.


Утилита Присвоение высот 3D-линиям (NEW!)

Утилита вычисляет высоты вершин 3D-полилиний (промоин, линий рек и т.д.) на основе значений высот пересекаемых линией горизонталей рельефа. Те 3D-полилинии, которые не пересекают ни одной горизонтали, помечаются. Пометка ошибки - отрезок, соединяющий начало и конец линии, такой же, как и в других утилитах простановки/проверки высот.

Изображение


Оцифровка "пятисоток"
Утилита Преобразование классификатора (NEW!)


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

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

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

По счастью, всё оказалось не так страшно. Классификаторы, конечно, имели разную структуру и разные атрибутивные характеристики объектов, но главное, что не требовалось выполнять дополнительных "украшательств" в виде так называемых служебных (косметических) объектов и прочих стрелочек, черточек, крестиков и ноликов.

Предстояло выполнить две операции:

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

Естественно, что все эти задачи должны решаться одновременно, непосредственно в процессе конвертации. "Развалив"

данные наполовину, собрать их в другом формате уже не получится. Это примерно как двумя половинными прыжками попробовать перепрыгнуть через пропасть.

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

Конечный формат конвертируемых данных можно задать через проект-прототип ET. Конечно, если он у вас есть. В этом случае в новом проекте мы получим настроенные согласно прототипу отображение, правила контроля топологии и все необходимые стратегии утилит и инструментов. Кроме того, при использовании прототипа можно более точно определить формат и тип атрибутивных полей. Без прототипа эти параметры программа пытается вывести самостоятельно.

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

Примеры проектов до преобразования классификатора и после, а так же таблицу в формате Exсel с правилами и файл с ее описанием см. здесь >>

Изображение


Утилита Проверка и коррекция коммуникаций М 1:500 (NEW!)

Корректная оцифровка сетей коммуникаций предполагает однозначное распределение точечных объектов-колодцев по слоям в зависимости от связанных с ними линий коммуникаций. На глаз, даже опираясь на атрибутивные данные, проверить однозначность такого соответствия довольно сложно. Да и сам процесс определения слоевой принадлежности очередного колодца достаточно муторный и не застрахован от ошибок. Кто видел истёртые и многократно перерисованные "пятисотки", спорить с этим не станет. А изображения трубопроводов водоснабжения, прямо связанных с канализацией - притча во языцех. Впрочем, последнее уже встречается и в реальной жизни.

С другой стороны, проверить корректность построения коммуникационной сети и связанных с этими коммуникациями колодцев - довольно простая задача. Более того, если соответствие состава слоёв коммуникаций и смотровых колодцев однозначно, то и заморачиваться слоевой принадлежностью последних не стоит вовсе. Всё сделает за вас новая утилита Проверка и коррекция коммуникаций.

Принцип работы утилиты следующий:
  • проверяется структура коммуникаций (принадлежность всех элементов каждой сети только к одному слою, ушедшие "в никуда" концы линий и т.д.)
    проверяется и корректируется распределение колодцев, ранее уже отнесённых к соответствующим слоям;
    проверяются прочие ошибки, такие как "висящие" колодцы, пересечения с образованием вершины между коммуникациями разных типов и т.д.
    остальные колодцы автоматически распределяются по соответствующим слоям (сами колодцы можно найти с помощью авто-распознавания окружностей);
Изображение

Как обычно, после выполнения утилиты, все некорректные ситуации снабжаются специальными пометками ошибок. И как это принято в ET, по этим пометкам можно быстро "пробежаться" горячими клавишами F и V, поправить ошибки и заново запустить утилиту. Процесс завершается после появления сообщения "Ошибок не обнаружено".

... продолжение поста Новая Easy Trace Pro 9.6.2170 (часть 3) >>

Ответить

Вернуться в «EasyTrace»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 16 гостей