Вы здесь: Наш продукт Новые возможности Easy Trace Pro 9.7.2326

Easy Trace Pro 9.7.2326

Оглавление (обновлено 26.11.14)

Немного о версии 9.7
1. Создание проекта >>
2. Сборка растрового покрытия >>
3. Подготовка растров к векторизации >>
4. АвтоТрассировка и Трассировщики >>
5. Доводка результатов векторизации >>
6. Проверка данных и правка ошибок >>
7. Атрибутирование >>
8. Обмен данными (экспорт / импорт) >>

Немного о версии 9.7

Как правило, новые версии Easy Trace Pro появляются 2-3 раза в год. Эта версия – исключение, её мы готовили около года. То, что с рынком отечественной геоинформатики что-то не так, нам стало ясно ещё в конце 2013 года.

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

Так или иначе, но нам пришлось иметь дело с проектами, эффективное выполнение которых требовало значительного расширения возможностей пакета. Чем мы и занимались весь этот год.

Что стоит отметить в первую очередь? Безусловно, это набор инструментов, позволяющих быстро и наглядно «насаживать» любые картматериалы на ортофотопокрытие.

Во-первых, «насаживаемый» материал будет действительно прозрачен. Не прозрачен на 50%, а прозрачен АБСОЛЮТНО, кроме тех линий, что вам нужны, да ещё изображённых удобным контрастным цветом. Как можно без этого разглядеть смутные ориентиры на фото, я вообще не понимаю.

Во-вторых, любой изношенный материал легко раскраивается на лоскуты и пересобирается заново с опорой на ортофото.

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

Ещё одна «головная боль», оставшаяся позади – это выделение информации из цветных растров. Эти технологии сложились уже давно, это простые цепочки растровых операций, смысл каждой из которых вполне понятен и легко объясним. Вот только близок локоть, да не укусишь: знания, как именно каждая из операций должна изменить растр, появляются только с немалым опытом.

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

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

Поэтому, выделение «сырого вектора» – это всего лишь полпути к конечному результату. Понятно, что с этим вектором нужно сделать, и даже ясно, какими утилитами этого можно добиться. Но вот в какой последовательности их применить на конкретном материале? C какими параметрами? И как всё это влияет на объём финальной ручной доводки – самой трудоёмкой части любого процесса векторизации?

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

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

Но бывают материалы, где без участия человека делать просто нечего. Бешеное наслоение линий, символов, текста, хаотично перекрывающих друг-друга. Полустёртые линии и подписи, пунктиры, шаг и длина штрихов которых меняются в два раза на протяжении линии, многочисленные условные знаки «плавающих» размеров… Тут нужно что-то другое. Что-то вроде горного мотоцикла, упрямо лезущего вверх без всякой дороги и с грациозностью горного козла перелетающего с камня на камень. Что-то вроде инструмента выделения линий из вектора.

Крови этот инструмент выпил немало. Реализовать исконно русские принципы «пойди туда – не знаю куда» и «здесь играть, здесь не играть, здесь рыбу ели» было совсем не просто. Да, за руль, конечно, держаться надо, и смотреть, куда едешь, за вас тоже никто не будет, но вот всё остальное инструмент делает сам. И линии вынимает, и пристыковки и узлы делает, и форму оптимизирует, и все оформительские штрихи отшибает начисто.

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

Чтобы смысл доработок и изменений, произошедших в новой версии, стал более понятен, все новости «уложены» в порядке типичной цепочки операций цикла векторизации. От создания проекта до атрибутирования и экспорта результатов.

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


1. Создание проекта

Администрирование проекта

Коллективная работа над любым крупным проектом автоматически предполагает защиту информации и разграничение прав доступа. Защиту не от шпионов и вредителей, а от элементарного головотяпства.

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

Но есть одно «но». Занимаясь векторизацией, легко «сломать» то, что было сделано до тебя. Случайно стереть или как-то еще изменить подготовленные и проверенные на предыдущей стадии оцифровки данные. И, естественно, запустить по конвейеру волну ошибок. И никакие запреты тут не помогут. Изобретательность человека границ не знает.

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

Горячие клавиши

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

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

Удобных, по настоящему «горячих» клавиш на клавиатуре не так уж и много. Эти клавиши, которые левая рука находит сама - вслепую, повинуясь только спинному мозгу, не затрачивая ни одной лишней доли секунды. Естественно, что на этом пятачке команды на все случаи жизни не поместятся. Да и не надо. Если мы грамотно разделили работу на отдельные операции, каждая из них потребует совсем небольшого набора команд.

    Поэтому, в Easy Trace:

  • наборов «горячих клавиш» может быть несколько – каждый для своего вида работы;
  • текущую раскладку команд можно изменить, просто выбрав ранее подготовленный набор;
  • наборы «горячих клавиш» - это обычные файлы, которые можно хранить на личной флэшке.

Окно настройки горячих клавиш, как и большинство окон ET, имеет «подвал», где отображается подсказка о назначении каждой из доступных для горячих клавиш команд.

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

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

Ну и стоит ли добавлять, что через эти механизмы опыт одного квалифицированного оператора можно быстро и гарантированно «раздать» группе новичков – просто бери, пользуйся и не парься.

Пользовательские инструменты

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

Теперь инструменты пользователя можно создавать также и на основе трассировщиков «Поиск линий» и «Выделение областей на снимках». Кроме того, назначение «горячих клавиш» новым инструментам можно выполнять прямо при их создании – нет необходимости отдельно заглядывать в окно настройки «горячих клавиш».

Скриншот экрана

Я давно не видел проектов, у которых не «горят» сроки – возможно, их вообще не существует в природе. Все вопросы с заказчиком приходится выяснять прямо на ходу. А если учесть качество и степень «стандартизации» наших исходных материалов… В общем, как в той интермедии: “Здесь играть, здесь не играть, здесь рыбу ели”.

Поскольку лучше один раз увидеть, то все вопросы стоит задавать, имея копию экрана с проблемного места. Поэтому в инструмент "Обрезка растра по прямоугольнику", добавлено «пасхальное яйцо» - при нажатии  Ctrl + C выполняется скриншот экрана в пределах заданной инструментом области. Скриншот копируется в буфер обмена Windows.

Создать пустой проект

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

Сборка проекта

Проекты Easy Trace могут и должны переезжать с места на место. Оператор- надомник – это обычная реалия наших дней. И крайне обидно, открыв проект дома, увидеть сообщение, что все необходимые вам растры остались лежать на неком «Server», а пиктограммы инструментов и блоков остались на ПК, на котором был подготовлен этот проект.

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


2. Сборка растрового покрытия

Групповая привязка растров "Без коррекции"

Если мы имеем дело с несколькими привязанными растрами (GeoTiff-ы, пары растр + файл привязки), то групповая привязка сразу уложит растры по своим местам. Для сборки растровой мозаики останется только задать границы отображения растров в местах их взаимного перекрытия.

Совсем другое дело, если растровое покрытие предстоит собирать «с нуля», а растры не имеют реперов для их взаимной увязки, зато имеют разные углы наклона и самые разные виды деформаций. Таких примеров, увы, сколько угодно. Это и «древние» карты на марле, развалившиеся по местам перегибов, и лесоустроительные планшеты без малейших признаков их привязки к координатам, и даже «пятисотки»-заплатки в местах выполненных на предприятиях реконструкций.

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

