Новшества в Easy Trace Pro 9.6.2170: различия между версиями
Строка 322: | Строка 322: | ||
== Растровые инструменты == | == Растровые инструменты == | ||
=== Утоньшение растра === | |||
Утилита заключена в диалоговое окно, в котором можно выбрать исходный растр и способ его обработки. Полученный утоньшённый растр можно записать под новым именем, не изменяя исходного растра. Если исходный растр уже привязан к проекту, утоньшеная копия растра будет добавлена как новый растровый слой проекта. Опционально, растр можно бинаризовать. В противном случае получается псевдо-серый растр, где яркость точек зависит от исходной толщины линии. Этот растр можно автоматичкски трассировать, получив сразу линии с толщиной. (Но, к сожалению, нельзя подвергать масочной фильтрации.) | |||
Код операции Утоньшение оптимизирован и распараллелен - операция выполняется быстрее в 7-10 раз. | |||
[[Файл:Et2170 img thining.gif]] | |||
=== Чистка растра === | |||
Теперь инструмент Чистка растра можно вызвать с панели Растровые инструменты. Доступен предварительный просмотр результатов фильтрации, что безусловно облегчает подбор параметров инструмента. | |||
[[Файл:Et2170 tl clean.gif]] | |||
== Остальные, новые и доработанные утилиты == | == Остальные, новые и доработанные утилиты == |
Версия от 18:47, 27 октября 2013
Что нового можно найти в очередной версии Easy Trace Pro 9.6.2170?
Условно, все основные доработки можно разбить на девять категорий:
Новый формат проекта Easy Trace PRO
Формат: ET-проект изменился внешне. Теперь это монолитный файл данных, без отдельного каталога с набором атрибутивных таблиц векторных слоёв. Формат по-прежнему закрыт, и открывать его мы не планируем.
Быстродействие: Резко, в несколько раз, изменилась скорость открытия и сохранения проекта на диске. Особенно сильно это заметно при работе с насыщенными проектами и сводными покрытиями, собранными из десятков листов.
Ограничения: Рудименты, унаследованные от старого формата данных (ограничение в 8190 вершин на линию, перемычки между внутренними и внешними контурами полигонов), пока остались, но их исчезновение - вопрос времени. Осталось только "перелопатить" большой объём кода. Ограничений со стороны формата хранения данных больше нет.
Совместимость: Для начала работы с новым форматом от пользователя никаких дополнительных действий не требуется. После установки новой версии вы открываете свой рабочий проект, он быстро конвертируется, и ... всё! Ваш рабочий проект по-умолчанию запишется в новом формате. Точно так же, нет никаких ограничений на использование ранее выполненных проектов в роли проектов-прототипов. Все ваши новые проекты могут автоматически наследовать структуру данных, настройку рабочей среды, пользовательские инструменты, стратегии трассировщиков и утилит и т. д., подготовленные вами в предыдущих версиях пакета.
Обратная совместимость: Даже если обновлённый пакет в составе рабочей группы всего один, именно он должен "возглавить" эту группу. Одного рабочего места вполне достаточно для обработки растров новых проектов, автовекторизации, первичной "зачистки" и коррекции "вектора", передаваемого остальным операторам. Наконец, сборки, сшивки по границам, оптимизации и контроля данных полного векторного покрытия. Всё это в новой версии пакета делается гораздо быстрее.
Для передачи проектов операторам более ранних версий пакета, следует выполнить только одну операцию - Компоновка проекта. Т. е. указать, что сохранять проект надо в формате 7.х-9.х и куда следует его "положить". И всё. Тем не менее, можно продолжать работать и со старым форматом проекта. При загрузке старого проекта программа спрашивает, нужно ли конвертировать его в новый формат. Просто ответьте "нет".
Оцифровка снимков
Интерактивная трассировка границ полигональных областей (NEW!)
Мы давно поглядывали в сторону интерактивной трассировки космоснимков. Ведь с точки зрения векторизатора, снимок - это просто ещё одна разновидность растра. Ну или пакета растров, в случае многозональных снимков. Тем более что большинству пользователей реально доступны лишь ортотрансформированные снимки в виде RGB- растров. Хуже того - синтезированные, трансформированные и скорректированные по цветовой гамме снимки, как правило, содержат "прореженную" палитру цветовых оттенков. Это сильно напоминает деградацию "истинных" цветов линий и заливок в растровых картах, "пережатым" JPEG-кодированием. Гистограммы таких растров напоминает расчёску, в которой уцелел лишь каждый 3-4 зуб...
Наш человеческий мозг - удивительная штука. Мы легко читаем текст, в котором едва ли не каждая вторая буква заменена на цифру, или буквы вообще стоят не на своих местах. То же и с изображениями - на глаз снимок выглядит вполне разборчиво, тогда как от исходной палитры остались только клочья.
Казалось бы, ну и что?! Границы же видно! Вот же они!! Ну да... Осталось только понять, как именно мы видим то, что видим.
Но так или иначе, трассировщик "забегал" по границам. Как-то он их там выделяет, несмотря на то, что перепады цвета и яркости на границах сильно "смазаны" прореженной гаммой оттенков космоснимка. В общем, лёд тронулся. Как обычно, инструмент возник во время работы над очередным проектом - инвентаризацией сельхоз-угодий (кстати, а вы знаете, что по данным Росреестра, в кадастр всё ещё не попали более 40% объектов?).
Текущая реализация интерактивной трассировки границ полигональных объектов на снимке выглядит так:
• выбираем трассировщик кривых, и в окне Параметры трассировки, создаём новую стратегию трассировки, способомТрассировка областей на снимках (Один раз! Далее новую стратегию только используем!);
• выбираем Автоматический режим интерактивной трассировки;
• указываем левой клавишей мыши внутрь области, подлежащей оконтуриванию - трассировщик показывает распознанный контур;
• удерживая клавишу Ctrl и вращая колесо мыши, расширяем или сужаем контур, уточняя его границы;
• фиксируем результат правой клавишей или через Esc.
Дополнительно, удерживая Shift и вращая колесо мыши, можно "зачистить" имеющиеся на границе каверны. А используя вращения колеса с нажатой клавишей Alt, можно уточнить степень сглаживания (оптимизации) построенной границы полигона. После уточнения параметров оптимизации, вам предложат их сохранить в текущей стратегии трассировщика для дальнейшего использования. Обычно, именно числовые параметры оптимизации формы линий вызывают у новичков самые большие затруднения. Теперь всё просто: вращаю колесо => вижу результат => сохраняю параметры оптимизации на будущее...
Если какие-либо из границ контура просматриваются откровенно плохо или являются простыми прямыми, то часть контура можно построить в ручном режиме. Затем перейти в "автомат" и указать точку внутри цифруемой области. Далее по тексту.
Конечно, полученный контур наверняка потребует "доработки напильником" (векторной стёркой и редактором прогиба), но в целом, по оценке наших операторов, скорость оцифровки сельхозугодий выросла примерно вдвое. Наибольший выигрыш трассировщик, естественно, даёт при выделении сложных криволинейных границ объектов.
Пример работы инструмента можно увидеть в этом видеоролике.
Еще стоит добавить, что обычный интерактивный трассировщик уже давно неплохо бегает по просёлочным грунтовым дорогам.
Полиэкранное отображение вектора поверх снимков в нескольких диапазонах (доработка)
Как правило, ручное дешифрирование границ сельхозугодий выполняется по пакету космоснимков. Обычно это снимок в естественных цветах плюс снимок в инфракрасном диапазоне. Или иной синтезированный снимок, проявляющий границы цифруемых объектов. Снимков (растров) может быть и больше двух - например, при использовании сезонных снимков.
Первое, что приходит в голову - сложить такой пакет снимков для просмотра "на просвет", используя опции прозрачности отображения растров. Такой фокус неплохо проходит, например, при наложении растра топокарты на снимок. Но с космоснимками это выглядит чудовищно. Лучше разделить экран на 2-4 окна и синхронно отслеживать вектор поверх нескольких растровых подложек (а ещё лучше - распределить эти окна по двум экранам!).
Собственно, такой режим отображения появился в ET уже довольно давно. Но только теперь можно видеть текущую "резиновую линию" или след автотрассировки синхронно сразу во всех открытых окнах. Ранее, надо было либо "скакать" по окнам для отслеживания совпадения, либо мириться с некоторым запаздыванием появления линии в дополнительных (не текущих) окнах.
Режим прозрачности растров
Режим полупрозрачного отображения пакета растров Прозрачность растров дополнился еще одним вариантом вывода - сделать "прозрачными" пикселы светлее заданного порога. Это позволяет накладывать цветные или серошкальные растры карт поверх изображения аэро- и космо-снимков без потери качества отображения последних. Т.е. на снимок "лягут" только линии и заливки, которые темнее некоторого заданного порога. "Грязный" серый фон растровых карт останется полностью прозрачным. Опция доступна для любых не черно-белых растров (черный фон ч.б. растров прозрачен по-определению).
Потоковый режим трассировки (доработка)
Пожалуй, наиболее популярным режимом трассировки при дешифрировании снимков является потоковая трассировка. Т. е. непрерывное создание линии непосредственно вслед за движущимся курсором мыши. Вот только для этого нужна очень твёрдая рука. Иначе всё дрожание рук "после вчерашнего" запечатлеется в результатах вашего труда. В этом инструменте очень важен встроенный механизм сглаживания строящейся линии. Вот собственно он и был подвергнут переработке. Теперь красивые линии могу рисовать даже я!
Пример работы инструмента в этом режиме можно увидеть в этом видеоролике.
Оцифровка полигональных покрытий
Утилита Фильтрация связного мусора (NEW!)
Типичный цикл АВТОМАТИЗИРОВАННОЙ векторизации (не будем говорить об "автоматической" векторизации - она применима только к очень узкому классу задач) состоит из ряда операций:
• выделение, чистка и, возможно, оскелечивание тематического растра;
• векторизация растра, чистка, сшивка и доводка векторных элементов;
• сборка, правка формы, классификация и атрибутирование векторных объектов.
При таком подходе к векторизации, на нагруженных материалах до 90% времени обычно занимает отделение "зёрен от плевел". Т. е. удаление "векторного" мусора, неизбежно возникающего после векторизации растра. Для скептиков сразу заметим: удаление мусора и доводка результатов В РАЗЫ БЫСТРЕЕ последовательной и аккуратной прокладки отдельных линий по растру любым известным нам способом.
Наиболее муторная ситуация с удалением "мусора" складывается при обработке материалов ручного исполнения. Например таких, как почвенные карты (ещё один наш недавний проект). Это очень толстые линии, обилие рукописного текста и условных знаков и, в довершение всего, раскраска карты цветными карандашами.
Большая толщина линий отнюдь не благо. При износе материала (а только такие и попадают на оцифровку) толстые линии "рассыпаются" на откровенную грязь с изобилием каверн и разрывов. Единственное лекарство для извлечения этих "следов в пыли" - это многократное размытие и повышение контраста изображения. Но увы, эти же операции приводят к неизбежной склейке между текстом, условными знаками и линиями. Дальнейшие шаги обработки приводят к образованию сложных векторных конгломератов, прилипших к границам полигонов.
От таких сложных конгломератов, да ещё и прилипших к границам полигонов уже не избавишься утилитой Векторная фильтрация. Для их поиска и удаления была разработана специальная утилита Фильтрация связного мусора. Поскольку ни о каком распознавании текста в таких клубках линий речь идти не может, для их опознания используется ряд характерных признаков. Это высокая компактность (большая протяжённость линий, образующих конгломерат при малом размере охватывающего его прямоугольника), малая длина и большое число входящих в конгломерат элементов и факт примыкания конгломерата к чему-то похожему на границу полигона (т. е. к протяжённой линии, имеющей малый изгиб).
Для работы с подобными растрами и была написана эта утилита. Это почвенные карты, используемые для уточнения кадастровой стоимости земель сельхозугодий. Здесь показан исходный и выделенный из него толстый "чёрный" растр. Для выделения границ участков использовалась довольно длинная связка команд под управлением Комбинированного растрового инструмента. "Вытаскивание" границ, закрашенных тёмно-коричневым цветом выполнялось в этой связке утилитой Локальное повышение контраста.
Перечень параметров утилиты Фильтрация связанного мусора выглядит несколько устрашающе. Но это не проблема, поскольку в утилиту встроен режим Просмотр, и есть возможность указания образцов удаляемых конгломератов непосредственно на экране. Т.е., задав векторный слой, подлежащий очистке, и нажав кнопку Сбросить предыдущие значения параметров, следует просто указать образцы связанного мусора, подлежащие удалению.
Для удобства контроля, яркость исходного вектора приглушается, а удаляемые конгломераты, напротив, ярко подсвечиваются. "Выползание" удаляемых конгломератов на границы полигонов пресекается нижней группой параметров, ограничивающей их рост. Предварительное сглаживание исходных данных позволяет повысить достоверность распознавания конгломератов. Сами векторные данные не изменяются.
Конечно, ряд "правильных" векторных сегментов неизбежно "попадёт под раздачу". Но они легко восстанавливаются утилитами Сшивка разрывов и Коррекция топологии (операцией Дотягивание концов линий), так как утраченные сегменты имеют малую протяжённость.
Трассировщик по вектору (доработка)
Альтернативным способом выделения границ полигонов из тяжёлой "грязи" или отделение элементов рельефа от горизонталей, является "трассировка по вектору". Напомню, что в отличие от обычных интерактивных трассировщиков по растру, этот трассировщик "бегает" по векторным цепочкам, созданным утилитой Трассировка линий. Такой способ трассировки появился в ET тоже давно. Сейчас он был доработан и обрёл новую способность. Теперь, в режиме Слежение за курсором, трассировщик, не задавая лишних вопросов, легко "соскакивает" с текущей векторной цепочки и переходит к указанному продолжению линии в месте её разрыва.
Здесь речь вовсе не об обычных разрывах в линиях - такие преграды трассировщик умеет преодолевать от рождения. Тут ситуация несколько сложнее и требует пояснений. "Грязные" растры, в которых цвет линий мало отличается от фона, требуют особой обработки. Это могут быть полустёртые карандашные линии, малоразличимые на грязном фоне изношенной "пятисотки", или линии границ на "карте-раскраске" как в примере растра, приведённом выше. В таких случаях обязательно используется сочетание двух растровых операций - Размытие и Усиление резкости (Unsharp). Первая операция позволяет "собрать" следы линии в одно целое, вторая - отделить линию от окружающего фона.
И здесь очень важен параметр Радиус маски в операции Усиление резкости. Именно он отвечает на вопрос: "а что, собственно, будем усиливать?". Т.е. значение этого параметра однозначно "завязано" на толщину выделяемых линий. Так вот, в местах пересечений и примыканий линий их "толщина" увеличивается в разы. Ну а далее срабатывает "закон подлости" - утолщение в месте примыканий линий расценивается как фон (всё тёмное, в пределах радиуса маски перепадов яркости нет!), усиление резкости не срабатывает, и в итоге одна из линий, входящих в это примыкание (обычно самая "слабая" и тонкая), "отваливается".
Особенно эффективно "вытаскивает" линии, от которых остались одни следы, утилита Локальное усиление контраста. Но за всё приходится платить - в этом случае слабые примыкающие линии "отваливаются" заметно чаще. Обычно, "отвалившиеся" линии легко возвращаются на место с помощью операции Дотянуть концы линий утилиты Коррекция топология. Вот только на перегруженных растрах к таким линиям обязательно приклеится мусор, оставшийся от текста или топографических символов, собственно поэтому здесь и стоит использовать трассировку по вектору.
Конечно, отваливаются вовсе не все линии, а только те, которые перед примыканием к узлам сильно "похудели", т. е. уже были практически оторваны. Но в целом на нагруженных растрах подобных случаев более чем достаточно. Так вот, теперь трассировщик, сталкиваясь с таким "развалившимся" узлом, может перескакивать через разрыв на продолжение линии вместо поиска обходных путей через остальные, выходящие из этого узла, ветви.
Новая способность трассировщика отлично себя показала при прослеживании элементов рельефа (обрывов, промоин, скальных выходов, утолщённых линий на скалах), границ заштрихованных областей (не залитых, а именно заштрихованных диагональной или иной штриховкой), контуров зданий с большим числом примыкающих линий границ покрытий и коммуникаций и т.д. Например, в проекте с почвенными картами, это позволило сохранить нам массу времени при восстановлении контуров протяжённых оврагов. Мало того, что в этих узких полигонах границы практически соприкасались, так они ещё и были раскрашены в тёмно-коричневый цвет, мало отличающийся от цвета границ.
Утилита Распознавание точечных символов (доработка)
Ещё одна доработка позволила кардинально разгрузить растры почвенных карт от изобилия текста и топографических символов. Изначально, эта утилита предназначалась для распознавания и точной локализации точки вставки топографических символов. Причём распознаваемые символы могут быть повёрнуты, отличаться по размерам и состоять из нескольких, не связанных друг с другом элементов. В нашем случае, распознавание символов не требовалось (они кодировались атрибутами почвенных полигонов), а вот способность утилиты стирать с растра распознанные объекты пришлась очень кстати.
Был увеличен максимальный размер распознаваемых символов, точность распознавания и интерфейса указания образцов распознаваемых/удаляемых объектов. Это позволило избавиться не только от множества топосимволов, но и от изобилия длинных штрихов пунктира, изображавшего грунтовые дороги. Естественно, что они были того же цвета, что и границы полигонов и пересекали их совершенно произвольным образом.
В результате, за 7-10 минут удавалось очистить растр от нескольких десятков тысяч "мусорных" объектов. Это время уходило на указание образцов удаляемых объектов (все карты рисовались разными людьми, и общий в них был только смысл).
Указываемые образцы масок теперь связываются не с текущим векторным слоем, а с произвольным - заданным в строке таблицы распознаваемых образцов. Т. е. достаточно оставить поле Слой в строке этой таблицы пустым, и все найденные объекты будут распознаваться "в никуда", т. е. просто стираться с растра.
Комбинированная обработка растра (NEW!)
Если ваш компьютер не полный "тормоз" (а ещё лучше, если в нём установлена современная графическая карта на процессоре от NVIDIA), то вам доступна возможность сразу оценить результат применения целой последовательности операций к исходному растру. Даже такая простая, базовая последовательность операций как Размытие - Усиление контраста - Конвертация в монохромный растр, вызывает у слушателей наших курсов непременное желание узнать некие секретные значение параметров операций, подходящие на все случаи жизни. А их-то как раз и нет!!!
Есть ряд довольно простых правил подбора этих параметров. И все они завязаны на разрешение растра, его текущее состояние, алгоритм и степень сжатия, которыми растр был упакован, плотность представленной на растре информации, оттенки цветов, которые надо отделить друг от друга и ещё Бог весть на что! А правила действительно просты - выделенные линии не должны рваться, слипаться и, по возможности, разделяться на отдельные растры по цветам. Всё.
Вот только как объяснить, до какой степени мутности растр должен быть размыт, чтобы после усилении резкости каверны на линиях "схлопнулись", "шипы" исчезли, "грязь" на фоне не "всплыла", а тонкие и слабые линии не исчезли? Особенно, если не знаешь этого сам? Ведь, как правило, приходится делать несколько пробных попыток, прежде чем добьёшься приличного результата. Особенно на наших картах.
Но оно того стоит. Ведь разница во времени оцифровки хорошо и плохо выделенного растра это РАЗЫ, а не проценты. Так что игра стоит свеч!
И вот теперь всё стало до смешного просто. Подобрать оптимальные параметры можно классическим методом "научного тыка". Берёте типовую стратегию прямо из утилиты или составляете набор операций, посмотрев один из видеоуроков или пост на нашем форуме, и смело подбираете параметры. Как? А по конечному результату! Ведь теперь его можно увидеть сразу!!!
Всего после нескольких попыток вы сами почувствуете, к чему ведут изменения тех или иных параметров в каждой из операций. На первых порах стоит попробовать погонять движки инструментов от упора до упора - так легче понять, на что они влияют (но всё же стоит учиться на копиях базовых стратегий - просто измените их имя и нажмите кнопку Save).
Кроме того, прямо в инструменте спрятан небольшой учебник в виде пар картинок (было/стало), стратегии, которая это сделала, описание смысла и назначение выполнявшихся операций, ну и, фрагмент растра с которого были сняты эти картинки. Так что всё можно попробовать в живую.
Оцифровка рельефа
Утилита Обработка сгущений горизонталей (NEW!)
С таким количества ошибок и брошенных горизонталей в местах их сгущений, как на зарубежных "генштабовках" 1:50000, мы раньше не сталкивались. В общем и целом, это смахивает на халтуру: "А кому они нужны, эти зарубежные территории? Мы больше на танках за границу не ездим!". Но так или иначе, против ТЗ не попрёшь, и если велено горизонтали доводить - то так тому и быть.
По этому поводу была написана утилита, выполняющая эквидистантную прокладку брошенных горизонталей. Кроме того, она помечает "начала" и "концы" линий, соединить которые невозможно, так как они относятся к разным горизонталям. Учитывая протяжённость отсутствующих участков горизонталей, утилита значительно сокращает время оцифровки сложных растров.
Принцип работы утилиты основан на отслеживании коридоров, образованных утолщёнными горизонталями. Дополнительно используются линейные объекты и границы площадных элементов рельефа, которые, как и рамка листа, могут прерывать горизонтали.
Утилита Восстановление толщины линий (NEW!)
В пару к предыдущей утилите, неплохо подходит новая утилита Восстановление толщины линий. Для дотягивания брошенных основных линий нужны коридоры, образованные утолщёнными горизонталями. А для их автоматического отделения от основных горизонталей после векторизации стоит снова обратиться к исходному растру.
Исходными данными для утилиты являются векторный слой, содержащий результаты автовекторизации, и толстый (не утоньшенный!) черно-белый растр. Тот самый, из которого, в конечном итоге, эти линии и были получены.
Вообще, мы рекомендуем всегда сохранять в проекте оба вида выделенного растра. Толстый - растр, полученный в результате выделения тематического слоя, и Тонкий - копию Толстого растра после выполнения операции Утоньшение. Тонкий - для выделения линий, а Толстый - для распознавания топосимволов, а теперь ещё и восстановления информации о толщине линий.
После нажатия кнопки Просмотр утилита собирает статистику о толщине растровых линий, поверх которых лежат линии указанного векторного слоя. Естественно, что толщина растровых линий колеблется достаточно широко. Причина колебаний толщины - склейки, пересечения и разрывы в линиях. Так что сбор и отнесение информации о толщине к конкретной линии, задача ещё та.
После обсчёта, утилита отображает гистограмму распределения линий по толщинам. Параллельно, на экране выбранными цветами подсвечиваются участки линий, соответствующие текущим значениям заданных интервалов толщин. Перемещая движки на гистограмме, следует уточнить границы интервалов тонких и толстых линий. Во время работы утилиты, масштаб и текущее положение рабочего окна можно свободно изменять для оценки корректности задания диапазонов толщин.
После нажатия клавиши Применить линиям, попавшим в заданные диапазоны, присваивается значение толщины. Оно записывается в специальный атрибут полилиний $Толщина (аналогичный атрибуту $Z собственной высоты любой из полилиний). Записываемые значения - это средние значения толщины в каждом из интервалов. Линии, толщина которых не вошла в заданные интервалы, сохраняют значение атрибута $Толщина равное нулю.
Далее линии с различной толщиной можно разделить по слоям или выбрать группы линий и присвоить им классические атрибуты типа горизонтали. Это можно сделать, используя окно Просмотр атрибутов, или окно Выбор объектов по критерию инструмента Групповой редактор.
Результат автоматического восстановления толщины линий вполне пригоден для ускорения работы, но не равен 100%. Некоторая ручная доводка, безусловно, потребуется. Особенно на коротких отрезках горизонталей, лежащих между элементами рельефа, рядом с границей листа и т.д.
И ещё. Если исходный растр был плох и тематический слой рельефа выделялся с помощью серии из пар операций Размытие + Усилений резкости, то итоговая толщина линий выравнивается и начинает зависеть от радиуса маски инструмента Усиление резкости. А нам случалось строить цепочки обработки растров, содержащие 3 пары таких операций.
Утилита Присвоение высот 3D-линиям (NEW!)
Утилита вычисляет высоты вершин 3D-полилиний (промоин, линий рек и т.д.) на основе значений высот пересекаемых линией горизонталей рельефа. Те 3D-полилинии, которые не пересекают ни одной горизонтали, помечаются. Пометка ошибки - отрезок, соединяющий начало и конец линии, такой же, как и в других утилитах простановки/проверки высот.
Оцифровка "пятисоток"
Утилита Преобразование классификатора (NEW!)
Отсутствие каких-либо официальных стандартов на форматы данных электронной картографии в России очень часто приводит к новому витку "освоения" средств, связанному с переходом на очередную, теперь уже, безусловно, "правильную" геоинформационную систему. При этом ранее созданные векторные данные нередко идут "под нож", и вся оцифровка опять начинается с нуля.
Часто это оправдано. Результаты предыдущих волн "дикой оцифровки" породили массу данных, о точности и топологической корректности которых цензурными словами ничего сказать просто нельзя. Туда им и дорога. Но нет правил без исключений. Существует масса вполне приличных данных, которые, по велению свыше, теперь должны храниться в другом формате. А такой переход вовсе не тривиальная задача...
Как всегда, создание очередной утилиты, было простимулировано необходимостью выполнить проект по конвертации данных ещё вчера. Огромным плюсом в этой работе было то, что исходные данные готовили мы же. Задача конвертации возникла внезапно: в разгар проекта по оцифровке заказчик сообщил, что принято решение сменить конечную систему - т. е. на ходу перепрыгнуть в другой поезд. С вещами. Необходимо было изменить форму представления данных и, соответственно, их классификацию.
По счастью, всё оказалось не так страшно. Классификаторы, конечно, имели разную структуру и разные атрибутивные характеристики объектов, но главное, что не требовалось выполнять дополнительных "украшательств" в виде так называемых служебных (косметических) объектов и прочих стрелочек, черточек, крестиков и ноликов.
Предстояло выполнить две операции:
Первая операция касалась объектов. Необходимо было либо переместить объекты с некоторого исходного слоя на другой слой, либо, в зависимости от атрибутивных характеристик, распределить объекты на разные слои. Вторая задача касалась атрибутивных характеристик объектов. Эта часть задачи оказалась немного сложнее, и ее решение тоже разделилось на два этапа. Не секрет, что названия одинаковых атрибутивных характеристик объектов, в силу отсутствия единых стандартов, разнятся даже в вариантах классификатора для одной и той же ГИС. Что уж говорить о случае, когда ГИС различны... Это, собственно, первая часть задачи. Вторая задача (и намного более сложная) заключалась в том, что помимо названий атрибутов различается и перечень (домен) их возможных значений. Причем так, что часто было невозможно построить соответствие значений один к одному.
Естественно, что все эти задачи должны решаться одновременно, непосредственно в процессе конвертации. "Развалив"
данные наполовину, собрать их в другом формате уже не получится. Это примерно как двумя половинными прыжками попробовать перепрыгнуть через пропасть.
Создавать отдельный механизм управления таблицами правил конвертации внутри программы бессмысленно в то время, когда повсеместно используется Excel. В нём эти правила и записываются.
Конечный формат конвертируемых данных можно задать через проект-прототип ET. Конечно, если он у вас есть. В этом случае в новом проекте мы получим настроенные согласно прототипу отображение, правила контроля топологии и все необходимые стратегии утилит и инструментов. Кроме того, при использовании прототипа можно более точно определить формат и тип атрибутивных полей. Без прототипа эти параметры программа пытается вывести самостоятельно.
Естественно, прототип должен строго соответствовать новому классификатору, в который выполняется конвертация. Если в прототипе и правилах перехода будут расхождения, утилита сообщит об ошибке в строке, имеющей рассогласование между правилами и прототипом.
Утилита Проверка и коррекция коммуникаций М 1:500 (NEW!)
Корректная оцифровка сетей коммуникаций предполагает однозначное распределение точечных объектов-колодцев по слоям в зависимости от связанных с ними линий коммуникаций. На глаз, даже опираясь на атрибутивные данные, проверить однозначность такого соответствия довольно сложно. Да и сам процесс определения слоевой принадлежности очередного колодца достаточно муторный и не застрахован от ошибок. Кто видел истёртые и многократно перерисованные "пятисотки", спорить с этим не станет. А изображения трубопроводов водоснабжения, прямо связанных с канализацией - притча во языцех. Впрочем, последнее уже встречается и в реальной жизни.
С другой стороны, проверить корректность построения коммуникационной сети и связанных с этими коммуникациями колодцев - довольно простая задача. Более того, если соответствие состава слоёв коммуникаций и смотровых колодцев однозначно, то и заморачиваться слоевой принадлежностью последних не стоит вовсе. Всё сделает за вас новая утилита Проверка и коррекция коммуникаций.
Принцип работы утилиты следующий:
- проверяется структура коммуникаций (принадлежность всех элементов каждой сети только к одному слою, ушедшие "в никуда" концы линий и т.д.);
- проверяется и корректируется распределение колодцев, ранее уже отнесённых к соответствующим слоям;
- проверяются прочие ошибки, такие как "висящие" колодцы, пересечения с образованием вершины между коммуникациями разных типов и т.д.;
- остальные колодцы автоматически распределяются по соответствующим слоям (сами колодцы можно найти с помощью авто-распознавания окружностей).
Как обычно, после выполнения утилиты, все некорректные ситуации снабжаются специальными пометками ошибок. И как это принято в ET, по этим пометкам можно быстро "пробежаться" горячими клавишами F и V, поправить ошибки и заново запустить утилиту. Процесс завершается после появления сообщения "Ошибок не обнаружено".
Инструменты векторизации и редактирования
Сквозная команда Дотянуть линию
При "расчистке" результатов автовекторизации в материалах, изобилующих посторонним "мусором", массово дотягивать концы "повисших" линий утилитой Коррекция топологии явно не стоит. А "висящих" концов может быть довольно много. Как правило, это линии изображённые пунктиром, либо линии, брошенные вблизи границ объектов, либо рамки листа. Дотягивать концы линий вручную, тоже скучно и долго.
Так вот, висящий конец можно "попросить" дотянутся до ближайшей линии, определив точку пристыковки самостоятельно. Для этого, курсор ЛЮБОГО инструмента редактирования следует поместить МЕЖДУ концом линии и линией, к которой его следует примкнуть. А можно явно указать направление примыкания. Для этого курсор следует поместить ЗА этой линией, причём он должен лежать строго по направлению примыкания. А затем, просто нажать горячую клавишу B.
Видеоролик, посвященный команде дотягивания ДАТЬ ССЫЛКУ !!!
Групповые ножницы
Оптимизирован и распараллелен алгоритм обрезки, встроенный в этот инструмент. На 4-х ядерной машине время выполнения операции обрезки по контуру сократилось в 25 раз.
Напомним, Групповые ножницы позволяют корректно обрезать сложное векторное покрытие по границе одного или нескольких замкнутых контуров. Обрезка может сопровождаться удалением частей векторных объектов, лежащих внутри или снаружи этих контуров. В качестве границ обрезки могут использоваться любые замкнутые полилинии.
Корректор
Перечень ситуаций, которые теперь обрабатывает инструмент Корректор, практически совпадает с перечнем артефактов, обрабатываемых утилитой Фильтрация линий. Отличие в том, что Корректор позволяет оператору прямо указать положение артефактов и способы их обработки. Инструмент используется после применения утилиты Фильтрация линий для обработки коллизий, которые не удалось распознать и обработать с помощью этой утилиты.
Инструмент работает следующим образом:
- при подведении курсора к артефакту подсвечиваются потенциальные обрабатываемые линии;
- первый левый клик обрабатывает артефакт по наиболее вероятному сценарию;
- если инструмент "не угадал", последующие левые клики изменяют способ обработки ситуации по кругу;
- вращением колеса мыши можно изменять величину вносимых изменений. Ширину удаляемого или спрямляемого участка, изгиб формируемых кривых и т.д.;
- правый клик применяет выбранный способ обработки к ситуации.
Дополнительно настроить предпочтительные способы обработки ситуаций инструментом можно, вызвав окно его параметров (кнопка "молоток" на панели параметров инструмента).
Редактор примитивов
- Возможности редактора примитивов при работе с полилиниями расширились за счёт добавления режима Эквидистантная сшивка. Он используется для прокладки отсутствующих участков брошенных горизонталей в местах их сгущений. После эквидистантной сшивки на участках без сильных изгибов коррекция формы линий практически не требуется.
- Примечание
- для равномерного распределения основных горизонталей между утолщёнными, перед добавлением отсутствующих участков линий, может потребоваться сдвиг уже имеющихся линий. Наиболее просто это делается так:
- Пучёк изолиний рассекается Векторной стёркой, отделяя горизонтали, смежные с "брошенным" участком, от их продолжений;
- Отрезанные участки горизонталей "сдвигаются" инструментом Расширение контуров / Сдвиг полилиний и заново пришиваются;
- Выполняется эквидистантная сшивка внутри нового, расширенного коридора, образованного линиями, смежными со сшиваемой.
- При сшивке концов линий примыкающих к другим полилиниям, в пределах экрана, ищется кратчайший путь по существующим объектам. Если он найден, то он используется в качестве замыкающего сегмента аналогично применению опции Автозамыкание в полуавтоматическом трассировщике. Иначе выполняется замыкание по прямой, либо по гладкой дуге в зависимости от нажатия клавиши-модификатора Shift.
- При редактировании атрибутов объектов, если тип изменяемого атрибута - Integer, то его можно настроить на автоматическое инкрементирование. Для этого в окне Атрибуты объекта щелкните на опцию Автозаполнения до появления в поле символа "+1". Теперь, при переходе к следующему объекту, значение этого атрибута объекта будет автоматически увеличиваться на единицу. Если у очередного редактируемого объекта этот атрибут уже заполнен - он не изменится.
Трассировщики - полуавтоматы
Если трассировшик-полуавтомат "убежал" дальше чем нужно, теперь нет необходимости нажимать клавишу отката (Z), либо переходить в режим обрезки конца линии. Достаточно просто указать на ту точку линии, до которой её следует укоротить. Режим автоматической обрезки доступен как в ручном, так и в автоматическом режиме трассировки.
Инструмент Ленточный полигон
Добавлена возможность построения ленточных полигонов для нескольких полилиний, выделенных Групповым редактором. Для выполнения построения достаточно указать на любую из выделенных полилиний. При щелчке вне группы, выделение полилиний будет сброшено без построения ленточных полигонов.
Инструмент может использоваться для построения буферных зон вокруг группы полилилиний выделенных Групповым редактором по произвольному набору критериев. Стало возможным создание ленточного полигона с максимальным значением ширины 200 м.
Инструмент Расширение контуров / сдвиг полилиний
На панель параметров инструмента добавлена кнопка Единицы, позволяющая выбирать единицы, в которых будет задана величина сдвига, расширения или сжатия границы полигона. Это пикселы, координаты проекта и миллиметры бумажного оригинала. Доработка выполнена для возможности ручного создания буферных зон вокруг объектов.
Инструмент Групповой редактор
Теперь при выборе двух и более полилиний или полигонов на панели Группового редактора отображается суммарная длина линий и общая площадь. Причем, площадь может отображаться как единицах проекта, так и в других, например, в гектарах (это настраивается в Свойствах проекта).
Растровые инструменты
Утоньшение растра
Утилита заключена в диалоговое окно, в котором можно выбрать исходный растр и способ его обработки. Полученный утоньшённый растр можно записать под новым именем, не изменяя исходного растра. Если исходный растр уже привязан к проекту, утоньшеная копия растра будет добавлена как новый растровый слой проекта. Опционально, растр можно бинаризовать. В противном случае получается псевдо-серый растр, где яркость точек зависит от исходной толщины линии. Этот растр можно автоматичкски трассировать, получив сразу линии с толщиной. (Но, к сожалению, нельзя подвергать масочной фильтрации.)
Код операции Утоньшение оптимизирован и распараллелен - операция выполняется быстрее в 7-10 раз.
Чистка растра
Теперь инструмент Чистка растра можно вызвать с панели Растровые инструменты. Доступен предварительный просмотр результатов фильтрации, что безусловно облегчает подбор параметров инструмента.
Остальные, новые и доработанные утилиты
Утилита Собрать проект (NEW!)
Прим. Здесь и далее, в зависимости от контекста, слово "проект" следует трактовать в двух смыслах. "Проект" - задача на векторизацию от заказчика и "проект" (ET) - единица работы оператора.
В последнее время нам всё чаще приходится сталкиваться с проектами, содержащими огромные растры. Это и почвенные карты и космоснимки и проекты, включающие группы листов планшетов-пятисоток. Из-за срочности проектов, работа чаще всего выполняется "с колёс", т. е. немедленно после получения очередной порции растров от заказчика. Технология оцифровки тоже строится "на ходу", так как ни на какой пилотный проект времени нет и в помине, а результаты нужны ещё вчера.
Единственным разумным (да и безусловно правильным!) подходом к выполнению таких проектов является организация поточной обработки по принципу конвейера. Всё как в той фразе: "Нет времени объяснять - цифруй!".
Стадий обработки может быть довольно много. Классически, это как минимум: подготовка растров - оцифровка - атрибутирование - сводка. В случае с топографическими картами, отдельно обрабатываются гидрография, рельеф, топография и растительность. Отсюда следует необходимость в высокой и надёжной мобильности единиц работы (проектов "на лист", проектов с несколькими листами) между отдельными операторами оцифровки.
Идеальный вариант организации управления данными, это высокоскоростная сеть и общий сервер данных. Общие каталоги с растрами и каталоги стадий обработки для хранения единиц операторской работы. Но это в идеале. А поскольку до реальных исполнителей задачи (и деньги!) доходят в последнюю очередь - практически любой проект это аврал. Как следствие - чехарда с передачей данных между операторами при организации конвейера.
Так вот, новая утилита Собрать проект позволяет упаковать весь проект в отдельный каталог, ничего не потеряв по дороге. Где бы ни находились отдельные его составляющие. Это может потребоваться как для удалённой работы отдельных операторов (операторы-надомники, сотрудницы, ушедшие в отпуск по уходу за ребёнком), так и для передачи проектов между отдельными подразделениями и т.д.
Для сборки проекта достаточно указать его новое имя и местоположение. Дополнительно, можно указать в какой версии формата Easy Trace следует сохранить проект - это может потребоваться для взаимодействия с операторами, работающими на более ранних версия векторизатора.
Утилита Точки восстановления (NEW!)
Одной из сильных сторон векторизатора Easy Trace PRO является возможность выполнения значительных объёмов модификации векторных данных встроенными утилитами. Это векторная фильтрация, распознавание, оптимизация формы линий, коррекция топологии, сшивка по границам, оптимизация топологии, и т. д. Это мощные утилиты, выполняющие тысячи, а то и десятки тысяч изменений сразу. И как и всё мощное, требующие аккуратного и грамотного использования. Сидя за рулём самосвала, можно сделать быстро и много, а можно походу раздавить пару "легковушек"...
Сделать процесс применения утилит максимально безопасным позволяет "машина времени" - промежуточное сохранение проекта перед потенциально опасной операцией. Оно создаёт резервную копию проекта, на которую всегда можно "откатиться", если результат операции вас не устроил.
Резервная копия проекта - это наиболее надежный вариант сохранения целостности ваших данных. Да, в ET встроен мощный и глубокий Undo. "Откатить" можно практически любую операцию - было бы место на диске (разве что невозможно восстановить удалённые векторные слои). Можно всё - но только в пределах сеанса работы. Если вы ушли на обед, не оценив результатов выполнения утилиты, а кто-то (буквально на минуточку!) взял ваш ключ защиты программы, то об "откате" можете забыть...
Сомневаетесь в результате - создайте контрольную точку для восстановления. А то ведь и свет может погаснуть во время обсчёта продолжительной операции...
Тем более, что делается это быстро и просто. Утилита Точки восстановления проекта позволяет создавать несколько точек восстановления и выбирать любую из них для "отката" текущего проекта к его предыдущему состоянию.
Утилита Распознавание окружностей
В утилиту добавлен ряд новых возможностей. Улучшен и упрощён интерфейс утилиты:
- Добавлена опция Применять спецобработку для карт масштаба 1:500. Это позволяет распознавать символы, построенные на основе окружностей и содержащие внутри символа дополнительные линии. Обычно, это изображения смотровых колодцев. Причём сами символы могут быть как сильно повреждены (рваные куски окружности), так и склеиваться с посторонним прилегающим мусором. Естественно, что поиск окружностей в таких условиях занимает заметно большее время.
- В таблицу шаблоны окружностей добавлено новое поле Цвет. Теперь каждый шаблон распознавания задаёт цвет, которым отображаются как движки на гистограмме, так и распознанные окружности на рабочем поле проекта.
- В управления таблицей Шаблоны окружностей добавлены кнопки Переместить вверх / вниз шаблон, подняв / понизив его приоритет при распознавании.
- Для удобства точного задания интервалов возможных диаметров окружностей, на гистограмме добавлены кнопки Растянуть / Сузить. Например, можно растянуть на всю гистограмму пик распределения диаметров одного вида окружностей.
Утилита Фильтрация линий
В базовой утилите предобработки результатов автоматической векторизации Фильтрация линий произошли следующие изменения:
- Добавлено распознавание нового типа артефакта Выступы. Он предназначен для восстановления формы "схлопнувшихся" концов узких полигональных контуров. Например, изображений оврагов. Опция позволяет восстановить утраченную форму контуров, заменив "шип" на гладкое продолжение узкого контура. Дополнительно введены параметры ограничения по углу схождения кромок выступа, для чёткого отделения "схлопнувшихся" полигонов от обычных, Т-образных шипов на векторных линиях;
- Добавлено распознавание нового артефакта Y-Развилка- это узел степени 3, имеющий Y-образную форму. Как правило, подобные артефакты возникают в местах сгущений горизонталей из-за прилипания "брошенных" линий к соседним линиям. Т.е. Y-развилка - это половинка слипания. В результате коррекции узел вырезается. После коррекции, освободившиеся концы линий корректно соединяются утилитой Cшивка разрывов, либо, что более надёжно, новой утилитой Обработка сгущений горизонталей;
- В параметры поиска артефактов Штрихи добавлена возможность ограничивать их Изгиб как сверху, так и снизу. Эта доработка позволяет удалять следы пунктирных линий, лежащие поверх изображения границ полигональных объектов. Например, просёлочные дороги, пересекающие границы полигонов типов почв. Ранее можно было распознать только штрихи изогнутые "более" заданного значения.
- Параметр Толщина растровых линий, от которого зависит "глубина" изменений, теперь настраивается отдельно для каждой стратегии. Это позволяет более точно подобрать форму вносимых в линии изменений при удалении шипов, коррекции формы Т-развилок, величины вырезаемой части в Y-развилках и т. д.
- Из параметров обработки артефактов Шипы удалена опция Вытягивать в связи с добавлением нового типа артефактов Выступы.
Утилита Сшивка разрывов
В утилиту добавлены возможность предварительного просмотра результатов её выполнения. Теперь подобрать наиболее подходящие для данного материала параметры утилиты с первой попытки смогут даже новички. Ведь все вносимые утилитой изменения становятся видны до её реального применения.
- Доработана логика обработки коротких отрезков. Ранее отрезок, признанный коротким, на изгиб уже не проверялся. Например, нельзя было использовать отрезки длиной до 9 пикселов как точки без направлений, и в то же время игнорировать сильно изогнутые отрезки короче 7 пикселов. Теперь проверяются оба критерия и выбирается наиболее сильное действие (вплоть до удалить).
- Инструмент задания области выполнения сшивки вынесен на отдельную кнопку.
- Утилиту можно запускать и без предварительного просмотра результатов. Или вообще без открытия этого окна и без выдачи финального сообщения, связав утилиту с горячей клавишей. Это удобно при постепенном "распутывании" сложного полигонального материала, сильно зашумлённого посторонними линиями и изобилием текста. Удалив векторной "стёркой" порцию "мусора" и запустив утилиту сшивки, можно быстро "проявить" очередной участок полигонального покрытия.
Утилита Распознавание точечных линий
Если на топографических картах точечные линии распознаются относительно просто (размер и форма точек стабилен, шаг постоянен и невелик), то на ведомственных картах, таких как лесоустроительные планшеты, стиль изображения этих линий -"кто в лес, кто по дрова". При их обработке приходится задавать гораздо более широкий диапазон возможного шага следования точек. Многие точки в линиях неотличимы от мусора или склеены между собой, и приходится восстанавливать линии без их участия. Поэтому для упрощения обработки таких материалов выполнены следующие доработки:
- Задание барьерных слоев, ограничивающих точечные линии, отнесено к первому шагу утилиты. Это позволяет не допустить длинные сшивки разрывов через линии-барьеры. Кроме того, запрещает замыкания контуров рядом с барьерами (это помешает на следующем шаге дотянуть до них концы линий);
- На шаге построения первичных цепочек из соседних точек добавлена дополнительная фильтрация неоднозначных треугольников.
Утилита Вырезание подпроектов
В утилиту добавлена опция Обрезать растры по рамке. При её выборе входящие в подпроект растры будут не только записаны в папку этого подпроекта, но и обрезаны по его рамке. При включенной опции Обрезать растры по рамке растры автоматически сохраняются в папке проекта, поэтому опция Копировать растры в папку проекта становится недоступна.
Окно Таблица атрибутов
В таблицу атрибутов добавлена возможность отслеживать объекты с одинаковыми атрибутами. Для выявления таких объектов по некоторому атрибуту в ячейку фильтра соответствующего столбца нужно ввести "!" (восклицательный знак).
Утилита Распознавание топо-символов
В отличии от утилиты Распознавание точечных символов, эта утилита работает не по векторным контурам символов, а по их растровым "пятнам". Это делает её малочуствительной к "прилипаниям" символов к посторонним объектам. Но, с её помощью сложнее распознавать символы с "плавающими" размерами и углами установки, отличающимися от заданного в шаблоне образца.
Так как утилита работает непосредственно по растру, в неё добавлена возможность распознавания символов не только на чёрно-белых, но и на серошкальных и цветных растрах. При этом, поисковые маски символов задаются точно так же как и прежде.
Утилита Создание буферных зон
Доработки в утилите позволяют создавать буферные зоны шириной, не зависящей от масштаба проекта. Максимально возможное значение ширины - 200мм бумаги (200м на картах 1:1000 и 20000м - на 1:100 000).