Новшества в Easy Trace Pro 9.6.2170: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Строка 208: Строка 208:


=== Утилита Преобразование классификатора (NEW!) ===
=== Утилита Преобразование классификатора (NEW!) ===


Отсутствие каких-либо официальных стандартов на форматы данных электронной картографии в России очень часто приводит к новому витку "освоения" средств, связанному с переходом на очередную, теперь уже, безусловно, "правильную" геоинформационную систему. При этом ранее созданные векторные данные нередко идут "под нож", и вся оцифровка опять начинается с нуля.
Отсутствие каких-либо официальных стандартов на форматы данных электронной картографии в России очень часто приводит к новому витку "освоения" средств, связанному с переходом на очередную, теперь уже, безусловно, "правильную" геоинформационную систему. При этом ранее созданные векторные данные нередко идут "под нож", и вся оцифровка опять начинается с нуля.
Строка 237: Строка 236:
[[Файл:Et2170 TransformClassifier.gif]]
[[Файл:Et2170 TransformClassifier.gif]]


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


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


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


[[Файл:Et2170 ChecupCorrectCommunication.gif]]
[[Файл:Et2170 ChecupCorrectCommunication.gif]]


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

Версия от 19:11, 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 уже довольно давно. Но только теперь можно видеть текущую "резиновую линию" или след автотрассировки синхронно сразу во всех открытых окнах. Ранее, надо было либо "скакать" по окнам для отслеживания совпадения, либо мириться с некоторым запаздыванием появления линии в дополнительных (не текущих) окнах.

Et2170 Imagery 4x.gif

Режим прозрачности растров

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

Et2170 Transparency new.gif

Et2170 Transparency old.gif

Потоковый режим трассировки (доработка)

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

Пример работы инструмента в этом режиме можно увидеть в этом видеоролике.

Оцифровка полигональных покрытий

Утилита Фильтрация связного мусора (NEW!)

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

• выделение, чистка и, возможно, оскелечивание тематического растра;

• векторизация растра, чистка, сшивка и доводка векторных элементов;

• сборка, правка формы, классификация и атрибутирование векторных объектов.

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

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

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

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

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

Et2170 Color.gif

Et2170 Color1.gif

Et2170 Thick.gif

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

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

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

Et2170 FilteringConnectedTrash.gif


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

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

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

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

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

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

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

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

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

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

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

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

Et2170 AutodetectPoints.gif

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

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

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

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

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

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

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

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

Et2170 tl compound.gif

Оцифровка рельефа

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

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

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

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

Et2170 ProcessingContourClumps.gif

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

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

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

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

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

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

Et2170 LineWidthRecovery.gif

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

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

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

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

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

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

Et2170 ElevationAssigment3DLines.gif

Оцифровка "пятисоток"

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

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

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

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

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

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

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

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

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

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

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

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

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

Et2170 TransformClassifier.gif

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

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

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

Принцип работы утилиты следующий:

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

Et2170 ChecupCorrectCommunication.gif

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

Дешифрирование космоснимков

Всё остальное