Далее, как и в детской игрушке, нам предстоит найти положение и ориентацию каждого из фрагментов покрытия, ориентируясь на подстилающую подложку (ортофото, старое покрытие из «пятисоток», набор векторных границ и т.д.). Затем задать границы отображения для устранения перекрытий между смежными фрагментами, и, наконец, привязать каждый из фрагментов, создав наборы, состоящие из  пар точек «откуда – куда».

Разрезание растра (New!)

Однако жизнь была бы скучна, если бы время и люди не добавляли в неё разнообразия. Например, бессмысленно привязывать растр карты, развалившейся на части в местах перегибов. Ничего содержательного, кроме «фотографии» марлевой подложки, в таких местах нет. Так же бессмысленно «тянуть» растр, на котором запечатлена внушительная бумажная складка. Ещё глупее выглядит попытка «вытянуть» материал из изношенной карты, порезанной ножницами и СКЛЕЕННОЙ ВСТЫК в местах утраты материала на сгибах…

Такие растры надо резать. Удалять «лохмотья», вырезать растянутые участки, рассекать растры по линиям бумажных складок. Иными словами - выполнять длительную и нудную работу… Да и зачем? Всегда ведь можно сказать, что исходные материалы г…, и лучше они уже не станут.

Но выход есть! Представьте, что можно поверх карты нарисовать линии разрезов, рассечь карту одним махом, да ещё сразу отделить и выбросить вырезанные «лохмотья». Представили? Тогда встречайте – утилита Разрезание растров.

Итак, создаём векторный слой и рисуем на нём линии резки (можно использовать несколько векторных слоёв: например, слой с рамкой проекта + слой с линиями резки). По линиям автоматически строятся полигоны, по которым будет выполнена обрезка или рассечение растра. И вовсе необязательно, чтобы «препарируемый» растр был один - их может быть сколько угодно.

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

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

Если обрезаемые растры перекрывают друг- друга, указав на «нижний» растр левой клавишей можно заставить его «всплыть» для уточнения положения линий резки (аналогично Alt + LB при работе с мозаичным покрытием поля проекта).

Прямо на экране, правой клавишей мыши, можно указать области с «лохмотьям», подлежащими удалению (при этом автоматически изменяется максимальная площадь удаляемых «обрезков»).

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

Результат сборки покрытия - далее мозаика была объеденена в общий растр, который обрабатывался как одно целое.

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

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

Итак, после обрезки создаются новые растры, снабжённые масками отображения по границам их обрезки. Растры-«обрезки» площадью менее заданной автоматически удаляются. Исходные необрезанные растры могут быть так же удалены из проекта, если включить соответствующую опцию.

Для быстрой разрезки или обрезки «лишнего» с конкретного растра можно указать на растр правой кнопкой мыши при нажатой клавише Alt, и из выпавшего меню команд управления растрами, выбрать команду «разрезать».

Кроме того, линии резки (или обрезки) растра можно задать средствами утилиты без привлечения линий векторных слоёв проекта, то есть использовать опцию «Разрезать растр имя_растра линиями, заданными вручную». Однако следует помнить, что между вызовами утилиты такие линии не сохраняются и повторно вызвать утилиту и поправить линии резки уже не удастся.  

Настройки прозрачности растров

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

Но вот беда: профессионалов, способных и карты прочесть и устойчивые ориентиры на ортофото отыскать, практически не осталось. Так что привязка материалов выполняется очень даже «на глазок». Расхождения колоссальны. Качество создаваемых покрытий заведомо ущербное. Вот так.

Ни прозрачность наложенных на ортофото растров, ни «подвижные шторки» не дают удобного интерфейса для быстрого точного совмещения карт материалов с подосновой. Прозрачное наложение изначально мутных и потрепанных карт на ортофото сильно затрудняет их чтение. Подвижная «шторка» требует незаурядной зрительной памяти. А огромные расхождения между картографическими материалами и покрытием делают поиск ориентиров изматывающим занятием.

А теперь, представьте: добрый волшебник совершенно даром перенёс ваши потёртые карты на идеально прозрачную лавсановую плёнку. И теперь вместо мутных серых линий на пожелтевшей бумаге вы видите чёткие линии, причём не чёрные, а белые или жёлтые – а такие, как вам больше нравится. Вы накладываете плёнку на грязно-серое ортофото, и ориентиры сами бросаются в глаза.

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

И вот мы «посадили» на место мостик через речушку, но «уехала» водокачка. Фигня вопрос! Ещё одна булавка - и водокачка вернулась на место… А вот эту булавку мы выдернем –перекрёсток грунтовых дорог за прошедшие десятилетия явно сменил прописку…

Представили? Помечтали? А теперь встречайте новый режим прозрачного наложения и новый интерфейс утилиты коррекции растров. Я просто описал, как это в Easy Trace выглядит сейчас.

    Итак:
  • цветные и серошкальные растры можно отображать ПРОЗРАЧНО, аналогично отображению чёрно-белых растров. Всё, что темнее заданного вами  уровня, будет изображаться выбранным цветом, всё остальное станет прозрачным. Мы рекомендуем использовать белый или жёлтый цвета – они отлично смотрятся поверх ортофото;
  • если предыдущего режима вдруг недостаточно, можно использовать анимированную прозрачность. В отличие от «шторок», с её помощью, совпадения и расхождения становятся видны сразу по всему растру.

Это исходный растр. Он был рассечён вдоль многочисленных линий склейки его бумажной основы. Затем, растр был пересобран с ориентацией на схождение линий на смежных элементах мозаики. Положение каждого фрагмента при сборке подгонялось по соседям, фрагменты "доворачивались", а иногда, для компенсации складок, НЕЛИНЕЙНО растягивались

Тот же растр лежащий поверх ортофотоснимка. Порог отсечения прозрачности по уровню яркости равен 125. Всё более светлые области растра (с яркостью от 125 до 255) имеют прозрачность 100%. Тёмные линии, напротив, изображаются светло-серым цветом, который отчётливо виден на фоне снимка.

Контекстное меню обработки растров

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

Чтобы понять, зачем мы это сделали, представим себе процесс сборки (со щелями!!) исходной «простыни» из её сильно «пожеванных» обрывков

  1. Выложить все клочки карты на стол (см. групповая привязка растров "Без коррекции");
  2. Разложить клочки в примерном порядке (Сдвинуть);
  3. Разрезать дебильно склеенные фрагменты и отсечь «бахрому» на их краях (Разрезать растры);
  4. Ориентировать ключевые фрагменты по горизонтали и вертикали (Повернуть);
  5. Начать точную укладку смежных фрагментов (Сдвинуть – Повернуть - Сдвинуть);
  6. Выявить деформированные фрагменты, не позволяющие сложить мозаику, и определить характер их деформации;
  7. Трансформировать деформированные фрагменты (Масштабировать/Перепривязать) для их увязки с остальными фрагментами мозаики.
  8. Сшить все элементы мозаики в один растр (Объединить растры);
  9. Трансформировать объединённый растр по набору точек-ориентиров выявленных на подстилающей ортофото подложке (Перепривязать).

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

С деформированными участками сложнее: редко когда удаётся устранить искажения простыми растяжениями/сжатиями фрагмента, как правило требуется более сложная трансформация… Но это отдельная тема, о которой поговорим позже.

Вот только зачем все эти «танцы с бубном», если каждый из фрагментов карты можно просто привязать к подложке по отдельности? Например, к ортофото?

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

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

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

И ещё, от любой растровой команды можно отказаться простым нажатием Esc. Ну, если вы вдруг передумаете...

Обрезка  \ задание границ

Два и более отдельно отсканированных растровых фрагмента значительно проще подогнать друг к другу, если они не имеют перекрывающихся полей. Если растры строго прямоугольны – поля можно просто обрезать. А если нет? Как быть, если отдельные растры входят друг в друга как элементы пазла?

Тогда их надо обрезать и наложить маски, делающие «заграничные» части фрагментов прозрачными.

Вот и мы решили сделать так же – т. е. сразу и обрезать и наложить маску. А если обрезки много, то чтобы лишний раз не бегать по всяким меню, разрешили «ножницам» самим решать, какой именно из фрагментов следует обкорнать.

В общем, набросал фрагментов на рабочий стол, взял в руки ножницы и режешь, режешь, режешь…

Перемещение / масштабирование

Предположим, мне надо сложить два фрагмента растра. Я беру один из них, зажмуриваюсь (!!), перемещаю и оцениваю результат. Глупо, правда? А ведь так оно и было до недавних пор – вместо растра двигалась пустая рамка.

Теперь перенос и масштабирование растра выполняется «вживую». Причём растр отображается в соответствии со всеми своими настройками – отсечением по маске, прозрачностью и заданным цветом отображения.

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

Повернуть

Отображение результата поворота «на лету», причём с учётом маски, прозрачности и т.д. позволило кардинально изменить процесс сборки растра из кусочков. Вы просто берёте фрагмент и начинаете его «шевелить», подбирая как угол поворота, так и его новое положение. Одновременно.

Тот, кто хоть раз этим занимался – тот всё уже понял.

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

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

Временный переход в режим перемещения растра выполняется нажатием и удержанием Ctrl. В общем, подвинул – повернул – подвинул, и очередной фрагмент мозаики улёгся на своё место.

Привязка растров с коррекцией

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

Бывают, конечно, и более простые случаи. Например, когда существует опорная сеть точек-ориентиров. Эти векторные точки отлично видны поверх растра; задача сопоставления точек с ориентирами на растре – тривиальная, и интереса не представляет. Нас же интересует гораздо более увлекательная задача – самостоятельный поиск ориентиров-долгожителей (ведь картам не один десяток лет!), т. е. «посадка» растра на растр.

Сразу оговоримся, в Easy Trace «сажаемый» растр прозрачен, пластичен и «на лету» отображает все изменения, вносимые добавлением новых опорных точек. Так что говорить мы будем, прежде всего, об изменениях в интерфейсе, позволяющих легко и непринуждённо разыскать и «посадить» под сотню точек менее чем за час.

    Как это выглядит:
  • Цветной «сажаемый» растр прозрачен (!!!). Ну, то есть, СОВСЕМ прозрачен, везде, за исключением линий и символов, которым вы будете искать соответствие на ортофото или ином растре-подложке;
  • Вы можете свободно «парить» над растром, мгновенно взлетать на высоту «показать всё» и как коршун пикировать на приглянувшийся вам ориентир;
  • Каждая добавленная пара точек «откуда-куда» приводит к перестроению изображения. Вы сразу видите то, что получите в результате;
  • Изображение триангуляционной сети можно включать-выключать по вашему желанию. Без неё лучше видны ориентиры «с высоты птичьего полёта», с ней отлично видны большие треугольники, которые, возможно, стоит сделать помельче;
  • Двойным кликом вы можете «вколоть» точки-булавки и намертво закрепить уже «сидящие» ориентиры. Теперь они никуда не денутся, когда вы будете «двигать» их близких соседей;
  • Можно быстро «пробежаться» по всем расставленным точкам, убеждаясь в правильности выбора ориентиров. И тут же исправить положение или вовсе отказаться от ошибочно заданной точки коррекции;
  • Можно одним нажатием переключаться между изображениями «до» и «после» коррекции. Т.е. любое место можно мгновенно проверить на предмет: “А не стало ли хуже?”;
  • Пока нажата клавиша Shift или Ctrl, гаснет либо привязываемый растр, либо подложка. При прозрачном наложении растров это позволяет мгновенно понять, «что есть что» на экране;
  • Все введённые вами пары точек коррекции сохраняются. Причём не только как наборы точек для утилиты коррекции, но и как векторные объекты. Т.е., если в процессе векторизации вы обнаружите значительные расхождения, сразу станет ясна их причина – ошибочно заданная точка коррекции или, напротив, её отсутствие там, где она необходима;
  • Обнаружив расхождения, можно тут же перепривязать растр – изменения появятся только в окрестностях изменённой или добавленной точки коррекции;
  • Несколькими движениями можно перепривязать не только исходный растр, но и его «производные», т. е. выделенные из него чёрно-белые растры. И … продолжить оцифровку уже с учётом всех внесенных изменений;
  • Если какое-то место явно вызывает сомнения, ориентиров нет, можно создать только конечную (куда) точку, таким образом, пометив это место. Например, дороги явно не совпадают, но прямая дорога - это только «одна координата», где именно должна находиться точка «откуда», не ясно. Ставить наобум тоже нельзя, наверняка добавятся лишние искажения. И только после обработки «ближайшего окружения» можно поискать положение первой точки из пары «откуда-куда», которая вернёт дорогу на место, но не исказит, а то и улучшит совпадение её окрестностей.
  • Новая команда "Добавить граничные точки", добавляет 8 опорных точек за пределами растра, значительно улучшая качество триангуляционной сети, формируемой на границах. Нами эта опция используется всегда, и, возможно, скоро исчезнет как опция и станет частью механизма трансформации растров.

3. Подготовка растров к векторизации

Отдайте подготовку растров профессионалам!

Пользуясь случаем, хочу анонсировать новую услугу от нашей компании – подготовку растров к векторизации.

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

Тем не менее, от подготовки растра и предобработки первичного, «сырого» вектора зависит очень многое. Прежде всего – сколько времени вы потратите на весь проект. И это время может различаться в несколько раз.

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

Встроенные примеры подготовки и векторизации растров

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

Живые примеры технологий оцифровки можно найти в разделе "Каталог технологий ET" в меню "Справка". Следуя инструкциям можно повторить весь цикл действий любого из примеров даже в демо-режиме. Ряд примеров дополнен видеороликами. 


Эти видеоролики - живые примеры оцифровки, которые вы можете повторить сами

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

Рекомендуется просмотр в разрешении 720p или 1080p в полноэкранном режиме

Выделение границ полигонального покрытия. 2 мин.

https://www.youtube.com/watch?v=rVswPKfPmkI

Оцифровка горизонталей зашумлённого рельефа. 12 мин.

http://www.youtube.com/watch?v=TEFs_MFaOWc

Ресемплирование растра

Почему пользователи, в карманах которых лежат телефоны с 64 гигабайтами памяти, продолжают экономить на спичках и сканируют растры в 150-200 dpi, объяснить невозможно. Это просто надо принять к сведению и найти этому противоядие. «Здоровыми» после такого надругательства растры, конечно, не станут, но жить будут.

Действительно, как обрабатывать растр, если между соседними линиями просто нет свободного места? Ладно бы линии были излишне толстые – ну перетемнили при сканировании, с кем не бывают. Так ведь и сами линии имеют один, ну два пиксела в толщину!

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

Комбинированная обработка растров

Самой главной «фишкой» растровой обработки в Easy Trace, безусловно, является механизм комбинированной обработки растров. То есть вы сразу видите, что именно получите после выполнения все цепочки операций над исходным растром, и как влияет на результат изменение любого параметра любой операции.

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

Впрочем, мы советуем не ленится, и сразу после удачного выделения растра, закатать вот это всё в «Репозитарий стратегий», встроенный в инструмент. Для потомков.

Выделение тематических слоёв

При выделении тематических (“синих”, “красных”, “зелёных” и “чёрных”) слоёв из цветных растров топографических карт, как ни странно, самым проблемным является именно чёрный, а точнее серый цвет. Диапазон его яркости колеблется от светло серого (на белом фоне), до предельно чёрного (на синем). И если добавить к этому обыкновение JPEG-сжатия заменять чёрный цвет на тёмно-фиолетовый, то станет совсем весело. А про пожелтевшую от старости бумагу и сбитый баланс белого у сканера, я думаю, можно даже не заикаться.

Так вот. Теперь «серый» тематический слой выделять из цветного растра проще, так как задействованы оба «канальных» движка. Первый так и остался дистанцией в RGB пространстве, а второй определяет "серость" как значение насыщенности цвета в пространстве HSV.

Но, так или иначе, выделять «серый» тематический слой стоит только после выполнения Размытия (диффузии). А в тяжёлых случаях, ещё и предварительно поправив баланс белого Усилением контраста.

Страшно? А вот и нет! Просто собираем цепочку из трёх операций в оболочке «Комбинированной обработки растров» и шевелим ручками инструментов, отсеивая мусор.

Утоньшение растра

Итак, черно-белый растр выделен. Если вас интересуют только точечные объекты (что маловероятно), то на этом можно остановиться. А вот если нужны ещё и линии, то растр следует утоньшить. Вернее, не сам растр, а его копию.

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

    То есть «тонкий» растр делать надо. А раз так, то лучше это делать командой «Утоньшение», которая:

  • сделает копию исходного «толстого» растра под новым именем;
  • привяжет её к проекту так же как исходный растр;
  • выполнить утоньшение этого растра;
  • сделает этот растр текущим, для его дальнейшей обработки.

Вырезание подпроектов

Как это ни странно, но если раньше многие проекты мы резали на части, для ускорения работы, то теперь, напротив, объединяем. Скорость работы утилит выросла настолько, что основным «тормозом» на  первых стадиях работы стала клавиатура, руки и голова оператора. Лучше один раз выпить кофе пока работает Комбинированная обработка растров или Составной векторный инструмент, чем повторять одни и те же цепочки операций десяток раз.

А вот потом … Потом массив полученного «вектора» действительно можно разделить на части и раздать нескольким операторам. Да и то, если только работа над ним занимает более двух операторских смен.

И, тем не менее, собранное растрово-векторное покрытие можно легко порезать на части утилитой «Вырезание подпроектов». Хотя бы потому, что сшитое, согласованное и проверенное покрытие заказчик желает получить в виде отдельных номенклатурных листов (вот нафига?).

    Итак, что изменилось в утилите:
  • В списке растровых слоёв можно отметить только те, из которых следует делать выборку при формировании подпроектов. Например, совершенно незачем передавать операторам «тяжёлые» полноцветные исходные растры – им хватит и растров-обложек;
  • Если какие либо растры проекта недоступны, то вас предупредят об этом только один раз, а не при вырезании каждого очередного проекта;
  • Утилита больше не «замирает», наводя на нехорошие размышления. Да, большие растры режутся и пишутся долго, но это ещё не повод останавливать линейку прогресса;
  • Утилита стала работать надёжнее и быстрее, так как переписана полностью.

Удаление растра из проекта

Удаляя растровый слой из проекта, теперь можно не только разорвать связь между проектом и растром, но и физически удалить растр в несколько сотен мегабайт с диска. Конечно, если вы явно попросите сделать именно это. Тогда, вместе с растром будут удалены и все сопутствующие ему bak, log и ini файлы.

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

Кроме того, в последнее время мы работаем с проектами, состоящими из 10-15 растров. И каждый из них, наш заказчик считает отдельной единицей работы, ведь это не маленькие растры. Вот только мы собираем их в общее покрытие и векторизуем все сразу – программа это позволяет. Естественно, что после сборки покрытия в проекте остаются обломки, обрезки, да и сами исходные растры общим «весом» далеко за гигабайт. Так что проблема борьбы с «мусором» есть, а точнее, была, так как мы её уже решили


4. АвтоТрассировка и Трассировщики

Распознавание точечных символов

Ещё до начала трассировки, прямо по растру, можно распознать значительное количество точечных символов (условных знаков, символов текста и т.д.). Распознать, векторизовать и … стереть с растра! И этим, естественно, существенно облегчить работу трассировщикам на следующем этапе.

    Итак, в утилите Распознавание точечных символов:
  • Границы указываемых на экране образцов символов определяются точнее;
  • Если, удерживая Shift, указать курсором на образец символа на экране, то будет найден шаблон, наиболее похожий на указанный символ. Т. е. можно быстро выявить и исключить из поискового набора шаблон, дающие ложные опознания;
  • Любое изменение параметров утилиты или состава поисковых шаблонов немедленно отображается на экране, если включен режим Просмотр. Например, указав на поле коэффициента надежности опознавания поискового набора, вращая колесо мыши, можно легко подобрать его оптимальное значение. Просто оценивая результаты распознавания символов на экране.

Естественно, что распознавание выполняется на «толстом» чёрно-белом растре до его утоньшения. А вот уже после «стирания» распознанных символов растр следует утоньшить и передать на автоматическую или полуавтоматическую трассировку линий.

Автоматическая трассировка линий

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

Точность автоматической трассировки в этой версии программы заметно выросла – правда, ценой удвоения числа вершин в плотных линиях, создаваемых утилитой. Увеличение точности прокладки линий особенно заметно при обработке растров низкого разрешения в 150-200 dpi.

Увы, до сих пор находятся любители экономить на спичках. И, прежде всего, среди «держателей картографических фондов». Как вы потом будете продираться сквозь слипшиеся вместе объекты и восстанавливать утраченные линии, их абсолютно не волнует. Главное, сканирование идёт быстро, а растры не занимают «лишнего» места …

Увеличение плотности вершин на линиях на скорости обработки «вектора» никак не сказывается. По крайне мере, на глаз это незаметно.

Трассировщики

К сожалению, не всё можно векторизовать «автоматом», и тогда приходится «брать управление на себя». Это, конечно, не ручная «сколка», а очень даже полуавтомат, но управлять им всё равно придётся руками. И чем меньше движений это потребует, тем лучше. К лишним движениям, безусловно, можно отнести любые переключения режимов работы и переходы между инструментами.

    Поэтому:
  • Пока трассировщик не начал новую линию, ему доступны все «сквозные» команды – вытянуть или дотянуть и пристыковать линию, сшить разрыв несколькими способами и. т. д.;
  • Сменить режим трассировки кривых или мгновенно перейти к трассировке из инструментов-редакторов можно через «горячие клавиши». Доступны режимы: "Быстрое создание полигонов", "Авто" и  "Копирования участка линий". Кстати, при копировании участков можно пройти по цепочке связанных друг с другом линий без каких-либо дополнительных усилий;
  • Расширен диапазон скорости трассировки. Так как интеллекта у трассировщиков прибавилось, то и доверять им можно больше и, соответственно, смелее “нажимать на газ”;
  • При пристыковке трассы к существующей линии выполняется гладкое сопряжение, гарантирующие отсутствие излома линии на участке пристыковки;
  • Отсечение ложного или «грязного» участка на конце линии выполняется простым указанием точки, вплоть до которой следует укоротить линию. И всё. Никаких переключений между режимами или выхода в редактор.
  • Если трассировщик «забежал не туда» или заметался на «грязном» растре, нажатием правой клавиши останавливаем трассировку и левой клавишей указываем точку, до которой следует отсечь линию. Затем меняем направление трассировки или проходим «грязь» в ручном режиме.
  • Автоматическое отсечение доступно во всех инструментах-трассировщиках. Случайно отрезать линии “хвост по самые уши” не удастся – так можно отсекать не более половины её длины.
  • Быстрая обрезка конца линии наиболее удобна в режиме потоковой трассировки (режим Слежение за курсором). Здесь устранить последствия «дрогнувшей руки» можно буквально одним кликом мыши;
  • Режим копирования участков существующих линий стал доступен как для линий «замороженных» объектов, так и для линий, для которых заданы правила топологии "Игнорировать объекты";
  • Теперь копирование замкнутого контура стало даже проще, чем копирование участка линии. Указываете на линии первую точку, чуть далее ставите вторую, и … опять указываете первую. Всё. Если контур есть, он будет найден. Естественно, что строится всегда минимально возможный (кратчайший) контур.

Линейка

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


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

И, кстати, пикселы  условного растра «виртуальные» потому, что к одному проекту могут быть привязаны растры с разным DPI, а то и вообще космоснимки с «сантиметровым» или «полуметровым» разрешением.

То есть мерить надо. И толщину линий, и длину «шипов» на линиях, и даже длину линии вдоль линии.

Но вот что интересно, в утилитах ничего мерить не надо – указал образец на экране и все дела. А в трассировщиках - полуавтоматах всё по старинке. И всё почему? Автоматическая трассировка работает быстрее – ей и достаются все пряники.

    Итак, новые возможности «линейки»:
  • Новый, более удобный интерфейс; убрана масса мелких несуразностей;
  • Удерживая клавишу Shift, можно измерить протяжённость участка линии;
  • В многооконной конфигурации, в каждом окне можно использовать свою линейку. Перевод мыши из окна в окно меняет параметры линейки на панели, тем самым позволяя сравнивать разные объекты по величине.

Стратегии трассировки

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

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

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

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

Полуавтоматическая трассировка по растру

Встроенная в полуавтоматические трассировщики скелетизация теперь использует тот же алгоритм, что и утилита Трассировка линий, так что точность прокладки линий выросла. Снято ограничение на максимально возможные размеры растра, векторизуемого в «полуавтомате» - 10000х10000 уже не предел.

Трассировщик кривых

Если в ручной режиме трассировки зажать клавишу и потянуть мышь, то трассировщик перейдет в режим слежения за курсором. Он будет работать в этом режиме до отпускания клавиши мыши или до тех пор, пока линия не завершится, замкнувшись или пристыковавшись к какому-либо объекту.

Трассировщик точечных линий

Исправлено поведение трассировщика при пристыковке к существующим векторным линиям. Трассировщик перестал «перепрыгивать» через линии и теперь точнее определяет положение точек пристыковки.

Потоковый режим трассировки

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

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

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

Что это значит? Например, бежал-бежал трассировщик и влетел в непролазную грязь. Или вообще «дорога» кончилась…  Нажали, потянули, дотащили до «сухого» места, отпустили – и дальше сам, своими силами… Всё как в жизни!
Ну и начать линию можно будет прямо с пустого места или на нём же её и закончить.
А пока, сначала одно лишнее нажатие «горячей клавиши» - переход в ручной режим трассировки.

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

Автоматический переход из ручного режима трассировки в потоковый выполняется с небольшой задержкой (задаётся в параметрах трассировки). Это позволяет избежать случайной смены режима при излишне «твёрдых» нажатиях на клавиши мыши.

Потоковый режим трассировки с коррекцией по растру

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

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

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

Выделение областей на снимках

Трассировщик «Выделение областей на снимках» более не является одним из режимов Трассировщика кривых. Он стал отдельным полноценным инструментом. Алгоритм трассировщика переписан и скорость его работы выросла в три раза. Как и все трассировщики  «Выделение областей на снимках» имеет собственный набор параметров, позволяющий создавать различные стратегии выделения. Это даёт возможность быстро перенацеливать инструмент на выделение различных типов объектов.

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

    Изменено поведение трассировщика:
  • Добавление области к текущему контуру выполняется указанием левой клавишей при нажатой кнопке Shift;
  • Команда Undo выполняет сброс текущего контура;
  • Изменены курсоры инструмента;
  • Более чётко срабатывает механизм зачистки каверн вдоль линии контура
  • Сохранение текущих параметров выделения выполняется явно, по запросу пользователя, через выпадающее по нажатию правой клавиши меню.

5. Доводка результатов автовекторизации

Что такое Автовекторизация в Easy Trace PRO?

Наша трактовка термина «Автовекторизация» кардинально отличается от общепринятой. Мы считаем, что сегодня (а кто точно знает, что будет завтра?) полностью автоматическая векторизация применима только к очень узкому перечню материалов. Да и в этих редких случаях вряд ли удастся обойтись без ручной доводки результатов.

Так как Easy Trace предназначен для нужд геоинформатики, он не рассчитан на создание векторных данных, просто «похожих» на исходный растровый материал. Его назначение – извлечение из растра полноценных векторных объектов, топологически корректно связанных друг с другом, распределённых по отдельным слоям и снабжённых атрибутивными характеристиками. Причём, значительная доля таких объектов изначально вообще отсутствует на исходном материале и возникает только в процессе его векторизации.

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

Три этапа доводки результатов автовекторизации

Доводку векторных данных-результатов автовекторизации можно довольно чётко разделить на три этапа:

  • Массовая предварительная обработка данных. Выполняется утилитами. Сюда входит сшивка разрывов, все виды удаления «мусора», распознавание объектов определённого вида, коррекция связей между векторными примитивами.
  • Ручная коррекция векторных примитивов. Это удаление остатков «мусора», правка ложных и восстановление корректных связей, правка грубых искажений формы линий, доводка результатов автораспознавания.
  • Массовая окончательная обработка данных. Она тоже выполняется утилитами. Это оптимизация формы линий, построение недостающих и производных объектов. Например: коррекция тальвегов, построение недостающих горизонталей в местах их сгущений, оконтуривание групп объектов, построение буферных зон, оптимизация формы топологически связанных объектов и т. д..

Естественно, что это разделение – не догма. Всё определяется исходным материалом и характером решаемой задачи. Тем не менее, далее описание изменений в утилитах и инструментах будет идти именно в этом порядке.

Этап 1. Массовая предварительная обработка

Автовекторизация: Составной инструмент

Итак, растр векторизован и получен «сырой», он же «плотный», векторный материал. Любая точка сопряжения трёх и более линий – это узел. Сами линии содержат огромное количество вершин, их плотность равна исходной или удвоенной плотности точек на исходном растре.

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

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

Ранее это выполнялось с помощью последовательного запуска ряда специализированных утилит. Даже при обработке однотипных материалов всю серию запусков следовало выполнить для каждого из его листов. Теперь это не так.

Окно комбинированного инструмента векторной обработки

Серия запусков утилит оформляется в набор команд «Составного векторного инструмента».
“И это всё?” – скажете вы, и будете неправы. Это ОЧЕНЬ много. И вот почему:

  • Обработка «сырого» вектора утилитами – это единицы процентов от полного времени цикла векторизации, но это и десятки тысяч изменений, вносимых в материал. Попробуйте сделать то же самое руками;
  • От того, насколько качественно будет вычищен утилитами «вектор», зависит длительность самой продолжительной части цикла автовекторизации – ручной коррекции результатов. И разница в длительности может составлять вовсе не проценты, а очень даже РАЗЫ.
  • Подобрать с первого раза оптимальные параметры в цепочке утилит при коррекции новых материалов не удаётся даже нам. Не смотря на весь наш опыт. И это нормально.
  • Просчёты в подборе параметров утилит, выполненных на предыдущих шагах, видны невооружённым глазом. Причём, видны даже новичкам. Это оставшиеся несшитыми разрывы, прилипший к линиям мусор, исчезнувшие значимые фрагменты линий и т.д.
    Очевидно, что процесс надо «откатить» назад и уточнить параметры утилит, запускавшихся ранее. А то и добавить между ними пару операций, … но влом.
    Несколько раз повторять одни и те же действия мы не любим. И так сойдёт.
  • Поэтому, чтобы не повторять одно и то же, цепочка вызовов утилит с заданными наборами параметров (стратегиями) сразу заносится в Составной векторный инструмент. И запускается двумя кликами мыши.

Итак:

    • Выполняем утилиты поштучно, подбирая их параметры указанием образцов на экране. Параметры сохраняем как стратегии утилит. Укладываем стопочку утилит и стратегий в оболочку Составного инструмента. Ищем на поле проекта необработанные дефекты. Правим стратегии. Откатываем всю цепочку операций через Undo. Запускаем составной инструмент и смотрим кино.
    • Повторяем процесс столько раз, сколько необходимо для его отладки. А затем, столько раз, сколько растровых листов вам необходимо обработать.
    • Даже если вы обрабатываете всего один лист, «обкатка» процесса поможет вам избавиться от нескольких лишних часов ручной доводки материала.

И прежде чем окунуться в ручную правку «вектора», где всё ясно и понятно, подумайте ещё раз – а всё ли, что можно было сделать, сделано утилитами? Право, оно того стоит!

Точки восстановления:

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

Сейчас для точки восстановления можно задать не только вразумительное имя, но и дополнительное описание состояния проекта на момент её создания. И, соответственно, просматривая имеющиеся точки, можно легко выбрать именно ту, которая вам нужна.

111

Но следует помнить, что «Точки восстановления» хранят только копии проекта и векторных данных. Если вы собираетесь изменить или физически удалить растр, то это уже навсегда.

Отрисовка исходных линий в утилитах

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

111

Если же напротив, хочется увидеть только конечный результат, то исходные линии можно изобразить цветом векторизуемых растровых линий – чёрный, серый, синим и т.д.

Утилита Сшивка разрывов

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

Сначала мы рекомендуем сшить очевидные, не вызывающие никаких сомнений, разрывы. Такие разрывы обычно коротки, и концы образующих их линий хорошо «смотрят» друг на друга. Затем следует зачистить «вектор» от мусора утилитами Фильтрация линий и Фильтрация связанного мусора и … выполнить ещё пару сшивок!

Для изолиний рельефа, это могут быть «длинная сшивка» (большая дистанция и углы схождения линий не менее 120-150 градусов) и «короткая сшивка» (дистанция маленькая, но углы схождений вплоть до отрицательных – например, для сшивки разрывов горизонталей на тальвегах).

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

Настраивается утилита сшивки так:

  1. Выбираем сшиваемый слой, сбрасываем «Радиус поиска продолжения» в минимум, а «Угол схождения линий» в максимум и нажимаем «Просмотр». Т. е. разрешаем утилите посмотреть,  много ли на слое минимальных разрывов, концы линий которых идеально «смотрят друг на друга». Как правило, таких разрывов нет;
  2. Выбираем образец разрыва и указываем по очереди на оба его конца. Концы линий подсвечиваются, между ними появляется связь, параметры утилиты изменяются, и на экране отображаются все сшивки, похожие на образец или «лучшие», чем он;
  3. Продолжаем добавлять образцы, оцениваем результат и, наконец, нажимаем «Применить»;
  4. Нажатием правой клавиши можно отказаться от завершения выбора образца, если указан только первый из концов линий;
  5. Если используются опция «Линии длиной меньше:», то эту длину можно задать, указав на образец отрезка правой клавишей мыши.

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

Утилита Распознавание форм рельефа

В картографии существует масса условных обозначений, изобилующих деталями. Одно из них, обрывы - постоянная головная боль при оцифровке. Вроде и простой объект, а попробуй его распознай, если на растре у него и «ножки» отваливаются и к «спине» что ни попадя прилипает…

И, тем не менее, такая утилита появилась. Она и «ножки» в мусор отправляет и кромку обрыва выделяет и выравнивает, и по образцам на экране учиться умеет. Пользуйтесь.


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

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

Так вот, на большинстве векторизуемых материалов текст выглядит очень похоже. А то и хуже. Поэтому, распознавать буквы и цифры как текст и числа, мы пока не планируем – себе дороже. А вот отделить их от линий как-то надо. Для этого и служит утилита Фильтрация связанного мусора.

В этой версии изменён интерфейс утилиты и способы вычленения «мусора» из векторных данных. Изменение параметров выделения мгновенно отражается на счётчике распознанных конгломератов. Сами конгломераты распознаются точнее, даже если они имеют связи с фрагментами линий векторных объектов.

111


Утилита Фильтрация линий

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

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

Функция коррекции Т-развилки переписана полностью. Теперь учитывается кривизна «шляпки» и точнее определяется положение точки пристыковки «ножки» Т-развилки.

Кроме того,  пересмотрено влияние зон недостоверности формы линий в местах сопряжений в зависимости от толщины исходных растровых линий векторизуемого материала.

Ну, а если коротко, то ручной работы после применения утилиты стало заметно меньше.

111 


Этап 2. Ручная коррекция

Инспектор

Роль «Инспектора» переоценить трудно. Он и пропустить ни один участок карты не позволит и «топтаться на месте» не даст. А значит, сбережёт ваше время и нервы.

В этой версии изменён способ задания величины перекрытия между смежными кадрами просмотра и значения параметров Инспектора по умолчанию.

Трассировщик «Поиск линий»

Это инструмент применим как на первом, так и на втором этапах коррекции. С одной стороны, чем меньше изменений внесено в исходный «сырой» вектор, тем проще прослеживать векторные линии. А ну как на первом этапе не то удалили, да не там «пришили»? Утилиты – они такие: 100% не гарантируют…

С другой стороны, выделяя линию, нужно грамотно разобраться со всеми её пересечениями и примыканиями. А это – задача ещё та: тут трассировщик и сам ошибиться может. Так что к инструменту привычка нужна. Но оно того стоит. Чем, как не поиском линий, «выдёргивать» ключевые, содержательные элементы из клубков одноцветных линий? Из всех этих обрывов, откосов, скальных выходов и заштрихованных областей?

Инструмент сложный, «мозгов» в него встроено много, и крови (разработчиков) он выпил немало. И вот что в нём изменилось:

  • Переработан механизм поиска продолжений в местах разрывов линий. Трассировщик стал отлично бегать по пунктирам;
  • Трассировщик автоматически переносит точку пристыковки при столкновении с линиями исходного слоя. Т. е. фактически выполняет Т- и Y- коррекции аналогично утилите Фильтрация линий. Это связано с тем, после утоньшения растровых линий толщиной 4 и более пикселов, узловая точка смещается ВСЕГДА и ВСЕГДА требует коррекции своего положения;
  • Теперь, как и трассировщики по растру, «Выделение линий» может выполнять прослеживание линии в обе стороны от указанной точки;
  • Трассировщик дополнен возможностью не только игнорировать шипы (например, при прослеживании кромки обрыва), но и удалять их в процессе прослеживания;
  • Если первая точка линии задана в ручном режиме, то указание второй точки однозначно определяет направление дальнейшего прослеживания;
  • Параметр стратегии «Толщина линий» позволяет учитывать размеры зон недостоверности в скелетах растровых линий, из-за которых смещается положение узловых точек. И, соответственно, корректировать форму векторных линий в местах их примыканий и развилок;
  • Можно начинать и заканчивать линию «в пустоте», без специального перехода в ручной режим трассировки;
  • Как и во всех остальных трассировщиках, одним кликом можно укоротить убежавшую «не туда» трассу. При этом исходные векторные линии на «укороченном» участке не пострадают;
  • Панель управления инструментом приобрела вид, аналогичный панелям привычных растровых трассировщиков. Так что, переходя от трассировки по растру к трассировке по вектору, особой разницы вы не заметите.

Векторная стерка

Стёрка в режиме удаления («красная стёрка») научилась сшивать псевдоузлы, возникающие при удалении одной из 3 входящих в узел 3й степени линий. Т. е., после удаления «шипа», две оставшиеся линии автоматически объединятся в одно целое.

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

И кстати, теперь удалить стёркой векторный объект можно, только если он целиком виден на экране. А то мало ли что…

«Синяя стёрка» обновила встроенный алгоритм разрезания линий и избавилась от ошибки, связанной с принудительным удалением точки, ранее замыкавшей разрезаемый контур.

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

К нам попали материалы дистанционного лазерного зондирования. Уже предварительно обработанные и записанные в виде растра, окрашенного по принципу «чем выше – тем светлее». Это была городская застройка – силуэты крыш домов на фоне земли.

Плотность облака точек была достаточно высока и серия операций «Отсечение по яркости + Размытие + Усиление резкости + Бинаризация» превратила их в контрастные изображения крыш строений. Далее «Оконтуривание + Распознавание ортообъектов» дало вполне приличный векторный материал.

Вполне приличный, но с небольшим «но». Если игнорировать мелкие рёбра, то можно потерять выступы на зданиях, крылечки и тому подобное. Если не игнорировать – силуэты верхушек деревьев давали лишние выступы и уступы на длинных стенах зданий.

Т. е. материал всё-таки надо было доводить. А раз так, то удалять и стирать гораздо проще, чем дорисовывать и править. Вот только надо было удалять мелкие рёбра и выступы, СОХРАНЯЯ ОРТОГОНАЛЬНОСТЬ контуров. А такого инструмента у нас не было…

Так вот. В этом режиме «стёрка» удаляет не вершины линии, а рёбра. Или сразу несколько рёбер образующих уступ или выступ. Причём удаляет, РАЗБРАСЫВАЯ ошибку сопряжения элементов контура пропорционально длине (а значит и достоверности!) смежных рёбер.

После этой доработки зачистка орто-контуров превратилась в необременительное и где-то даже увлекательное занятие.

Сквозные команды редактирования

Это команды, выполняющиеся независимо от того, какой инструмент вы «держите в руках». Для  их выполнения не надо делать никаких дополнительных действий, их надо просто … выполнить.

Напомним, что для любого выбранного (текущего) объекта это команды:

  • Удалить (Tab или Del);
  • Циклически изменять текущий векторный слой и переносить объект на него (S);

(далее следуют команды, применимые только к полилиниям)

  • Развернуть порядок следования вершин (X);
  • Замкнуть линию по дуге (D);
  • Замкнуть линию по прямой (Shift+D);
  • Сшить два смежных полигона (Double click);
  • Сшить два ближайших конца полилиний по кривой (Double click);
  • Соединить два ближайших конца полилиний по прямой (Shift+Double click);
  • Сшить … по дуге, но через точку, указанную курсором (Alt+Double click);
  • Дотянуть конец линии до курсора или до линии, лежащей между ними. Дотягивание выполняется по направлению к курсору! (Double click или B);
  • Вытянуть конец линии до курсора или до линии, лежащей между концом и курсором.
    Линия вытягивается в направлении заданным её концом (Shift+B);

(далее команды для полилиний – горизонталей рельефа)

  • Достроить пропущенный участок горизонтали эквидистантно:
    •  между концами горизонталей;
    •  горизонталью и барьером;
    •  между барьерами.

Участок может достраиваться в пределах трёх экранов от точки клика. То есть его начало и конец могут располагаться где-то «за горизонтом» (Ctrl+Double click);

  • Достроить горизонталь эквидистантно до позиции курсора или построить отрезок горизонтали от барьера до курсора. Клик выполняется между двумя горизонталями (Ctrl+ Shift+Double click).

Как видите, команд много - одних сшивок 8 штук! Добавлялись и становились «сквозными» они в разное время, поэтому здесь они перечислены полностью.

Топологический редактор

Если Векторная стёрка предназначена для зачистки результатов автовекторизации от «мусора», то Топологический редактор – это основной инструмент коррекции формы, положения и взаимосвязей векторных примитивов. Т. е. инструмент это универсальный, делал многое, а теперь делает ещё больше:

  • В режиме «стягивания» вершин, подтянутые друг к другу концы полилиний автоматически сшиваются – при условии, если слой, атрибуты и  Z-значения полилиний совпадают. То же самое происходит при поглощении редактором «шипов» на исходном векторном материале;
  • В инструмент добавлена защита от образования «усов» - т. е. участки полилиний, пройденные дважды, автоматически исключаются из редактируемых полилиний;
  • При «хождении по ошибкам», объект-пометка автоматически удаляется первым же прикосновением редактора, т. е. не требуется никаких специальных действий для её удаления;
  • Аналогично Редактору примитивов, Топологический редактор приобрёл способность правой кнопкой мыши удалять узлы, общие вершины и отдельные точки полилиний;
  • В редактор добавлена возможность автоматического зума (автоприближения), аналогичного встроенному в инструменты Точка и Трассировщик ломаных. Авто-зум активируется нажатием нажатию клавиши Caps Lock. Режим удобен для быстрой правки материала при его просмотре с «высоты птичьего полёта»;
  • И наконец, в редактор добавлен режим, ориентированный на доводку выделенных утилитой распознавания ортогональных объектов. В этом режиме редактор может как перемещать, так и удалять рёбра и вершины, сохраняя ортогональность редактируемых контуров.

    Кроме того, двойным кликом можно «схлопывать» ступеньки и «сшивать» взаимно ортогональные рёбра  полилиний. Причём «схлопывание» ступеньки перемещает объединённое ребро пропорционально длинам примыкавших к ступеньке участков полилиний. Так как ступеньки возникают из-за наклона отдельных рёбер, такой механизм коррекции автоматически возвращает ребро «на своё место»;

Корректор

Расширен состав выполняемых инструментом операций. Добавлена возможность удаления коротких отрезков полилиний (штрихов) одним кликом инструмента.

Добавлена коррекция Т-примыканий, аналогичная встроенной в утилиту Фильтрация линий. Причём, в сомнительных ситуациях, можно прямо указать какую из полилиний вы считаете «ножкой» T-пристыковки.

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

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

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

Прервать начатую операцию теперь можно как по Esc, так и через Undo.

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

Перемещение / Копирование объектов

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

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

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

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


Этап 3. Доводка результатов

Утилита фиксации углов

Изображения объектов, созданных руками человека, изобилуют углами, перегибами и уступами, сочетающимися с участками плавных кривых. Изображение городского газона рядом с поворотом от дороги к вашему дому – отличный тому пример. Контур газона содержит и плавную кривую, и отрезки прямых, и чёткие углы в местах примыкания газона к тротуару. Оптимизация такого контура ломаными исказит кривую, оптимизация кривыми «завалит» углы. И что делать, если таких объектов в проекте сотни, а то и тысячи?

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

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

  • Создаём дубликат исходного векторного слоя и оптимизируем его ломаными линиями. На искажения их криволинейных участков внимания не обращаем:  главное – чётко подчеркнуть необходимые нам углы;
  • Передаём утилите оба векторных слоя (исходный и оптимизированный ломанными) и, в режиме просмотра, подбираем параметры утилиты джойстиком и «помечаем» фиксируемые углы. Естественно, стараясь не задевать криволинейные участки линий;
  • Применяем утилиту. Точки резких перегибов сопряжённые с прямолинейными участками фиксируются на исходном векторном слое, как если бы их «прокололи» вручную. Теперь, слой можно передать утилите оптимизации формы.

Безусловно, такой подход 100% «попаданий в яблочко» не гарантирует, но время финальной доводки формы линий может сократиться в разы.

Утилита Оптимизацию формы линий

И только тогда, когда для доводки исходного «плотного» вектора сделано всё, что можно, в дело вступает утилита Оптимизации формы линий. И эта утилита изменилась кардинально. Как внешне, так и внутренне. Смотрите сами:

111

  • Появился режим предварительного просмотра результатов оптимизации. После нажатия «Применить», вы получите именно то, что видите;
  • Так как в применяемых алгоритмах оптимизации форма линий, в основном, зависит от двух параметров, то дана возможность подбирать оба эти параметра СРАЗУ. Т. е. вместе.
    И для этого введён новый орган управление – джойстик. Ранее я его встречал только в программах обработки звукозаписей. Там результат оценивался «на слух», здесь «на глаз», так что, полагаю, это нововведение оправданно;
  • Для обеспечения возможности визуальной оценки результатов оптимизации «на лету», сразу после перемещения джойстика, доработаны алгоритмы утилиты. Скорость её работы выросла, как минимум, вдвое;
  • Для удобства сравнения результатов, цвета отображения «было» и «стало» задаются по вашему усмотрению;
  • Для оптимизации кривых с принудительной фиксацией точек изломов введены дополнительные параметры;
  • Утилита снабжена «подвалом» с подсказками для всех элементов управления.

И последнее по порядку, но одно из первых по важности – алгоритм оптимизации формы извилистых кривых научился работать с фильтром переменной длины! Звучит заумно, хотя смысл новации очень прост.

Фильтр, он же «утюг», проглаживающий линии, ранее всегда выбирался исходя из компромисса между выравниванием на гладких участках и «подрезанием» резких перегибов линий. Если длинный фильтр хорошо зачищает участки линий, изображённые плавными кривыми, то он неизбежно «подрежет» вершины перегибов на извилистых участках. Короткий фильтр убережёт перегибы, но оставит много ручной работы по «зачистке» гладких участков линий…

В новой версии фильтра его длина автоматически укорачивается по мере приближения к вершинам резких перегибов линий, исключая их «подрезку». Так что теперь можно смело использовать длинные фильтры, начисто вычищающие случайный мусор, «прилипший» к линиям. А, значит, тратить значительно меньше времени на финальную доводку формы линий!

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

Одним из частых требований, встречающихся в ТЗ на создание ГИС, является непрерывность горизонталей. Т. е. все утолщённые и основные горизонтали должны быть либо замкнуты, либо примыкать к элементам рельефа и рамке.

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

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

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

В редактор примитивов ET 9.7 был добавлен специальный режим «Эквидистантная сшивка», активируемый модификаторами Ctrl + Shift. Но и он не спасает, если отсутствует не одна, а пучок из 2-3 горизонталей… 

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

Кроме того, утилита находит и помечает ошибки типа «спираль» и отмечает на рамке и элементах рельефа участки с пропущенными горизонталями.

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

Интерфейс утилиты полностью переработан. Теперь она может обрабатывать как «плотные» горизонтали, созданные утилитой «Трассировка линий», так и использоваться для доводки ранее созданных материалов с гладкими линиями.

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

Утилита пока не обеспечивает прокладку 100% линий сразу, но доводка легко выполняется за 2-3 итерации с помощью добавления коротких отрезков-подсказок.

Неоптимизированные горизонтали до обработки утилитой …
111

… и после. Итого: 275 сшивок на фрагменте материала в 1/20 листа топокарты 1:50000
111


Утилита Коррекция формы тальвегов

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

  • Изменён способ формирования кривых корректируемых тальвегов. В подавляющем большинстве случаев скорректированные участки горизонталей выглядят как результат аккуратного «сдвига» их исходных изображений;
  • Изменены границы условий выполнения коррекции; теперь даже сдвиг тальвега на доли пиксела растра может являться основанием для коррекции;
  • В режиме «Просмотр» можно сравнить исходное и скорректированное изображение кривой тальвега и при желании отказаться от коррекции (что бывает крайне редко);
  • Добавлена возможность подмены цветов изображающих исходные и скорректированные участки горизонталей. В сочетании с «гашением» отображения горизонталей с помощью видеорежима «Объекты без атрибутов» это значительно облегчает оценку формы кривых в местах предлагаемых изменений;
  • Изменение параметра «Точность аппроксимации» в режиме просмотра немедленно отражается на форме корректируемых участков горизонталей, что позволяет быстро подобрать их оптимальную форму;
  • Параметр «Полоса обработки» не только управляет захватом особенно сильно «выпавших» тальвегов, но и влияет на форму корректируемых участков горизонталей. Это позволяет добиться максимального соответствия формы (но не положения!) исходных и скорректированных участков кривых;
  • Просматривая предлагаемые коррекции с помощью клавиш «F/V», вы можете отказаться от отдельных коррекций. Нажатием правой клавишей мыши, текущая предлагаемая коррекция будет заблокирована, а горизонталь в точке тальвега отмечена пометкой ошибки. Это позволит мгновенно разыскать отмеченное место для последующей ручной коррекции формы горизонтали;

111

Создание буферных зон

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

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

Свойства проекта и Менеджер слоёв

Многие выполненные нами проекты содержали десятки, а то и сотни векторных слоёв. Почему их было так много – это вопрос к заказчикам. «Расслаивать» такой материал крайне неудобно, так как выбор нужного слоя занимает заметное время. Частично эта проблема решается настройкой пользовательских инструментов – он сами помещают создаваемые объекты на требуемый слой.

Оптимальное решение этой задачи – это кардинальное сокращение числа доступных для выбора слоёв. Для этого добавлена новая опция "Скрывать слои, входящие в свернутые группы в менеджере слоев". Т. е., вы просто сворачиваете не используемые в данный момент группы, и входящие в них векторные слои исчезают из списка. Естественно, что это никак не отражается на видимости «включённых» слоёв.

Это только часть новых возможностей 9.7. К "сожалению", нововедений настолько много, что оставшаяся часть описания будет готова только в ближайшие несколько дней. Оставайтесь на связи!

Подробнее в этой категории: « Prev Next »